At the last conference FOSDEM 2020 project , which develops the first open implementation of the full Wi-Fi 802.11a / g / n stack, in which the signal shape and modulation are set programmatically (SDR, Software Defined Radio). OpenWifi allows you to create a completely controlled implementation of all components of a wireless device, including low-level layers, in conventional wireless adapters implemented at the level of chips inaccessible to audit. Code , hardware blocks in the Verilog language for FPGA are distributed under the AGPLv3 license.
The hardware component of the demonstrated working prototype is based on a Xilinx Zynq FPGA and an AD9361 universal RF transceiver. OpenWifi utilizes the SoftMAC architecture, which involves implementing the core 802.11 wireless stack (high-MAC) on the driver side and a low-MAC layer on the FPGA side. The wireless stack is provided by the mac80211 kernel subsystem. LinuxInteraction with SDR is performed via a special driver.
Key features:
- Full support for 802.11a/g and partial support for 802.11n MCS 0~7 (only PHY rx for now). Plans to support 802.11ax;
- Bandwidth 20MHz and frequency range from 70 MHz to 6 GHz;
- Modes of operation: (network of client devices), access point, station and monitoring;
- Implementation on the FPGA side of the link layer protocol (Distributed Coordination Function) using the CSMA/CA method. Frame processing time is provided () at the 10us level;
- Configurable channel access priority parameters: RTS/CTS duration, CTS-to-self, SIFS, DIFS, xIFS, slot-time, etc.
- Time quantization () based on MAC address;
- Easily changeable bandwidth and frequency:
2MHz for 802.11ah and 10MHz for 802.11p;
Currently, OpenWifi provides FPGA based SDR platforms
Xilinx ZC706 with Analog Devices FMCOMMS2/3/4 transceivers, as well as bundles (FPGA + RF) ADRV9361Z7035 SOM + ADRV1CRR-BOB and ADRV9361Z7035 SOM + ADRV1CRR-FMC. Formed for download ARM-based SD cards Linux. The plans include support for the ADRV9364Z7020 SOM + ADRV1CRR-BOB, Xilinx zed + FMCOMMS2/3/4, Xilinx ZCU102 + FMCOMMS2/3/4 and
Xilinx ZCU102 + ADRV9371. The cost of the components involved in the first prototype of OpenWifi was about 1300 euros, but porting to cheaper boards is underway. For example, the cost of a solution based on will be 700 euros, and on the basis of - 400 euros.
Testing the connection performance of a client with a TL-WDN4200 N900 USB adapter to an OpenWifi-based access point yielded throughputs of 30.6 Mbps (TCP) and 38.8 Mbps (UDP) for data transfer from the access point to the client, and 17.0 Mbps (TCP) and 21.5 Mbps (UDP) for data transfer from the client to the access point. Built-in utilities can be used for management. Linux, such as ifconfig and iwconfig, as well as a specialized utility sdrctl, which works via netlink and allows you to control the SDR operation at a low level (manipulate registers, change time quantization settings, etc.).

Of the other open source projects experimenting with the Wi-Fi stack, one can note the project developing IEEE 802.11 a/g/p compliant based on GNU Radio and regular PC. 802.11 software open wireless stacks are also developing projects и (Microsoft Research Software Radio).
Source: opennet.ru
