What do you do when a Linux single-board computer ships with weak Wi-Fi, no free USB port, and a driver that depends on a binary blob? One answer making the rounds is to hang an ESP32 off the board and let it act as the wireless card.
What is esp-hosted?
It is Espressif’s open project for using an ESP32 module as a Wi-Fi and Bluetooth adapter for a host computer. The host talks to the ESP32 over SDIO or SPI, so any board with one spare bus can use it. A Hackaday write-up walks through adding an ESP32-C6 to a custom Linux board and documents the parts that were not obvious during setup.
There are two flavors. The MCU version lets the ESP32 manage its own Wi-Fi connection, so it stays online even while the host reboots. The Linux version keeps the wireless stack on the host and treats the ESP32 as a thin proxy, which makes it behave like a normal wireless card.
Which chip should you pick?
The Linux version supports the ESP32-S2, S3, C2, C3, C5, and C6/C61. A generic ESP32-WROOM module is enough for plain Wi-Fi. The author picked the C6 for its feature list and later called that a mistake, so read the article before you order boards for a design.
How would a student use this?
A thesis team building a Linux-based gateway can skip the USB dongle and wire the ESP32 to the SPI header instead. Budget for a gotcha or two: the SDIO or SPI pins must match the device tree, and the clock speed matters if you see dropped packets. Start on a 4-wire SPI link, confirm the interface appears as wlan0, then try a faster SDIO connection on a second prototype.
Try it
Read the full guide on Hackaday, then pick up an ESP32-C3 or S3 dev board from circuit.rocks to test the SPI path before you commit to a PCB.
Frequently Asked Questions
What is the difference between esp-hosted-mcu and esp-hosted-linux?
Which ESP32 chips and buses does it need?
The Linux version works with the ESP32-S2, S3, C2, C3, C5, and C6/C61. The host needs one spare SDIO or SPI port to talk to the module.
What will I learn if I build this?
You learn SPI and SDIO wiring, how Linux device trees describe a wireless interface, and how to debug a driver that fails to bring up wlan0.
