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 SIFS/DIFS/xIFS/slot-time/CW/etc

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.