Notebookcheck Logo

Rust-based open-source WiFi stack comes to the ESP32

Espressif ESP32 (Image Source Espressif)
Espressif ESP32 (Image Source Espressif)
After clever reverse engineering, engineers liberated the EPS32's once closed-source WiFi stack. Soon, the ESP32 will be capable of several exciting operating modes.

An experimental open-source WiFi stack has just launched for the ESP32. Known as Ferris on Air or FoA, this project, written in async rust, is a proof-of-concept 802.11 stack that paves the way for implementing different interfaces with the help of Embassy, a rust-based framework for embedded devices. Ultimately, this framework will bring capabilities like mesh networking and AirDrop to the ESP32. As exciting as these features might be, they were not always possible.

The ESP32 is largely open-source. Unfortunately, the WiFi and Bluetooth modules are closed-sourced, likely because Espressif, the maker of the ESP32, is bound by a hardware NDA for these modules. Fortunately, for this project, Espressify confirmed that the project could legally reverse engineer the modules and publish the findings under an Apache license. However, reverse engineering is not an easy feat.

To open the WiFi module, the team used Ghidra, an open-source reverse engineering tool developed by the NSA, to analyze its code structure, logic, and function names, which Esprssif kindly left in the code. With this information, the team gained insight into the function of each hardware register involved in controlling the WiFi Module. Then, using a combination of physical and emulated ESP32 hardware analysis, the team successfully reverse-engineered the WiFi module. Notably, the team had to construct a DIY Faraday cage to isolate the WiFi signals coming from the ESP32. To accomplish this, the team used a wooden cube lined with conductive fabric, a fiber optic cable for a signal to ESP32, and a car battery to power the entire setup.

Ferris on Air is still in its early stages but is quickly gaining traction and features. The entire reverse engineering process and more details on the project are available below.

static version load dynamic
Loading Comments
Comment on this article
Please share our article, every link counts!
Mail Logo
Stephen Pereyra, 2024-12-29 (Update: 2024-12-29)