ESP-Hosted: Detailed Comparison

September 9, 2026 · View on GitHub

What each solution supports, where they agree, and where they differ.

SolutionModelHosts
esp-hosted-linuxFullMAC — the 802.11 MAC runs on the ESP, the host registers a cfg80211 wiphyLinux
esp-hosted-mcuCustom — ESP-IDF APIs carried as protobuf RPCMCU 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 supportedSDIO
SPI full duplex
SPI half duplex
UARTBluetooth only
SDIO + UART
SPI + UART
Features supportedLinux 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 host802.11802.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.

ChipsetWi-FiClassic BTBLE certified802.15.4
ESP32Wi-FiClassic BTBLE 5.0
ESP32-S2Wi-Fi
ESP32-S3Wi-FiBLE 5.4
ESP32-C3Wi-FiBLE 5.4
ESP32-C2Wi-FiBLE 5.3
ESP32-C6Wi-Fi 6BLE 5.3802.15.4
ESP32-C5Wi-Fi 6 dual bandBLE 5.3802.15.4
ESP32-C61Wi-Fi 6BLE 5.3
ESP32-H2BLE 5.3802.15.4
ESP32-H21BLE 5.3802.15.4
ESP32-H4BLE 5.0802.15.4

Radio support

Radioesp-hosted-linuxesp-hosted-mcuRemarks
Wi-Fi
Classic BluetoothESP32 is the only co-processor with a Classic radio
BLEcarried 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

Featureesp-hosted-linuxesp-hosted-mcuNotes
802.11 b/g/nReq_WifiSetProtocol(s)
802.11 acno ESP co-processor implements it
802.11 ax, HEReq_WifiSetProtocols, on a C5, C6 or C61 co-processor
Station
SoftAP
Station + SoftAP togetherthe Linux driver exposes one interface at a time
Scan
Open, WPA, WPA2, WPA3WPA3 on Linux through NL80211_FEATURE_SAE
PMF
WPA2 / WPA3 Enterprisewpa_supplicant handles it on Linux; Req_Eap* on mcu
DPP, Wi-Fi Easy Connectwpa_supplicant handles it on Linux; Req_SuppDpp* on mcu
WPSwpa_supplicant handles it on Linux; no RPC on mcu
Roaming: 802.11 k, vwpa_supplicant handles it on Linux; no RPC on mcu
Roaming: 802.11 rthe Linux driver has no update_ft_ies; no RPC on mcu
iTWTReq_WifiStaItwt*, needs an 802.11ax co-processor
FTMReq_WifiFtm*
CSIReq_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-linuxesp-hosted-mcu
Linuxany Linux platform, with portingany Linux platform, with porting
Linux demonstrated onRaspberry Pi 3, 4, 5 · i.MX8M MiniRaspberry Pi 3, 4, 5 · i.MX8M Mini
ESP as hostany ESP SoC; demonstrated on ESP32-P4 with a C6 co-processor
Other MCUsany MCU, with porting; STM32 tested