ESP-Hosted: Detailed Comparison
September 9, 2026 · View on GitHub
What each solution supports, where they agree, and where they differ.
| Solution | Model | Hosts |
|---|---|---|
| esp-hosted-linux | FullMAC — the 802.11 MAC runs on the ESP, the host registers a cfg80211 wiphy | Linux |
| esp-hosted-mcu | Custom — ESP-IDF APIs carried as protobuf RPC | MCU and Linux |
Each project's own documentation is the authority for the setup you are building. What follows is a comparison, not a substitute.
Bus and feature support
| Group | esp-hosted-linux | esp-hosted-mcu | |
|---|---|---|---|
| Bus supported | ✓ | ✓ | |
| ✓ | ✓ | ||
| ✓ | |||
| Bluetooth only | ✓ | ||
| ✓ | ✓ | ||
| ✓ | ✓ | ||
| Features supported | Linux host | ✓ | ✓ |
| MCU host, including non-ESP MCUs with porting | ✓ | ||
Native wireless interface: wlan0 via cfg80211 | ✓ | ||
wpa_supplicant, NetworkManager | ✓ | ||
ESP-IDF esp_wifi_*() APIs on the host | ✓ | ||
| Station, AP | ✓ | ✓ | |
| Station and AP at the same time | ✓ | ||
| Interface presented to the host | 802.11 | 802.3 | |
| Host and ESP share one IP address (using the network split feature) | ✓ | ||
| Bluetooth over standard HCI | ✓ | ✓ | |
| 802.15.4 — Thread, Zigbee | ✓ | ||
| Host sleep, the ESP stays connected | ✓ | ✓ | |
| Co-processor OTA from the host | ✓ | ✓ | |
| Custom RPCs of your own | ✓ | ||
| Your own frames across the link | ✓ |
On esp-hosted-linux a lone UART carries Bluetooth but not Wi-Fi — pair it with SDIO or SPI when you need both. On esp-hosted-mcu UART carries both, as Hosted HCI, which is not the same as standard HCI-over-UART; it is the lowest-pin-count option and is not intended above roughly 1 Mbit/s.
Co-processor chipset capabilities
What each part can do, from ESP-IDF
soc_caps.h.
The BLE column is the version the part is certified for, from the ESP-IDF
Bluetooth LE introduction.
| Chipset | Wi-Fi | Classic BT | BLE certified | 802.15.4 |
|---|---|---|---|---|
| ESP32 | ||||
| ESP32-S2 | ||||
| ESP32-S3 | ||||
| ESP32-C3 | ||||
| ESP32-C2 | ||||
| ESP32-C6 | ||||
| ESP32-C5 | ||||
| ESP32-C61 | ||||
| ESP32-H2 | ||||
| ESP32-H21 | ||||
| ESP32-H4 |
Radio support
| Radio | esp-hosted-linux | esp-hosted-mcu | Remarks |
|---|---|---|---|
| Wi-Fi | ✓ | ✓ | |
| Classic Bluetooth | ✓ | ✓ | ESP32 is the only co-processor with a Classic radio |
| BLE | ✓ | ✓ | carried as HCI |
| 802.15.4 — Thread, Zigbee | ✓ |
esp-hosted-linux needs a Wi-Fi capable co-processor: the driver exists to present that Wi-Fi to Linux, and Bluetooth rides alongside it.
esp-hosted-mcu takes the co-processor for whichever radios you need. A part with no Wi-Fi at all — H2, H21, H4 — is a valid choice when only Bluetooth or Thread is wanted.
Wi-Fi features
esp-hosted-mcu offers a feature when the RPC surface carries it — an
ESP-IDF API with no RPC behind it fails at build or at run time.
esp-hosted-linux offers what its driver advertises to cfg80211; anything
the host stack does on its own needs nothing from the driver.
✓ supported ✕ not supported — not required, the host stack provides it
| Feature | esp-hosted-linux | esp-hosted-mcu | Notes |
|---|---|---|---|
| 802.11 b/g/n | ✓ | ✓ | Req_WifiSetProtocol(s) |
| 802.11 ac | ✕ | ✕ | no ESP co-processor implements it |
| 802.11 ax, HE | ✕ | ✓ | Req_WifiSetProtocols, on a C5, C6 or C61 co-processor |
| Station | ✓ | ✓ | |
| SoftAP | ✓ | ✓ | |
| Station + SoftAP together | ✕ | ✓ | the Linux driver exposes one interface at a time |
| Scan | ✓ | ✓ | |
| Open, WPA, WPA2, WPA3 | ✓ | ✓ | WPA3 on Linux through NL80211_FEATURE_SAE |
| PMF | ✓ | ✓ | |
| WPA2 / WPA3 Enterprise | — | ✓ | wpa_supplicant handles it on Linux; Req_Eap* on mcu |
| DPP, Wi-Fi Easy Connect | — | ✓ | wpa_supplicant handles it on Linux; Req_SuppDpp* on mcu |
| WPS | — | ✕ | wpa_supplicant handles it on Linux; no RPC on mcu |
| Roaming: 802.11 k, v | — | ✕ | wpa_supplicant handles it on Linux; no RPC on mcu |
| Roaming: 802.11 r | ✕ | ✕ | the Linux driver has no update_ft_ies; no RPC on mcu |
| iTWT | ✕ | ✓ | Req_WifiStaItwt*, needs an 802.11ax co-processor |
| FTM | ✕ | ✓ | Req_WifiFtm* |
| CSI | ✕ | ✓ | Req_WifiSetCsi, Req_WifiSetCsiConfig |
The Linux driver declares ht_cap only, with no VHT or HE, and carries no FTM,
CSI or FT handling — which settles those rows on that side.
Hosts
| esp-hosted-linux | esp-hosted-mcu | |
|---|---|---|
| Linux | any Linux platform, with porting | any Linux platform, with porting |
| Linux demonstrated on | Raspberry Pi 3, 4, 5 · i.MX8M Mini | Raspberry Pi 3, 4, 5 · i.MX8M Mini |
| ESP as host | — | any ESP SoC; demonstrated on ESP32-P4 with a C6 co-processor |
| Other MCUs | — | any MCU, with porting; STM32 tested |