Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
111 commits
Select commit Hold shift + click to select a range
f98a8b0
FG: (lwip): add base commit for lwip split with slave controlling the…
mantriyogesh Jan 13, 2025
ecf21a4
feat(lwip_split): added daemon in userspace to actively listen any IP…
mantriyogesh Jan 16, 2025
b9e337f
Linux Auto fetching of IP tested on imx8mm board
mantriyogesh Jan 18, 2025
383dcee
feat(FG_auto_ip): Add documentation for auto IP restore feature
mantriyogesh Jan 19, 2025
be40119
Cosmetic Alignment changes
mantriyogesh Jan 20, 2025
94d62ac
feat(auto_ip_restore): 1. redefine hosted task priorities
mantriyogesh Jan 20, 2025
af901a1
fix(network-split): Fix the build errors for ESP_LOG
mantriyogesh Feb 6, 2025
c403828
fix: optimize port ranges and host power management
mantriyogesh Mar 17, 2025
c7bd10a
feat: add workqueue-based SPI processing
mantriyogesh Mar 17, 2025
410cd1f
perf: improve SPI performance with timing diagnostics
mantriyogesh Apr 8, 2025
b229980
shell integrated
mantriyogesh Apr 8, 2025
a1d7c0c
fix(rpc): modularise the network utility functions
mantriyogesh Apr 9, 2025
f900ef8
Disable resetpin reset by default
mantriyogesh Apr 10, 2025
bf78c95
Fix: serial interface write from cli while sdio removed
mantriyogesh Apr 10, 2025
5425018
Added iperf as local commponent
mantriyogesh Apr 10, 2025
e5573d5
feat(nw_split): Allow static list of host reserved ports
mantriyogesh Apr 11, 2025
70e1d1d
1. Add Custom RPC Req-Resp and Event handling to let user send own 'p…
mantriyogesh May 6, 2025
9e84db4
fix some format specifier errors
vikramdattu Apr 30, 2025
62b189c
Bugfixes and cleanup
mantriyogesh May 15, 2025
903d990
Fix(spi): Multiple bugfixes
mantriyogesh May 16, 2025
dfeac42
Fix(spi): Added capabilities message
SohKamYung-Espressif May 16, 2025
32571f5
Fix(C5): Enable BT support for C5 over transport and UART
SohKamYung-Espressif May 16, 2025
cd2879e
fix(cli): simplify Kconfig and fix station reconnect logic
mantriyogesh May 16, 2025
aff1866
feat(proto): Query network split if supported at slave using protobuf
mantriyogesh May 16, 2025
064747c
bugfix(sta) Connect to AP when not previously provisioned
SohKamYung-Espressif May 19, 2025
5feb474
doc(network_split): Add documentation for new features
mantriyogesh May 19, 2025
b60d544
doc(network_split): Add documentation for new features
mantriyogesh May 19, 2025
76e7c32
Merge branch 'nw_split_linux_wip2' into 'master'
mantriyogesh May 19, 2025
bcd8c32
bugfix(c3_s3_uart_hci) Fix build error due to change in fn name
SohKamYung-Espressif May 20, 2025
92335c3
Merge branch 'bugfix/c3_s3_uart_hci' into 'master'
mantriyogesh May 20, 2025
ced8383
feat(esp_hosted_ng): Release tag esp_hosted ng 1.0.4.0.0
Shreyas0-7 Dec 30, 2024
bf6b63a
Merge branch 'feat/ng_tag_1.0.4.0.0' into 'master'
mantriyogesh May 21, 2025
255ef79
fix(spi_code) Fixes to SPI code
SohKamYung-Espressif May 22, 2025
e614114
Merge branch 'fix/spi_code' into 'master'
mantriyogesh May 25, 2025
f718f91
esp-hosted-fg: Refactor build system, add Python app support, and enh…
mantriyogesh May 24, 2025
c273b00
Merge branch 'nw_split_linux_wip3' into 'master'
mantriyogesh May 25, 2025
8bc3a4a
fix(nw_split): Disable Network split for ESP32-C2 and ESP32-C3
mantriyogesh May 26, 2025
98762ff
fix(events): FG: Always allow wifi events to host
mantriyogesh May 27, 2025
e8f76bb
Fix(c2_bt): FG: Update doc for uart setup
mantriyogesh May 27, 2025
608f05b
Merge branch 'nw_split_linux_wip5' into 'master'
mantriyogesh May 27, 2025
7cce538
Small Bugfixes and enhancements
mantriyogesh May 27, 2025
7e9266e
Merge branch 'nw_split_linux_wip7' into 'master'
mantriyogesh May 27, 2025
dfe0ff6
fix(ng): undefined reference in sdio_slave_api.c
MrSumi May 30, 2025
4959c49
fix(esp_hosted_ng): Fix errorneous len check for sdio read
Shreyas0-7 Jun 3, 2025
b7c86a3
Merge branch 'bugfix/sdio_rx_len' into 'master'
mantriyogesh Jun 3, 2025
e92569b
"fix(esp_hosted_ng): Fix docs for supported chips"
Shreyas0-7 Jun 3, 2025
4857e53
feature(esp32c5_sdio): Added ESP32-C5 SDIO support
SohKamYung-Espressif May 30, 2025
80fc0ff
Merge branch 'feature/esp32c5_sdio' into 'master'
mantriyogesh Jun 3, 2025
0699edf
Merge branch 'docs/c5_changes' into 'master'
mantriyogesh Jun 3, 2025
f85b35b
feat(esp_hosted_ng): C5 related changes
Shreyas0-7 May 21, 2025
686fa50
fix(esp_hosted_ng): Update IDF and partitions table for esp32c5
Shreyas0-7 Jun 3, 2025
ee935a8
feat(esp_hosted_ng): Add support for esp32c5 hosted ng
Shreyas0-7 Jun 3, 2025
5b2623d
ci(esp_hosted_ng): Update CI env to v6.0.1
Shreyas0-7 Jun 5, 2025
70286ba
ci(esp_hosted_ng): add CI firmware test suite for esp32c5
Shreyas0-7 Jun 9, 2025
cf21d26
ammend ci for c5 sdio
mantriyogesh Jun 9, 2025
608da53
Fix: ci for C5: Add --preview
mantriyogesh Jun 9, 2025
1e07d09
Merge branch 'feat/esp32c5_hosted_ng_support' into 'master'
mantriyogesh Jun 9, 2025
8771e25
ci(esp_hosted_ng): Add ci for hosted-ng for linux 6.14
kapilkedawat Jun 9, 2025
8934e81
Merge branch 'ci/hosted_ng_linux-6-14' into 'master'
mantriyogesh Jun 9, 2025
cab85fc
Fix(ng): build for 6.15
mantriyogesh Jun 8, 2025
be23740
Merge branch 'fix/build_issues_linux_6.15' into 'master'
mantriyogesh Jun 9, 2025
af23115
Revert "feat(esp_hosted_ng): C5 related changes"
Shreyas0-7 May 21, 2025
c31aa92
Revert "fix(esp_hosted_ng): Update IDF and partitions table for esp32c5"
Shreyas0-7 Jun 9, 2025
a5749c5
Revert "feat(esp_hosted_ng): Add support for esp32c5 hosted ng"
Shreyas0-7 Jun 9, 2025
a4b263d
Revert "ci(esp_hosted_ng): Update CI env to v6.0.1"
Shreyas0-7 Jun 9, 2025
81bc359
Revert "ci(esp_hosted_ng): add CI firmware test suite for esp32c5"
Shreyas0-7 Jun 9, 2025
aca8a01
Revert "ammend ci for c5 sdio"
Shreyas0-7 Jun 9, 2025
1b5c0ba
Revert "Fix: ci for C5: Add --preview"
Shreyas0-7 Jun 9, 2025
cbce3da
docs(esp_hosted_ng): Add support of c5 beta
Shreyas0-7 Jun 10, 2025
24c8638
Merge branch 'fix/revert_c5_support' into 'master'
mantriyogesh Jun 10, 2025
83286da
fix(esp_hosted_ng): Fix station connection with owe AP
Shreyas0-7 May 7, 2025
ed8f4c1
Merge branch 'bugfix/fix_owe_connection' into 'master'
mantriyogesh Jun 26, 2025
30e092f
fix(esp_hosted_ng): Fix param desc for ota file
Shreyas0-7 Jun 13, 2025
a24a97f
docs(esp_hosted_ng): Add info for kernel module parameters
Shreyas0-7 Jun 18, 2025
7ba444f
Merge branch 'bugfix/ota_file_param_desc' into 'master'
mantriyogesh Jun 27, 2025
4a104eb
fix(hosted_fg_rawtp) Fix RawTP
SohKamYung-Espressif Jun 30, 2025
5f5daf9
Merge branch 'fix/fg_rawtp' into 'master'
mantriyogesh Jun 30, 2025
c85ecf2
fix(esp_hosted_ng): actively process RX packets
icvidal Jul 8, 2025
ba39e63
Merge branch 'fix/rx_packet_queuing_race_ng' into 'master'
mantriyogesh Jul 16, 2025
1d1b718
Ad example of network split
mantriyogesh Jul 30, 2025
fa92b80
Merge branch 'doc/network_split_example' into 'master'
mantriyogesh Jul 31, 2025
b04b0f3
feat(esp_hosted_ng): C5 related changes
Shreyas0-7 May 21, 2025
4b63d04
fix(esp_hosted_ng): Update IDF and partitions table for esp32c5
Shreyas0-7 Jun 3, 2025
24c3ca7
feat(esp_hosted_ng): Add support for esp32c5 hosted ng
Shreyas0-7 Jun 3, 2025
d59a6b6
ci(esp_hosted_ng): Update CI env to v6.0.1
Shreyas0-7 Jun 5, 2025
e197324
ci(esp_hosted_ng): add CI firmware test suite for esp32c5
Shreyas0-7 Jun 9, 2025
9a05e1f
ammend ci for c5 sdio
mantriyogesh Jun 9, 2025
2efc532
Fix: ci for C5: Add --preview
mantriyogesh Jun 9, 2025
2c810ad
Fix: ci for C5: Add --preview
mantriyogesh Jun 9, 2025
143f26d
feat(esp_hosted_ng): Add support for esp32c5 sdio
Shreyas0-7 Jun 10, 2025
9d8fc95
fix(esp_hosted_ng): Update wifi config for esp32c5
Shreyas0-7 Jul 16, 2025
754208e
docs(esp_hosted_ng): Update throughput for c5 sdio
Shreyas0-7 Jul 17, 2025
da0b22b
docs(esp_hosted_ng): Update data throughput for c5 sdio 5ghz
Shreyas0-7 Jul 21, 2025
eb21d67
feat(esp_hosted_ng): Resolve some comments
Shreyas0-7 Jul 30, 2025
4a1e80e
feat(esp_hosted_ng): Update esp hosted ng version to 1.0.5.0
Shreyas0-7 Jul 31, 2025
cc2f546
Merge branch 'feat/c5_support_idf_v5.5' into 'master'
mantriyogesh Aug 4, 2025
eb1fb78
fix(esp_hosted_ng): Fix compile errors for ng
Shreyas0-7 Aug 7, 2025
02bd320
Merge branch 'bugfix/ng_v5.5_compile_error' into 'master'
mantriyogesh Aug 8, 2025
fe8fb11
docs(esp_hosted_ng): Update setup docs for esp_hosted ng
Shreyas0-7 Aug 26, 2025
5633e76
Merge branch 'docs/cmake_doc_fix' into 'master'
mantriyogesh Aug 27, 2025
799d2df
fix(docs): Update sdio support for c5
Shreyas0-7 Sep 4, 2025
7c06bbc
Merge branch 'doc/c5_sdio_support' into 'master'
mantriyogesh Sep 4, 2025
859d244
fix(esp_hosted_ng): Fix De-assert HS signal on CS
Shreyas0-7 Sep 11, 2025
ef24d25
Merge branch 'bugfix/deassert_on_cs' into 'master'
mantriyogesh Sep 11, 2025
3fb8277
docs(esp_hosted_ng): Add docs for deassert cs for spi
Shreyas0-7 Sep 16, 2025
1b9dee6
fix(esp_hosted_ng): Increase Uart task size for esp32c6
Shreyas0-7 Sep 16, 2025
4598acd
Merge branch 'docs/deassert_cs_spi' into 'master'
mantriyogesh Sep 17, 2025
c8523c7
fix(esp_hosted_ng): Remove specific compilation SDIO left-overs
giuliobenetti Oct 3, 2025
f5883b9
docs(esp_hosted_ng): Fix documentation for supported chipset
Shreyas0-7 Oct 7, 2025
cd587b0
Merge branch 'docs/sdio_compile' into 'master'
mantriyogesh Oct 8, 2025
efa0e7a
fix(esp_hosted_ng): Fix build for kernel 6.17
giuliobenetti Nov 25, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 47 additions & 10 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ variables:

