Ранее в этом месяце сообщество увидело, как скромный ESP32-S3 можно превратить в передатчик и приёмник SDR, а затем разработчик под ником h0m3us3r выпустил проект w1700k-sdr, превращающий Wi-Fi 7 роутер Gemtek W1700K в широкополосный SDR-приёмник.

Проект с открытым исходным кодом LR2021-SDR за авторством Сэмюэла Рейнольдса (SAMS0N1TE) следует тем же принципам и превращает LoRa-трансивер Semtech LR2021 в программно-определяемую радиосистему (SDR), способную принимать сигналы в диапазоне от 100 МГц до 2,74 ГГц. Используя недокументированную команду в ПЗУ чипа, проект открывает доступ к «сырым» 16-битным I/Q-отсчётам, что позволяет программно декодировать цифровой голос P25 Phase 1, пейджинговые сообщения POCSAG и аналоговые ЧМ-сигналы без внешнего SDR-свистка.

Плата с LoRa-трансивером Semtech LR2021

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

Ключевые возможности прошивки LR2021-SDR:

График протестированного диапазона приёма LR2021 SDR от 100 МГц до 2,74 ГГцПротестированный диапазон приёма LR2021 SDR — от 100 МГц до 2,74 ГГц (каждая точка — реальный сигнал, смещавшийся при перестройке приёмника; затенённые области — диапазоны, обещанные в даташите)

  • Поддерживаемое оборудование — Semtech LR2021 с ПЗУ версии 1.24; вариант SX1262 для доступа к «сырым» I/Q несовместим.
  • Диапазон приёма — от 100 МГц до 2,74 ГГц (по результатам экспериментов), что выходит за рамки указанных в даташите полос 150–960 МГц и 1,5–2,5 ГГц.
  • Диапазон передачи — от 100 МГц до 2,74 ГГц (по результатам экспериментов), также шире заявленных в даташите полос.
  • Захват I/Q — 16-битные отсчёты I и Q по SPI, с чистыми короткими захватами до 250 000 комплексных отсчётов в секунду.
  • Непрерывный приём — 125 000 отсчётов/с на протяжении до 391 секунды без зафиксированных потерь FIFO и пропусков блоков.
  • Декодирование сигналов — цифровой голос P25 Phase 1, пейджинговые сообщения POCSAG и аналоговая ЧМ через LakeShark.
  • Bluetooth LE — приём рекламных пакетов BLE 1M на каналах 37, 38 и 39 с помощью встроенного пакетного движка BLE.
  • Запись — «сырые» I/Q-захваты для офлайн-анализа, декодирования и воспроизведения, включая триггерные записи с предзахватом отсчётов.
реклама кормит Уточку 🦆

В обычном режиме LR2021 работает с модуляциями LoRa, FSK, FLRC и другими, передавая декодированные пакеты на хост-процессор. Проект LR2021-SDR обходит штатный режим с помощью недокументированной команды ПЗУ, которая открывает доступ к «сырому» сигналу основной полосы. Процессор затем обрабатывает I/Q-отсчёты программно, что даёт возможность принимать сигналы, не поддерживаемые стандартным пакетным интерфейсом чипа напрямую.

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

Разработчик протестировал приёмник во всём диапазоне от 100 МГц до 2,74 ГГц, используя гармоники тактового генератора платы и отдельные сигналы, сгенерированные HackRF One внутри экранированного корпуса. Тесты подтвердили приём на частотах 100 МГц, 1,3 ГГц, 2,6 ГГц и 2,74 ГГц. Однако измерения проводились на единственной плате, поэтому результаты не устанавливают калиброванную чувствительность приёмника и не гарантируют такое же покрытие частот на другом оборудовании.

Спектрограмма односекундной записи вызова на частоте 154,785 МГцОдносекундная запись вызова на частоте 154,785 МГц. Эти же отсчёты при офлайн-декодировании дали 27 голосовых кадров IMBE

Также была проверена непрерывная запись I/Q на скорости 125 000 отсчётов в секунду: три сессии длились до 391 секунды без потерь FIFO и отбраковки блоков. Короткие захваты на скорости до 250 000 отсчётов в секунду тоже работали, однако более высокие значения — 500 000 и 1 000 000 отсчётов в секунду — вызывали переполнение FIFO, поскольку интерфейс SPI на 16 МГц не успевал передавать данные.

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

LR2021-SDR поддерживает и экспериментальную передачу сигналов, включая тестовые голосовые сигналы P25, данные с датчика температуры и сигналы дистанционного управления OOK/FSK. В одном из тестов отдельный приёмник успешно декодировал 72 голосовых кадра P25 и восстановил исходный тестовый тон. Другие опыты включали отправку данных с датчика температуры, принятых утилитой rtl_433, и воспроизведение сигналов пульта, декодированных Flipper Zero. Пока передача ограничена короткими пакетами, а непрерывная передача и поддержка «живого» голоса ещё в разработке.

Декодированный пакет 2-FSK в триггерном рекордере LakeSharkОдин пакет из триггерного I/Q-рекордера в LakeShark, декодированный офлайн: 2-FSK на 2400 бод, синхрослово D391 D391, 4-байтовая полезная нагрузка, контроль CRC-16.

LakeShark (использованная выше) — ещё один проект прошивки с открытым исходным кодом того же автора, превращающий LilyGO T-Display P4 в карманный SDR-сканер с внешним RTL-SDR-свистком. С появлением LR2021-SDR стал возможен захват «сырых» I/Q-данных напрямую со встроенного трансивера Semtech LR2021, что позволяет LakeShark принимать и декодировать голос P25, сообщения POCSAG и аналоговую ЧМ без внешнего свистка.

Репозиторий проекта на GitHub включает Си-библиотеку под лицензией GPL-3.0, автономную прошивку захвата для ESP32-P4, инструменты на Python, инструкции по сборке и подробные результаты тестов. Пользователи могут установить LakeShark для живого декодирования и работы «на ходу» либо воспользоваться автономной прошивкой, чтобы захватывать I/Q-отсчёты по USB для анализа на компьютере. Проект остаётся экспериментальным, и для него требуется плата с чипом LR2021 и подходящей антенной.