espressif/esp-hosted

Hosted Solution (Linux/MCU) with ESP32 (Wi-Fi + BT + BLE)

Python

1,061

840 commits

updated Sep 9, 2026

See the code

README

ESP-Hosted

ESP-Hosted, an open-source connectivity solution, leverages Espressif SoCs as dedicated wireless co-processors for Linux systems and microcontrollers.

It offloads protocol management to the co-processor, providing the host with full Wi-Fi, Bluetooth/BLE, and Thread capabilities via standard peripheral buses (SDIO, SPI, or UART).

🔑 Key features

  • Wi-Fi, Bluetooth/BLE and 802.15.4 over a single wired link
  • Fully open source code — both co-processor and host
  • Broad host support: an MCU, or Linux
  • Several buses: SDIO, SPI, SPI-HD, UART, and combinations
  • Standard Wi-Fi security: Open, WPA, WPA2, WPA3
  • Classic Bluetooth, BLE, BTDM (4.2..6.0)
  • Shared networking: ESP and host can share the same IP address
  • Power efficient: low power modes for battery-powered use cases

🔗 High-Level Architecture

The host runs an application above a TCP/IP stack, a Bluetooth stack and an 802.15.4 stack, with the ESP-Hosted host driver and a bus driver below them. Over SDIO, SPI, SPI-HD or UART sits the ESP co-processor, whose ESP-Hosted firmware runs above the ESP-IDF Wi-Fi, Bluetooth and 802.15.4 drivers.

💡 ESP-Hosted Solutions

🔹 esp-hosted-linux

FullMAC solution for Linux hosts:

  • Single step solution
  • Seamless, out-of-the-box connectivity
  • Native Wi-Fi interface (wlan0)
  • Linux cfg80211 integration
  • wpa_supplicant and NetworkManager support
  • Bluetooth using HCI
  • 802.11 MAC runs on the ESP co-processor

🔹 esp-hosted-mcu

RPC-based solution for MCU and Linux hosts:

  • ESP-IDF way: fully-compatible ESP-IDF APIs, and event handlers usable at host
  • App controls everything. APIs translate into portable protobuf based RPC requests to co-processor
  • Host can use esp_event for co-processor events transparently
  • Users can send their custom frames between host and co-processor
  • 802.3 Ethernet interface
  • Bluetooth using HCI
  • 802.15.4 supports Thread and Zigbee
  • Host and ESP can share a single IP address while the ESP maintains connectivity during host sleep

🤔 Choosing the Right Solution

The first question is how the host wants to reach Wi-Fi.

HostHost Wi-Fi interfaceSolution
LinuxLinux networking stack: wlan0, cfg80211, wpa_supplicant, NetworkManageresp-hosted-linux
Linux or MCUESP-IDF esp_wifi_*() APIsesp-hosted-mcu

By use case:

Use caseRecommended
Standard Linux Wi-Fi config (NetworkManager, wpa_supplicant)esp-hosted-linux
A native wireless interface, so existing tooling and scripts keep workingesp-hosted-linux
Linux with custom or proprietary control over Wi-Fiesp-hosted-mcu
Embedded Linux boards (Raspberry Pi, BeagleBone)either
ESP-IDF application code that should run unchanged on the hostesp-hosted-mcu
Wi-Fi in AP + station mode on Linuxesp-hosted-mcu
Wi-Fi and Bluetooth/BLE togethereither
Classic Bluetootheither
Connectivity kept up while the host sleepseither

📊 Solution Comparison

ESP-Hosted-Linux — FullMACESP-Hosted-MCU — custom solution
On a Linux host the application reaches wpa_supplicant through cfg80211 on the control path and the TCP/IP stack on the data path. Below them the ESP-Hosted host driver and the bus driver talk to the ESP co-processor, which runs Wi-Fi and Bluetooth.On an MCU or Linux host the application reaches Protobuf RPC on the control path and the TCP/IP stack on the data path. Below them the ESP-Hosted host driver and the bus driver talk to the ESP co-processor, which runs Wi-Fi, Bluetooth and Thread.
  • Seamless connectivity
  • Out-of-the-box networking
  • Existing Linux tooling and scripts keep working
  • Both Linux and MCU hosts use standard ESP-IDF APIs
  • Single co-processor firmware for MCU and Linux hosts
  • Same host app works on MPU and MCU

See the detailed comparison to understand how the two solutions differ.

🚀 Getting Started

Active development is currently taking place in these repositories:

RepositoryPurposeSupport
esp-hosted-linuxStandard Linux SolutionLinux Issues
esp-hosted-mcuCustom solution for MCU and Linux hostsMCU Issues

🤝 Contributing and issues

Contributions are welcome — bug reports, fixes, new features and documentation. ESP-Hosted is developed in the open, and every change goes through review. For anything substantial, please open an issue first so the approach can be agreed before you write the code.

🕰️ Legacy implementations

Legacy implementationMigrated toStatusCode
ESP-Hosted-NGesp-hosted-linuxLegacylegacy/fg-ng
ESP-Hosted-FGesp-hosted-mcuLegacylegacy/fg-ng

espressif/esp-hosted

Hosted Solution (Linux/MCU) with ESP32 (Wi-Fi + BT + BLE)