check_version:
stage: pre_check
image: ${CI_DOCKER_REGISTRY}/esp-env-v5.4:1
image: ${CI_DOCKER_REGISTRY}/esp-env-v5.5:3
script:
- export HOSTED_NG_PATH=$PWD/esp_hosted_ng
- .gitlab/ci/check_hosted_ng_version.sh
Expand All @@ -20,7 +20,7 @@ check_version:

build_fw_esp32_sdio:
stage: build_firmware
image: $CI_DOCKER_REGISTRY/esp-env-v5.4:1
image: $CI_DOCKER_REGISTRY/esp-env-v5.5:3
variables:
IDF_TARGET: esp32
script:
Expand All @@ -33,7 +33,7 @@ build_fw_esp32_sdio:

build_fw_esp32_spi:
stage: build_firmware
image: $CI_DOCKER_REGISTRY/esp-env-v5.4:1
image: $CI_DOCKER_REGISTRY/esp-env-v5.5:3
variables:
IDF_TARGET: esp32
script:
Expand All @@ -46,7 +46,7 @@ build_fw_esp32_spi:

build_fw_esp32s2_spi:
stage: build_firmware
image: $CI_DOCKER_REGISTRY/esp-env-v5.4:1
image: $CI_DOCKER_REGISTRY/esp-env-v5.5:3
variables:
IDF_TARGET: esp32s2
script:
Expand All @@ -59,7 +59,7 @@ build_fw_esp32s2_spi:

