The ESP32-P4 has no radio of its own. Boards such as the M5Stack Tab5 pair it with an ESP32-C6 that handles Wi-Fi and Bluetooth, and ESPHome talks to that co-processor through the esp32_hosted component and Espressif's esp_hosted library. On 22 October 2026 ESPHome merged a change (#21394) that moves the host side from esp_hosted 2.12.13 to 3.0.10 and removes the 2.x code. It is in the development branch, 2026.11.0-dev, so it should reach users with ESPHome 2026.11. It is marked as a breaking change.

What you may have to change

  • ESP-IDF 5.5 or newer is required. esp_hosted 3.x does not build with older versions, so a config that pins an older ESP-IDF now fails validation. Remove the pinned version to use the one ESPHome recommends, or pin 5.5 or later.
  • 1-bit SDIO needs d1_pin. On a 1-bit bus, DAT1 is the card interrupt line and the host always uses it. Until now a 1-bit build quietly took a default pin from the library settings. Now you have to name the pin wired to DAT1.
  • active_high is deprecated. The 3.x library always holds the reset line high and pulses it low. active_high: true still validates with a warning and will be removed in 2027.5.0. active_high: false is now an error, and there is no replacement.

A separate change merged the same day (#21398) raises the minimum ESP-IDF version for all ESP32 builds from 5.0 to 5.1. That one affects only configs that pinned a 5.0.x release.

What gets fixed

esp_hosted 3.0.10 fixes the build for 1-bit SDIO hosts, which was the last reason ESPHome stayed on 2.x. Version 3.x also stops erasing the whole co-processor partition at the start of an OTA update.

The pull request describes a pin bug that would have hit 3.x users silently. In 3.x, the board setting defaults to an Espressif development board and locks every pin to that board's values. Without an explicit "no dev board" setting, the pins from the YAML were replaced by the dev board defaults, and the build only printed a warning. ESPHome now sets that option, so the configured pins are used.

The co-processor update needed a fix too. ESPHome sent the firmware in fixed 1500-byte chunks, but the 3.x host rejects anything larger than its per-call limit, 1488 bytes on SDIO, so every co-processor update failed. The update component now sizes chunks from that limit. The matching co-processor image is ESPHome's esp-hosted-firmware v3.0.10, published on 22 October and built with ESP-IDF 5.5.6. It is listed in the update manifest.

The author, Jonathan Swoboda, tested Wi-Fi, Bluetooth and a co-processor update to 3.0.10 on an M5Stack Tab5, where the ESP32-P4 talks to an ESP32-C6 over SDIO.