Python

1,061

840 commits

updated Sep 9, 2026

See the code

README

ESP-Hosted

ESP-Hosted, an open-source connectivity solution, leverages Espressif SoCs as dedicated wireless co-processors for Linux systems and microcontrollers.

It offloads protocol management to the co-processor, providing the host with full Wi-Fi, Bluetooth/BLE, and Thread capabilities via standard peripheral buses (SDIO, SPI, or UART).

🔑 Key features

  • Wi-Fi, Bluetooth/BLE and 802.15.4 over a single wired link
  • Fully open source code — both co-processor and host
  • Broad host support: an MCU, or Linux
  • Several buses: SDIO, SPI, SPI-HD, UART, and combinations
  • Standard Wi-Fi security: Open, WPA, WPA2, WPA3
  • Classic Bluetooth, BLE, BTDM (4.2..6.0)
  • Shared networking: ESP and host can share the same IP address
  • Power efficient: low power modes for battery-powered use cases

🔗 High-Level Architecture

The host runs an application above a TCP/IP stack, a Bluetooth stack and an 802.15.4 stack, with the ESP-Hosted host driver and a bus driver below them. Over SDIO, SPI, SPI-HD or UART sits the ESP co-processor, whose ESP-Hosted firmware runs above the ESP-IDF Wi-Fi, Bluetooth and 802.15.4 drivers.

💡 ESP-Hosted Solutions

🔹 esp-hosted-linux

FullMAC solution for Linux hosts:

  • Single step solution
  • Seamless, out-of-the-box connectivity
  • Native Wi-Fi interface (wlan0)
  • Linux cfg80211 integration
  • wpa_supplicant and NetworkManager support
  • Bluetooth using HCI
  • 802.11 MAC runs on the ESP co-processor

🔹 esp-hosted-mcu

RPC-based solution for MCU and Linux hosts:

  • ESP-IDF way: fully-compatible ESP-IDF APIs, and event handlers usable at host
  • App controls everything. APIs translate into portable protobuf based RPC requests to co-processor
  • Host can use esp_event for co-processor events transparently
  • Users can send their custom frames between host and co-processor
  • 802.3 Ethernet interface
  • Bluetooth using HCI
  • 802.15.4 supports Thread and Zigbee
  • Host and ESP can share a single IP address while the ESP maintains connectivity during host sleep

🤔 Choosing the Right Solution

The first question is how the host wants to reach Wi-Fi.

HostHost Wi-Fi interfaceSolution
LinuxLinux networking stack: wlan0, cfg80211, wpa_supplicant, NetworkManageresp-hosted-linux
Linux or MCUESP-IDF esp_wifi_*() APIsesp-hosted-mcu

By use case:

Use caseRecommended
Standard Linux Wi-Fi config (NetworkManager, wpa_supplicant)esp-hosted-linux
A native wireless interface, so existing tooling and scripts keep workingesp-hosted-linux
Linux with custom or proprietary control over Wi-Fiesp-hosted-mcu
Embedded Linux boards (Raspberry Pi, BeagleBone)either
ESP-IDF application code that should run unchanged on the hostesp-hosted-mcu
Wi-Fi in AP + station mode on Linuxesp-hosted-mcu
Wi-Fi and Bluetooth/BLE togethereither
Classic Bluetootheither
Connectivity kept up while the host sleepseither

📊 Solution Comparison

ESP-Hosted-Linux — FullMACESP-Hosted-MCU — custom solution
On a Linux host the application reaches wpa_supplicant through cfg80211 on the control path and the TCP/IP stack on the data path. Below them the ESP-Hosted host driver and the bus driver talk to the ESP co-processor, which runs Wi-Fi and Bluetooth.On an MCU or Linux host the application reaches Protobuf RPC on the control path and the TCP/IP stack on the data path. Below them the ESP-Hosted host driver and the bus driver talk to the ESP co-processor, which runs Wi-Fi, Bluetooth and Thread.
  • Seamless connectivity
  • Out-of-the-box networking
  • Existing Linux tooling and scripts keep working
  • Both Linux and MCU hosts use standard ESP-IDF APIs
  • Single co-processor firmware for MCU and Linux hosts
  • Same host app works on MPU and MCU

See the detailed comparison to understand how the two solutions differ.

🚀 Getting Started

Active development is currently taking place in these repositories:

RepositoryPurposeSupport
esp-hosted-linuxStandard Linux SolutionLinux Issues
esp-hosted-mcuCustom solution for MCU and Linux hostsMCU Issues

🤝 Contributing and issues

Contributions are welcome — bug reports, fixes, new features and documentation. ESP-Hosted is developed in the open, and every change goes through review. For anything substantial, please open an issue first so the approach can be agreed before you write the code.

🕰️ Legacy implementations

Legacy implementationMigrated toStatusCode
ESP-Hosted-NGesp-hosted-linuxLegacylegacy/fg-ng
ESP-Hosted-FGesp-hosted-mcuLegacylegacy/fg-ng

Significant stargazers

J. Nick Koston

2,199 followers · starred Jun 2025

Viktor Oreshkin

489 followers · starred Jun 2024

Julian Uy

178 followers · starred Jul 2026

LIU HANCHENG

79 followers · starred Jan 2026