build_fw_esp32s3_spi:
stage: build_firmware
image: $CI_DOCKER_REGISTRY/esp-env-v5.4:1
image: $CI_DOCKER_REGISTRY/esp-env-v5.5:3
variables:
IDF_TARGET: esp32s3
script:
Expand All @@ -72,7 +72,7 @@ build_fw_esp32s3_spi:

build_fw_esp32c2_spi:
stage: build_firmware
image: $CI_DOCKER_REGISTRY/esp-env-v5.4:1
image: $CI_DOCKER_REGISTRY/esp-env-v5.5:3
variables:
IDF_TARGET: esp32c2
script:
Expand All @@ -85,7 +85,7 @@ build_fw_esp32c2_spi:

build_fw_esp32c3_spi:
stage: build_firmware
image: $CI_DOCKER_REGISTRY/esp-env-v5.4:1
image: $CI_DOCKER_REGISTRY/esp-env-v5.5:3
variables:
IDF_TARGET: esp32c3
script:
Expand All @@ -98,7 +98,7 @@ build_fw_esp32c3_spi:

build_fw_esp32c6_sdio:
stage: build_firmware
image: $CI_DOCKER_REGISTRY/esp-env-v5.4:1
image: $CI_DOCKER_REGISTRY/esp-env-v5.5:3
variables:
IDF_TARGET: esp32c6
script:
Expand All @@ -111,9 +111,22 @@ build_fw_esp32c6_sdio:

