WiFi is omnipresent on most connected hardware, and when it works it’s great, but when there are issues oftentimes they can not be solved because the firmware is a closed-source binary. I understand companies do that either to protect their IP and/or make sure end-users do not break FCC compliance.
OpenWiFi project aims to deliver a completely open-source SDR (Software Defined Radio) WiFi implementation compatible with Linux and running on FPGA hardware.
OpenWiFi currently supported features:
- 802.11a/g; 802.11n MCS 0~7; 20MHz
- Mode tested: Ad-hoc; Station; AP
- DCF (CSMA/CA) low MAC layer in FPGA
- Configurable channel access priority parameters:
- duration of RTS/CTS, CTS-to-self
- Time slicing based on MAC address
- Easy to change bandwidth and frequency:
- 2MHz for 802.11ah in sub-GHz
- 10MHz for 802.11p/vehicle in 5.9GHz
The developers tested OpenWiFi on Xilinx ZC706 FPGA evaluation kit coupled Analog Devices fmcomms2/fmcomms4 RF board to form an access point, and connected it to a client with TL-WDN4200 N900 dual-band WiFi USB Adapter. iperf results:
- AP to client performance: 30.6Mbps (TCP), 38.8Mbps (UDP)
- Client to AP performance: 17.0Mbps (TCP), 21.5Mbps (UDP)
Here’s a demo of a smartphone connecting to the access point running OpenWifi.
Future and on-going work include 802.11ax WiFi 6 implementation, and support for more hardware platforms including ADRV9361-Z7035/ADRV9364-Z7020 + Analog Devices ADRV1CRR-BOB, as well as Xilinx ZCU102 + Analogic Devices fmcomms2/fmcomms4/ADRV9371.
You’ll find resources such as driver and FPGA code on Github. Note the source is released under two dual licenses: AGPLv3 for open source code and a non-opensource license is also proposed for projects that require it. If you don’t own the fairly expensive hardware to run the demo, you could also check their test bed w-iLab.t tutorial. We were also informed the developers plan to present their project in the “Free Software Radio” devroom at FOSDEM 2020.
Thanks to Zoobab for the tip.