Примерно две недели назад в чипах ESP32 обнаружили недокументированную возможность выдавать I/Q-отсчёты, и с тех пор подобные функции стали находить и в других беспроводных микросхемах, включая LoRa- и Wi-Fi-чипсеты. Последним в этом ряду оказался MediaTek MT7921AU, который часто ставят в Wi-Fi-адаптеры: за несколько дней для него независимо друг от друга появились сразу два SDR-драйвера.

Wi-Fi-адаптер на чипе MediaTek MT7921AU, превращённый в SDR-приёмник

Почему I/Q-отсчёты так важны

SDR (software-defined radio, программно определяемое радио) — это приёмник, в котором демодуляцию и обработку сигнала выполняет не специальная аппаратная схема, а программа. Исходным материалом для неё служат I/Q-отсчёты: оцифрованные синфазная и квадратурная составляющие сигнала, по которым софт может восстановить практически любую модуляцию. Раньше для такой работы обычно покупали отдельный приёмник вроде RTL-SDR, но выяснилось, что нужные данные способны отдавать и некоторые Wi-Fi-чипы: в MT7921AU такой режим предусмотрен для отладки и калибровки.

реклама кормит Уточку 🦆

BirriaSDR: без изменений прошивки

Первым появился проект BirriaSDR. Его разработчики выяснили, что чип отдаёт «сырые» I/Q-отсчёты для нужд отладки и калибровки, и построил на этом SDR-драйвер. Данные передаются на хост со скоростью 40 Msps (миллионов отсчётов в секунду) при разрядности 14 бит, а настройка возможна в диапазоне от 2156 до 2610 МГц — в него целиком входит привычная полоса 2,4 ГГц.

Драйвер общается с адаптером напрямую через libusb и получает доступ к его регистрам. Постоянных изменений в прошивку он не вносит, поэтому после работы в режиме SDR Wi-Fi-адаптер возвращается в исходное состояние и продолжает работать как обычно. Программный интерфейс BirriaSDR сделан похожим на API RTL-SDR, поэтому адаптировать под него существующие приложения должно быть проще.

реклама кормит Уточку 🦆

Mtk79ICAP: шире полоса и диапазон 5 ГГц

Второй проект, Mtk79ICAP, предлагает доступ к возможностям захвата отсчётов MT7921AU через стандартный интерфейс SoapySDR. Это значит, что его можно подключать к программам, которые уже умеют работать с SoapySDR. Платой за это стали более глубокие вмешательства: в отличие от BirriaSDR, Mtk79ICAP вносит изменения в прошивку чипа и требует модифицированного драйвера.

Взамен он выжимает больше: максимальная полоса достигает 80 МГц, а приём возможен и в диапазонах 5 ГГц. Есть и приятная особенность — адаптер может одновременно работать в режиме мониторинга (monitor mode) и передавать SDR-данные, правда, только при включённой автоматической регулировке усиления (AGC).

реклама кормит Уточку 🦆

Что дальше

MT7921AU — уже второй чип MediaTek, который удалось приспособить для SDR-задач: до него таким же образом использовали MT7996. Удобство в том, что у Wi-Fi-адаптеров нередко есть внешние антенны, а значит, к ним проще подключить схему с частотным смесителем и расширить диапазон приёма.

До полноценной замены специализированным приёмникам этим адаптерам пока далеко. Тем не менее энтузиасты уже продвинулись дальше простого приёма: на базе ESP32 им удалось передавать произвольные сигналы, так что похожие эксперименты с Wi-Fi-адаптерами могут быть лишь вопросом времени.