build_fw_esp32c6_spi:
stage: build_firmware
image: $CI_DOCKER_REGISTRY/esp-env-v5.4:1
image: $CI_DOCKER_REGISTRY/esp-env-v5.5:3
variables:
IDF_TARGET: esp32c6
script:
- .gitlab/ci/build_firmware.sh $IDF_TARGET
rules:
- changes:
- esp_hosted_ng/esp/esp_driver/network_adapter/**/*
tags:
- build_fw

build_fw_esp32c5_spi:
stage: build_firmware
image: $CI_DOCKER_REGISTRY/esp-env-v5.5:3
variables:
IDF_TARGET: esp32c5
script:
- .gitlab/ci/build_firmware.sh $IDF_TARGET spi
rules:
Expand All @@ -122,6 +135,20 @@ build_fw_esp32c6_spi:
tags:
- build_fw

build_fw_esp32c5_sdio:
stage: build_firmware
image: $CI_DOCKER_REGISTRY/esp-env-v5.5:3
allow_failure: true
variables:
IDF_TARGET: esp32c5
script:
- .gitlab/ci/build_firmware.sh $IDF_TARGET sdio
rules:
- changes:
- esp_hosted_ng/esp/esp_driver/network_adapter/**/*
tags:
- build_fw

build_host_sdio_linux_6.8.0:
stage: build_host
script:
Expand All @@ -133,6 +160,17 @@ build_host_sdio_linux_6.8.0:
tags:
- hosted_runner_4

