esp32-open-mac/FoA

Ferris-on-Air: An experimental IEEE 802.11 (WLAN) stack for rust on the ESP32.

Rust

270

120 commits

updated Aug 14, 2026

See the code

README

Ferris on Air

Ferris on Air (FoA) is an open source 802.11 stack for the ESP32 written in async rust, with the work of the esp32-open-mac project. The stack is intended to be used with embassy and is still in very early stages of development. We do not claim to be Wi-Fi certified, but implement the features specified by IEEE 802.11 to our best knowledge.

Design

The main FoA crate acts as a multiplexer, that divides access to the hardware up into a number of virtual interfaces (VIF's). These can then be passed to interface implementations, like foa_sta or foa_dswifi. These interface implementations can coexist, enabling things like AP/STA operation in the future.

Structure

The foa crate contains the LMAC, TX buffer management and RX ARC buffer management. foa_sta contains a rudimentary implementation of a station interface. examples contain a set of examples showing how to use different parts of the stack.

Usage

For a concrete usage example, see examples. These examples can be run with ./run_example.sh <EXAMPLE_NAME> <CHIP> [SSID] [LOG_LEVEL].

Note

The docs sometimes contain anecdotes I left during coding, since I believe them to be interesting.

License

This project is licensed under Apache 2.0 or MIT at your option.

Contributors

Frostie314159

120 commits

esp32-open-mac/FoA

Ferris-on-Air: An experimental IEEE 802.11 (WLAN) stack for rust on the ESP32.

Rust

270

120 commits

updated Aug 14, 2026

See the code

README

Ferris on Air

Ferris on Air (FoA) is an open source 802.11 stack for the ESP32 written in async rust, with the work of the esp32-open-mac project. The stack is intended to be used with embassy and is still in very early stages of development. We do not claim to be Wi-Fi certified, but implement the features specified by IEEE 802.11 to our best knowledge.

Design

The main FoA crate acts as a multiplexer, that divides access to the hardware up into a number of virtual interfaces (VIF's). These can then be passed to interface implementations, like foa_sta or foa_dswifi. These interface implementations can coexist, enabling things like AP/STA operation in the future.

Structure

The foa crate contains the LMAC, TX buffer management and RX ARC buffer management. foa_sta contains a rudimentary implementation of a station interface. examples contain a set of examples showing how to use different parts of the stack.

Usage

For a concrete usage example, see examples. These examples can be run with ./run_example.sh <EXAMPLE_NAME> <CHIP> [SSID] [LOG_LEVEL].

Note

The docs sometimes contain anecdotes I left during coding, since I believe them to be interesting.

License

This project is licensed under Apache 2.0 or MIT at your option.

Contributors

Frostie314159

120 commits

Languages

Rust

100.0%