RTL-SDR rxx_lora: Легковесный приемник LoRa в стиле rtl_fm для RTL-SDR и SDRplay, без необходимости в GNU Radio

rxx_lora: Легковесный приемник LoRa в стиле rtl_fm для RTL-SDR и SDRplay, без необходимости в GNU Radio

Спасибо Пшемыславу Вчисло (SO5DZ) за написание и публикацию rxx_lora, командного LoRa приемника для устройств RTL-SDR и SDRplay RSP. Пшемыслав отмечает, что он был разработан в духе rtl_fm, поэтому нет необходимости строить или поддерживать графы потоков GNU Radio. Вместо этого это один небольшой бинарный файл на C (rtl_lora или rsp_lora, плюс file_lora для сохраненных I/Q захватов). Декодированные пакеты выводятся в формате JSONL в stdout, так что вы можете передавать их в другие программы.

Пшемыслав пишет:

  • Он быстрый. Вся цепочка приема (обнаружение, синхронизация, демодуляция, FEC) работает в десятки и сотни раз быстрее реального времени, в зависимости от параметров PHY и аппаратного обеспечения, конечно.

  • Он чувствительный. Я протестировал бинарный файл от начала до конца в условиях AWGN, и он приближается к ~1-2 дБ от идеальной теоретической производительности LoRa. Он легко демодулирует предустановку MediumFast от Meshtastic при -14 дБ SNR. Я также могу подтвердить это на основе реальных наблюдений. Действительные декоды регулярно появляются при -12 до -14 дБ. Я даже видел кадр при -17 дБ SNR, хотя у него был плохой CRC 🙂

  • Он стабильный. Он никогда не зависал у меня, кроме случаев, когда я случайно выдернул донгл из USB порта 😉 Он также должен быть стабильным с точки зрения качества программного обеспечения. Я собрал обширный набор контрольных точек качества и тестов, включая тесты на шум, тесты на ранее записанных захватах… Это должно сделать маловероятным, что предстоящее изменение случайно приведет к серьезной регрессии.

  • Он не требует много: librtlsdr, FFTW, компилятор C и make. Большинство тех, кто имел дело с RTL-SDR, вероятно, не потребуется устанавливать ни одного пакета сверх того, что у них уже есть. Python и несколько библиотек используются для тестов и дополнительных инструментов, но они не обязательны для нормальной работы.

Приемник реализует стандартный LoRa PHY, поэтому его можно использовать для Meshtastic, LoRaWAN, MeshCore, APRS-over-LoRa и других LoRa сигналов. Включенный Python-скрипт также расшифровывает пакеты Meshtastic с использованием ключей канала по умолчанию или настроенных ключей и выводит их в читаемом виде.

Ядро демодуляции основано на проектах gr-lora и gr-lora_sdr GNU Radio. Код является открытым и распространяется под лицензией GPLv3 и доступен на GitHub. Он работает на Linux, а в README говорится, что macOS “вероятно” также работает. Версия для SDRplay также требует API SDRplay. Для приема Meshtastic он охватывает аналогичную область, что и проект Meshtastic_SDR на основе GNU Radio, о котором мы ранее писали, но с гораздо меньшим объемом.

rxx_lora Декодирование пакетов Meshtastic с помощью RTL-SDR
rxx_lora Декодирование пакетов Meshtastic с помощью RTL-SDR

AI Disclaimer: Пшемыслав отмечает, что улучшения чувствительности были достигнуты благодаря “терпеливому и целенаправленному использованию мощных инструментов ИИ”, и в README говорится, что проект активно использовал ИИ как для кодирования, так и для теоретического исследования.

Подбираете SDR под задачу?

Опишите, что и где хотите принимать, — подскажем подходящие модели и где их купить.

Похожие материалы

Весь блог

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля отмечены *