build_host_sdio_linux_6.14.0:
stage: build_host
script:
- cd esp_hosted_ng/host
- make
rules:
- changes:
- esp_hosted_ng/host/**/*
tags:
- hosted_runner6

build_host_sdio_linux_5.15.0:
stage: build_host
script:
Expand Down Expand Up @@ -205,4 +243,3 @@ deploy_master_github:
- git remote remove github &>/dev/null || true
- git remote add github git@github.com:espressif/esp-hosted.git
- git push github "${CI_COMMIT_SHA}:refs/heads/${CI_COMMIT_REF_NAME}"

6 changes: 5 additions & 1 deletion .gitlab/ci/build_firmware.sh
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,11 @@ if [ "$2" = "spi" ]; then
fi

echo "Setting target as $TGT_NAME"
idf.py set-target $TGT_NAME
if [ "$TGT_NAME" = "esp32c5" ]; then
idf.py --preview set-target "$TGT_NAME"
else
idf.py set-target "$TGT_NAME"
fi
idf.py build

# Check if the build was successful
Expand Down
177 changes: 79 additions & 98 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,133 +1,114 @@
# ESP-Hosted

ESP-Hosted is an open source solution that provides a way to use Espressif SoCs and modules as a communication co-processor. This solution provides wireless connectivity (Wi-Fi and BT/BLE) to the host microprocessor or microcontroller, allowing it to communicate with other devices.
**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.

Following is the high level block diagram for ESP-Hosted. Detailed block diagram is available in subsequent sections.
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.

![alt text](basic_block_diagram.jpg "Basic Block Diagram")

### πŸ”‘ 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

## 1. ESP-Hosted Flavours
### πŸ“¦ High-Level Architecture

