Радиолюбители давно используют 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)

Некоторые аппаратные декодеры испытывают трудности, но программные (direwolf, qtmm) справляются неплохо. Даже UV878 декодирует сигнал.
Как это работает
Приложение flipper-zero-aprs-tx использует Sub-GHz модуль Flipper Zero и программную эмуляцию APRS. Автор описывает это как «намеренно грубый FSK-hack, притворяющийся FM».
Что умеет передавать:
- APRS-сообщения
- Статусные пакеты
- Бюллетени
- Фиксированные позиционные пакеты (координаты)
Можно настроить:
- Частота ( ISM band )
- Deviation (отклонение частоты)
- 2FSK / GFSK режим
- Записная книжка с позывными
- Параметры радио

Технические детали
Протокол 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 (одна строка на позывной).
Если не работает
- Включить debug mode
- Нажать вверх/вниз — изменить deviation
- Нажать влево — переключить 2FSK/GFSK
- Найти настройку, которая работает с вашим приёмником
Первый успешный decode — один из самых удовлетворяющих моментов проекта. Сигнал был настолько нестандартным, что странно, что он вообще декодировался.
Заключение
Это экспериментальный проект, но он работает. Flipper Zero с чипом CC1101 может передавать APRS-пакеты на частотах 70 см диапазона. Успех декодирования зависит от приёмника, но для радиолюбителей с подходящим оборудованием это отличный способ использовать Flipper Zero необычным образом.
GitHub: yo3gnd/flipper-zero-aprs-tx
Автор: Richard YO3GND
