This is OpenSensor Engineering's independently maintained fork of esp32-open-mac/FoA. The canonical repository is opensensor/FoA.
AI-assisted and AI-generated contributions are welcome. See Contributing for review and validation expectations. Submit issues and pull requests here.
The OpenSensor ESP repository index links the related driver, stack, register definitions and reverse-engineering tools. Original history, credits and licenses are retained.
OpenSensor changes include station TX/replay fixes, handshake retry handling, and WPA2 group-key rotation. The linked validation reports name the tested hardware, source revisions and remaining limitations.
The original documentation follows; its badges, release links and project status refer to upstream unless explicitly identified as OpenSensor results.
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.
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.
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.
For a concrete usage example, see examples. These examples can be run with
./run_example.sh <EXAMPLE_NAME> <CHIP> [SSID] [LOG_LEVEL].
The docs sometimes contain anecdotes I left during coding, since I believe them to be interesting.
This project is licensed under Apache 2.0 or MIT at your option.