OpenWifi, an open source project to implement wifi based on FPGA and SDR

openwifi

During the FOSDEM 2020 conference it was unveiled the first open source development of OpenWifi "Wi-Fi 802.11 a / g / n" Full stack waveform and modulation defined by programming (SDR, Software Defined Radio) and FPGA.

The interesting thing about the project openwifi es que allows you to create a fully Linux-compatible implementation and that controls all the components of a wireless device, including the low-level layers in conventional wireless adapters implemented at the level of chips inaccessible for auditing. The code of the software components, as well as the circuits and the descriptions of the hardware blocks in Verilog for FPGA language, are distributed under the AGPLv3 license.

openwifi uses the SoftMAC architecture, which implies the implementation of the main 802.11 wireless stack on the controller side and the presence of a low MAC layer on the FPGA side. The mac80211 subsystem provided by the Linux kernel is used as the wireless stack, while the interaction with SDR is done through a special controller.

The hardware component of the functional prototype demonstrated is based on the Xilinx Zynq FPGA and the AD9361 Universal Transceiver (RF).

Of the main characteristics by OpenWifi

  • Full support for 802.11a / g and partial support for 802.11n MCS 0 ~ 7 (so far only PHY rx). Plans support 802.11ax
  • 20MHz bandwidth and 70 MHz to 6 GHz frequency range
  • Operating modes: Ad-hoc (client device network), access point, station and monitoring
  • The FPGA implementation of the DCF (Distributed Coordination Function) protocol using the CSMA / CA method. Provides Frame Processing Time (SIFS) at 10us
  • Channel access priority configurable parameters: RTS / CTS, CTS to itself, SIFS, DIFS, xIFS, slot time, etc.
  • By time interval based on MAC addresses
  • Easily modifiable bandwidth and frequency: 2MHz for 802.11ah and 10MHz for 802.11p
  • OpenWifi currently supports Xilinx ZC706 FPGA SDR platforms with FMCOMMS2 / 3/4 transceivers from Analog Devices, as well as ADRV9361Z7035 SOM + ADRV1CRR-BOB and ADRV9361Z7035 SOM + ADRVCR (FPGA + RF) packages.

For the administration, standard Linux utilities like ifconfig and iwconfig can be usedas well as a specialized sdrctl utility that works through netlink and allows you to manage SDR at a low level (manipulate registers, change time slicer settings, etc.).

Among other open projects experimenting with the Wi-Fi stack, we can mention the Wime project, which develops an IEEE 802.11 a / g / p compatible transmitter based on GNU Radio and a normal PC.

As well as 802.11 open wireless software stacks are also being developed by Ziria and Sora (Microsoft Research Software Radio).

During performance tests, from the data obtained when connecting a client with a TL-WDN4200 N900 USB adapter to an Access Point based on OpenWifi, allowed to achieve a throughput of 30.6Mbps (TCP) and 38.8Mbps (UDP) when transmitting data from an access point to a client and 17.0Mbps (TCP) and 21.5Mbps (UDP) when transmitting from a client to an access point.

Here is a demo of a phone connecting to the access point running OpenWifi.

The components involved in the first prototype of OpenWifi cost around 1300 euros, but they are being transferred to cheaper plates. For example, the cost of a solution based on Analog Devices ADRV9364-Z7020 will be 700 euros and based on ZYNQ NH7020 which has a cost of about 400 euros.

Download

Finally, for those interested in knowing more about the project or downloading the prepared image of OpenWifi can get it by going to the following link.

Here you can find information about the use and installation of the image on an SD card (the image is based on an ARM version of Linux).

Of the components that currently support the package, there are: ADRV9364Z7020 SOM + ADRV1CRR-BOB, Xilinx zed + FMCOMMS2 / 3/4, Xilinx ZCU102 + FMCOMMS2 / 3/4, and Xilinx ZCU102 + ADRV9371.

Source: https://fosdem.org