Most, if not all, WiFi hardware relies on a closed-source binary blob containing the ESP32 wireless MCU, but we are currently reverse engineering the ESP32’s WiFi MAC layer to make it a true open-source platform. Work in progress.
The Espressif ESP32 wireless microcontroller already has an open source framework (ESP-IDF) and toolchain that allows some customization of the code, but this includes distributed wireless bits (Wi-Fi, Bluetooth, low-level RF features) are not included. As a closed source precompiled library integrated into the firmware. There were some efforts to provide an open source stack for the BL602 chip, but they never materialized, and aside from FPGA-based projects like OpenWiFi, ESP32 could be the first target with open source drivers without blobs. There is a gender.
The initial implementation currently supports the following features:
- Sending WiFi frames
- Receiving WiFi frames
- Sends an ACK packet in response to a packet sent to the ESP32.
- Connect to an open access point and send UDP packets.
- Hardware packet filtering based on MAC address
Note that the initialization (setup) code still relies on closed source proprietary code. But it’s still good progress. Other features to be implemented soon include channel switching, data rate changes, Tx power adjustment, and open source implementation. WiFi hardware initialization sequence. Once that is complete, the driver will be integrated into his open source 802.11 MAC implementation.
In the long term, we plan to work on the following features:
- Save modem power: Turn off your modem when it’s not in use.
- AMSDU, AMPDU, HT40, QoS
- The encryption required for WPA2 is performed in hardware, not software
- Bluetooth support
- Create an SVD document for all reverse engineered registers. An SVD file is an XML file that describes the hardware functionality of a microcontroller, and allows APIs to be automatically generated from the hardware description.
This project allows developers to introduce new features and could be particularly useful for WiFi mesh (IEEE 802.11s), as the current implementation by Espressif Systems is quite limited. If you want to learn more about reverse engineering work, read the related blog post by Jasper Devreker (this is a long article). The source code is also available on GitHub.
Thanks to Zoobab for the tip.
Jean-Luc started CNX Software as a part-time job in 2010, then quit his job as a software engineering manager and began writing daily news and reviews full-time in late 2011.
Support CNX Software! Donate in cryptocurrency, become a patron on Patreon, or buy on Amazon or Aliexpress