The ESP-Hosted solution is available in two flavours as mentioned below. The differentiation factor here is the type of network interface presented to host and the way Wi-Fi on ESP SoC/module is configured/controlled. Both the flavours have their respective host and firmware software.
<img src="basic_block_diagram.jpg" alt="Basic Block Diagram" width="600"/>

---

### 1.1 ESP-Hosted-NG
## 🧩 ESP-Hosted Variants

This is the Next-Generation ESP-Hosted solution specifically designed for hosts that run Linux operating system. This flavour of the solution takes a standard approach while providing a network interface to the host. This allows usage of standard Wi-Fi applications such as wpa_supplicant to be used with ESP SoCs/modules.
ESP-Hosted is available in three main variants:

This solution offers following:
### πŸ”Ή [ESP-Hosted-NG (Next Gen)](esp_hosted_ng/README.md)

* 802.11 network interface which is a standard Wi-Fi interface on Linux host
* Configuration of Wi-Fi is supported through standard cfg80211 interface of Linux
* A standard HCI interface
Best for **Linux hosts** needing standard Wi-Fi and Bluetooth integration:

This flavour is available in [esp_hosted_ng](esp_hosted_ng)
* Acts as a native 802.11 wireless device
* Configurable via `cfg80211` / `wpa_supplicant`
* Supports `NetworkManager`
* Bluetooth via standard HCI interface

Please proceed with the [detailed documentation](esp_hosted_ng/README.md) for setup and usage instructions.
---

### πŸ”Ή [ESP-Hosted-FG (First Gen)](esp_hosted_fg/README.md)

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

### 1.2 ESP-Hosted-FG
* 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

This is a first generation ESP-Hosted solution. This is a flavour, which provides a standard 802.3 (Ethernet) network interface to the host. Thought process behind this solution is to keep the host software simple while providing suite of connectivity features.
---

In order to achieve this, the host is presented with following:
### πŸ”Ή [ESP-Hosted-MCU](https://github.com/espressif/esp-hosted-mcu)

* A standard 802.3 network interface which essentially is an Ethernet interface
* A light weight control interface to configure Wi-Fi on ESP board
* A standard HCI interface
Optimized for **resource-constrained MCUs**:

Although this flavour supports Linux host, the nature of this solution makes it ideal to be used with MCU hosts which do not have complex communication interfaces such as Ethernet, Wi-Fi, BT/BLE etc.
* 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

This flavour is available in [esp_hosted_fg](esp_hosted_fg)

Please proceed with the [detailed documentation](esp_hosted_fg/README.md) for setup and usage instructions.
---

## πŸ“Š Variant Comparison

## 2. ESP-Hosted-FG vs ESP-Hosted-NG
| Feature | ESP-Hosted-NG | ESP-Hosted-FG | ESP-Hosted-MCU |
| :-------------------------------- | :------------------------------: | :-------------: | :--------------: |
| **Target Host** | Linux | Linux | 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** | βœ… | :hourglass: 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 |

Now that we offer two flavours of this solution, it could cause a little confusion. This section will try to explains similarities and differences in both the flavours and help you make a choice.
---

### 2.1 Similarities
## πŸ€” Choosing the Right Variant

- Both the flavours share the same aim, to conveniently use ESP's Wi-Fi and Bluetooth/BLE capabilities from host
- Both the flavours aim to support same set of ESP SoCs/modules and same set of transports like SPI/SDIO/UART for connectivity needs
| 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** |

### 2.2 Key Differences
---

- ESP-Hosted-FG supports both Linux and MCU hosts. ESP-Hosted-NG supports only Linux host.
- ESP-Hosted-FG exposes 802.3 network interface (Ethernet) to the host. Where as, ESP-Hosted-NG exposes 802.11 interface (Wi-Fi).
- ESP-Hosted-FG uses custom control path to configure Wi-Fi as opposed to ESP-Hosted-NG which uses standard nl80211/cfg80211 configuration.
## πŸ“š Documentation & Resources

