Skip to content

espressif/esp-hosted

Repository files navigation

ESP-Hosted

ESP-Hosted is an open-source solution that enables Espressif SoCs/modules (like ESP32) to act as wireless communication co-processors for external host systems.

It allows host devices (Linux-based systems or microcontrollers, MCUs) to add Wi-Fi and Bluetooth/BLE capabilities via standard interfaces like SPI, SDIO, or UART.

🔑 Key Features

  • Flexible Connectivity: Wi-Fi + Bluetooth/BLE
  • Broad Host Support: Works with Linux and MCU-based systems
  • Multiple Interfaces: SPI, SDIO, UART
  • Shared Networking: ESP and host can share the same IP address
  • Power Efficient: Low power modes for battery-powered use cases

📦 High-Level Architecture

Basic Block Diagram


🧩 ESP-Hosted Variants

ESP-Hosted is available in three main variants:

Best for Linux hosts needing standard Wi-Fi and Bluetooth integration:

  • Acts as a native 802.11 wireless device
  • Configurable via cfg80211 / wpa_supplicant
  • Supports NetworkManager
  • Bluetooth via standard HCI interface

Designed for Linux hosts, with custom lightweight RPC-based control:

  • Ethernet 802.3 interface
  • Wi-Fi configuration via protobuf-based RPC
  • Fully customizable APIs
  • Bluetooth via standard HCI
  • Python or C integration
  • ESP maintains network when the host is powered off

Optimized for resource-constrained MCUs:

  • Minimal memory footprint
  • Wi-Fi configuration via protobuf-based RPC
  • Power-efficient operation
  • Ready port of ESP and STM32 as host
  • Bluetooth via standard HCI
  • ESP stays connected even when the host is in deep sleep or powered off

📊 Variant Comparison

Feature ESP-Hosted-NG ESP-Hosted-FG ESP-Hosted-MCU
Target Host Linux Linux / MCU MCU
Wi-Fi Configuration cfg80211 RPC (protobuf) RPC (protobuf)
Network Interface 802.11 Wi-Fi 802.3 Ethernet 802.3 Ethernet
Same IP for ESP & Host
Power Management ⌛ Planned
Wi-Fi Modes STA, AP STA, AP, STA+AP STA, AP, STA+AP
Bus Interfaces SPI, SDIO, UART (and combos) Same Same
Wi-Fi Security WPA, WPA2, WPA3, Open Same Same
Standards 802.11 b/g/n/ax, BLE 4.2/5.0/5.3 Same Same
Supported ESP Chips ESP32, C2/C3/C5/C6, S2/S3 Same Same

🤔 Choosing the Right Variant

Use Case Recommended Variant
Standard Linux Wi-Fi config (NetworkManager, wpa_supplicant) ESP-Hosted-NG
Linux with custom/proprietary control over Wi-Fi ESP-Hosted-FG
Embedded Linux platforms (e.g. Raspberry Pi, BeagleBone) NG or FG
Minimal resource devices (low RAM/CPU MCUs) ESP-Hosted-MCU
Custom networking or duplicate stack (same IP on host & ESP) FG or MCU
IoT use cases requiring both BLE and Wi-Fi Any
Need for protocol customization / Deep Packet Inspection FG or MCU
Classic Bluetooth support All Variants

📚 Documentation & Resources

ESP-Hosted-NG

ESP-Hosted-FG

ESP-Hosted-MCU