На прошедшей конференции FOSDEM 2020 представлен проект OpenWifi, развивающий первую открытую реализацию полного стека Wi-Fi 802.11a/g/n, форма сигнала и модуляция в котором задаётся программно (SDR, Software Defined Radio). OpenWifi позволяет создать полностью подконтрольную реализацию всех компонентов беспроводного устройства, включая низкоуровневые слои, в обычных беспроводных адаптерах реализуемые на уровне недоступных для аудита чипов. Код программных компонентов, а также схемы и описания аппаратных блоков на языке Verilog для FPGA распространяются под лицензией AGPLv3.

Аппаратная составляющая продемонстрированного рабочего прототипа базируется на FPGA Xilinx Zynq и универсальном приёмопередатчике (RF) AD9361. В OpenWifi применяется архитектура SoftMAC, подразумевающая реализацию основного беспроводного стека 802.11 (high-MAC) на стороне драйвера и наличие low-MAC слоя на стороне FPGA. В качестве беспроводного стека используется подсистема mac80211, предоставляемая ядром Linux. Взаимодействие с SDR производится через специальный драйвер.

Основные возможности:

  • Полная поддержка 802.11a/g и частичная поддержка 802.11n MCS 0~7 (пока только PHY rx). В планах поддержка 802.11ax;
  • Полоса пропускания 20MHz и диапазон частот от 70 MHz до 6 GHz;
  • Режимы работы: Ad-hoc (сеть из клиентских устройств), точка доступа, станция и мониторинг;
  • Реализация на стороне FPGA протокола канального уровня DCF (Distributed Coordination Function), использующего метод CSMA/CA. Обеспечивается время обработки кадра (SIFS) на уровне 10us;
  • Настраиваемые параметры приоритета доступа к каналу: продолжительность RTS/CTS, CTS-to-self, SIFS, DIFS, xIFS, slot-time и т.п.
  • Квантование времени (Time slicing) на базе MAC-адреса;
  • Легко изменяемая полоса пропускания и частота:
    2MHz для 802.11ah и 10MHz для 802.11p;

В настоящее время в OpenWifi обеспечена поддержка SDR-платформ на базе FPGA
Xilinx ZC706 с приёмопередатчиками Analog Devices FMCOMMS2/3/4, а так же связок (FPGA + RF) ADRV9361Z7035 SOM + ADRV1CRR-BOB и ADRV9361Z7035 SOM + ADRV1CRR-FMC. Для загрузки сформирован готовый образ SD-карты на базе ARM Linux. В планах поддержка связок ADRV9364Z7020 SOM + ADRV1CRR-BOB, Xilinx zed + FMCOMMS2/3/4, Xilinx ZCU102 + FMCOMMS2/3/4 и
Xilinx ZCU102 + ADRV9371. Стоимость компонентов, задействованных в первом прототипе OpenWifi, составила около 1300 евро, но ведётся портирование на более дешёвые платы. Например стоимость решения на базе Analog Devices ADRV9364-Z7020 составит 700 евро, а на базе ZYNQ NH7020 — 400 евро.

Тестирование производительности подключения клиента с USB-адаптером TL-WDN4200 N900 к точке доступа на базе openwifi позволило добиться пропускной способности 30.6Mbps (TCP) и 38.8Mbps (UDP) при передаче данных от точки доступа к клиенту и 17.0Mbps (TCP) и 21.5Mbps (UDP) при передаче от клиента к точке доступа. Для управления могут использоваться штатные утилиты Linux, такие как ifconfig и iwconfig, а также специализированная утилита sdrctl, работающая через netlink и позволяющая управлять работой SDR на низком уровне (манипулировать регистрами, менять настойки квантования времени и т.п.).