### ESP-Hosted-NG

Following table summarizes this entire discussion.
* πŸ“„ [Documentation](https://github.com/espressif/esp-hosted/blob/master/esp_hosted_ng/README.md)
* 🐞 [Issues](https://github.com/espressif/esp-hosted/issues)
* πŸ“ˆ [Throughput Benchmarks](https://github.com/espressif/esp-hosted/blob/master/esp_hosted_ng/README.md#5-throughput-performance)

<table>
<tr>
<th>Features</th>
<th>ESP-Hosted</br>First</br>Generation </th>
<th>ESP-Hosted</br>Next</br>Generation </th>
</tr>
<tr>
<td>Supported platforms</td>
<td>MCU &amp; Linux host</td>
<td>Linux only host</td>
</tr>
<tr>
<td>Wi-Fi Configuration mechanism</td>
<td>Custom control interface</td>
<td>nl80211 / cfg80211</td>
</tr>
<tr>
<td>Network Interface available</td>
<td>802.3 Ethernet Interface</td>
<td>802.11 Wi-Fi interface</td>
</tr>
<tr>
<td>Recommended Host Type</td>
<td><span style="font-weight:bold">MCU Host</span></td>
<td><span style="font-weight:bold">Linux Host</span></td>
</tr>
<tr>
<td>Wi-Fi features</td>
<td colspan="2" style="text-align:center">802.11 b/g/n</td>
</tr>
<tr>
<td>Transport Layer</td>
<td colspan="2" style="text-align:center">SDIO, SPI, UART</td>
</tr>
<tr>
<td>Usable transport combinations</td>
<td colspan="2" style="text-align:center">SPI only, SPI+UART, SDIO only, SDIO+UART</td>
</tr>
<tr>
<td>Wi-Fi Mode</td>
<td>Station, <span style="font-weight:bold">SoftAP</span></td>
<td>Station, SoftAP</td>
</tr>
<tr>
<td>Wi-Fi Security Protocols</td>
<td colspan="2" style="text-align:center">Open / WPA / WPA2 / WPA3</td>
</tr>
<tr>
<td>Bluetooth features</td>
<td colspan="2" style="text-align:center">BLE 4.2, BLE 5.0, BLE 5.3</td>
</tr>
<tr>
<td>Chipsets supported</td>
<td>ESP32, <span>ESP32-C2/C3/C5/C6/S2/S3</span></td>
<td>ESP32, <span>ESP32-C2/C3/C5/C6/S2/S3</span></td>
</tr>
</table>

- **Iperf Throughput**
- [ESP-Hosted-FG](esp_hosted_fg/README.md#5-throughput-performance)
- [ESP-Hosted-NG](esp_hosted_ng/README.md#4-throughput-performance)

## 3. Our Recommendation

* If you are using MCU host, you do not have choice but to use ESP-Hosted-FG
* If you are using Linux host, we recommend ESP-Hosted-NG since it takes a standard approach which makes it compatible with widely used user space applications/services such as wpa_supplicant, Network Manager etc.
### ESP-Hosted-FG

* πŸ“„ [Documentation](https://github.com/espressif/esp-hosted/blob/master/esp_hosted_fg/README.md)
* 🐞 [Issues](https://github.com/espressif/esp-hosted/issues)
* πŸ“ˆ [Throughput Benchmarks](https://github.com/espressif/esp-hosted/blob/master/esp_hosted_fg/README.md#5-throughput-performance)

### ESP-Hosted-MCU

* πŸ“„ [Documentation](https://github.com/espressif/esp-hosted-mcu/blob/main/README.md)
* 🐞 [Issues](https://github.com/espressif/esp-hosted-mcu/issues)
* πŸ“ˆ [Throughput Benchmarks](https://github.com/espressif/esp-hosted-mcu/tree/main?tab=readme-ov-file#hosted-transports-table)
Loading