Skip to content

Latest commit

 

History

54 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ESP-Hosted Firmware

Pre-built ESP-Hosted co-processor firmware binaries for use with ESPHome's ESP32 Hosted component.

For full documentation, see the ESP32 Hosted Update page.

ESP-NOW support

These binaries are the stock ESP-Hosted slave plus a small overlay that adds ESP-NOW to the host↔co-processor link. Upstream ESP-Hosted proxies esp_wifi.h but not esp_now.h (Espressif tracking issue esp-hosted-mcu#19), so a radio-less host such as the ESP32-P4 cannot use ESP-NOW through the co-processor out of the box. The overlay bridges the native esp_now_* API over ESP-Hosted's CustomRpc channel, letting ESPHome's espnow component run unmodified on a hosted host. It was validated on real hardware (ESP32-P4 + ESP32-C6) on 2026-07-20.

The overlay lives in slave-overlay/. On ESP-Hosted 2.x it is injected into each CI build by apply-overlay.sh and only applies to ≥ 2.8.1 (when the CustomRpc "peer data transfer" channel was added); older versions build as the unmodified stock slave. On ESP-Hosted 3.x the directory is a complete ESP-IDF component and is copied straight into the project's components/.

Wire-protocol coupling. slave-overlay/esp_now_hosted_rpc.h is the on-the-wire contract and must stay byte-identical to the copy the ESPHome host shim (the esp_now_hosted half of the esp32_hosted component) uses. If the protocol changes, update both copies together.

Supported Targets

Only targets supporting SDIO transport are built:

Target SDIO Status
ESP32 Yes Built
ESP32-C5 Yes Built
ESP32-C6 Yes Built
ESP32-C61 Yes Built

Usage

Pre-built firmware binaries and manifests are available at esphome.github.io/esp-hosted-firmware.

HTTP Mode (Recommended)

Automatically fetch and update firmware from the manifest:

http_request:

update:
  - platform: esp32_hosted
    type: http
    source: https://esphome.github.io/esp-hosted-firmware/manifest/esp32c6.json
    update_interval: 6h

Embedded Mode

Embed the firmware binary into your device's flash:

  1. Download the firmware binary from the GitHub Page
  2. Place the .bin file in your ESPHome configuration directory
  3. Generate the SHA256 hash (see below)
  4. Configure the update component:
update:
  - platform: esp32_hosted
    type: embedded
    path: network_adapter_esp32c6.bin
    sha256: de2f256064a0af797747c2b97505dc0b9f3df0de4f489eac731c23ae9ca9cc31

Building Custom Firmware

To build firmware locally, you'll need to set up the ESP-IDF environment. Use the ESP-IDF release that ESPHome recommends for the host, which is what CI builds with:

# Clone and setup ESP-IDF
git clone -b vx.y.z --recursive https://github.com/espressif/esp-idf.git
cd esp-idf
./install.sh esp32c6  # or your target
source export.sh      # for Linux/macOS
export.bat            # for Windows
cd ..

# Create project from ESP-Hosted example
idf.py create-project-from-example "espressif/esp_hosted==2.9.3:slave"

# Inject the ESP-NOW overlay (no-op on ESP-Hosted < 2.8.1)
./apply-overlay.sh slave

cd slave/

# Build for your target
idf.py set-target esp32c6  # or your target
idf.py build

# Output: build/network_adapter.bin

To build the stock slave without ESP-NOW, simply skip the apply-overlay.sh step.

For ESP-Hosted 3.x there is no slave example. The equivalent Wi-Fi + BT (VHCI) co-processor project is bluetooth/esp_hosted_nimble/bleprph_wifi_coex/cp (3.0.6 and newer; earlier 3.x releases are not supported), which produces build/eh_cp_bt_wifi_hosted_hci_mcu.bin. 3.x needs ESP-IDF 5.5 or newer (CI uses the release ESPHome recommends). The ESP-NOW overlay applies to 3.x too: slave-overlay/ is a complete ESP-IDF component there, so instead of running apply-overlay.sh just copy it into the project's components/ directory.

idf.py create-project-from-example --path coprocessor "espressif/esp_hosted==3.0.8:bluetooth/esp_hosted_nimble/bleprph_wifi_coex/cp"
mkdir -p coprocessor/components
cp -r slave-overlay coprocessor/components/esp_now_hosted
cd coprocessor/
idf.py set-target esp32c6
idf.py build

After building, copy the firmware to your ESPHome configuration directory:

cp build/network_adapter.bin /path/to/your/esphome/config/

Generating SHA256 Hash

For embedded mode, you need the SHA256 hash of your firmware binary:

# Linux/macOS
sha256sum network_adapter.bin

# Windows PowerShell
Get-FileHash -Algorithm SHA256 network_adapter.bin

# Windows Command Prompt
certutil -hashfile network_adapter.bin SHA256

Versioning

Releases are tagged with the ESP-Hosted version used (e.g., v2.7.0).

License

The ESP-Hosted firmware is licensed under the Apache License 2.0. See the ESP-Hosted repository for details.

About

Firmware for ESP-Hosted-MCU Wi-Fi or Bluetooth co-processors

Resources

Code of conduct

Security policy

Stars

4 stars

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages