Flipper Zero научился передавать APRS без внешних модулей

Радиолюбители давно используют APRS (Automatic Packet Reporting System) для передачи GPS-координат и коротких сообщений. Обычно для этого требуется специальный передатчик. Но Richard YO3GND создал приложение, которое превращает Flipper Zero в APRS-передатчик без каких-либо внешних модулей.


Что такое APRS

APRS — протокол любительской радиосвязи для обмена короткими пакетами данных. Чаще всего используется для передачи позиции (GPS-координаты), но применяется и для других задач: отслеживание погоды, обмен сообщениями, передача телеметрии.

Традиционно для APRS требуется FM-передатчик, работающий на частотах 144 МГц или 430 МГц. Flipper Zero имеет встроенный чип CC1101, работающий в диапазоне 433 МГц (ISM band), что теоретически позволяет достичь 70 см любительского диапазона.


Проблема модуляции

Главная сложность — модуляция. APRS использует FM (частотную модуляцию), в то время как Flipper Zero способен только на FSK (частотную манипуляцию). Это разные вещи, хотя на бумаге выглядят похоже.

FSK модуляция — слабая замена FM. Успешная расшифровка сигнала зависит от:

  • Дискриминатора приёмника
  • Фильтров
  • Декодера (direwolf, qtmm)
Flipper Zero APRS TX Interface

Некоторые аппаратные декодеры испытывают трудности, но программные (direwolf, qtmm) справляются неплохо. Даже UV878 декодирует сигнал.


Как это работает

Приложение flipper-zero-aprs-tx использует Sub-GHz модуль Flipper Zero и программную эмуляцию APRS. Автор описывает это как «намеренно грубый FSK-hack, притворяющийся FM».

Что умеет передавать:

  • APRS-сообщения
  • Статусные пакеты
  • Бюллетени
  • Фиксированные позиционные пакеты (координаты)

Можно настроить:

  • Частота ( ISM band )
  • Deviation (отклонение частоты)
  • 2FSK / GFSK режим
  • Записная книжка с позывными
  • Параметры радио
APRS TX Settings


Технические детали

Протокол AX.25

Самая сложная часть — не RF-сигнал, а протокол:

  • Построение AX.25 фрейма
  • Вычисление CRC
  • Bit stuffing
  • NRZI кодирование
  • Формирование потока в софте

Всё это было сначала отработано на Python, затем перенесено на Flipper Zero.

Проблемы и решения

Первая проблема: тайминг. Он должен быть достаточно точным, не просто консистентным на бумаге.

Вторая проблема: размер wavetable. При 300 baud потребовались итерации.

Третья проблема: фазовый аккумулятор. Введён для плавности переходов между битами — переходы самое уязвимое место.

IOCCC obfuscation

Автор добавил «пасхалку» — зашифрованную проверку callsign. Свой код для APRS-symbol lookup можно найти на сотнях сайтов, но это забавный пример избыточной secrecy.


Важные ограничения

  • Мощность: всего 100 мВт — высота антенны критична
  • Дальность: не ожидайте дальности от помещения до local gateway
  • Декодирование: успех зависит от приёмника и его настроек
  • Лицензия: передача на реальную APRS-сеть требует лицензии радиолюбителя

Почему по умолчанию FL1PER-0

Чтобы случайно не выйти на живую APRS-сеть, по умолчанию стоит искусственный позывной FL1PER-0. Он в блоке F, который редко используется — экспериментальные пакеты легче распознать и отфильтровать.


Установка и использование

Требования

  • Flipper Zero
  • SD-карта
  • Позывной радиолюбителя (для реальной APRS) + SSID + passcode

Установка

./fbt build APPSRC=flipperham
./fbt launch APPSRC=flipperham

Или скачать готовый .fap из Releases на GitHub.

Настройка

В файле /ext/ham/my-callsigns.txt на SD-карте добавить позывные:

ВАШ-PROS,1234
РТО-BALLOON-0,5678

Формат: позывной-SSID,IS passcode (одна строка на позывной).

Если не работает

  1. Включить debug mode
  2. Нажать вверх/вниз — изменить deviation
  3. Нажать влево — переключить 2FSK/GFSK
  4. Найти настройку, которая работает с вашим приёмником

Первый успешный decode — один из самых удовлетворяющих моментов проекта. Сигнал был настолько нестандартным, что странно, что он вообще декодировался.


Заключение

Это экспериментальный проект, но он работает. Flipper Zero с чипом CC1101 может передавать APRS-пакеты на частотах 70 см диапазона. Успех декодирования зависит от приёмника, но для радиолюбителей с подходящим оборудованием это отличный способ использовать Flipper Zero необычным образом.

GitHub: yo3gnd/flipper-zero-aprs-tx

Автор: Richard YO3GND

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

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