Декодер USP (Спутникс)

satellites/usp_fsk_decoder.grc, режим GMSK USP. Добавлен форком.

Декодирует телеметрию аппаратов «Спутникс» в протоколе USP (Unified SPUTNIX Protocol). Как и Декодер Geoscan, опирается на блоки gr-satellites.

Примечание

Название «Sputnix» встречается только в сообщениях коммитов. В коде, в имени файла и в строке режима используется «USP». В командной строке режим нужно брать в кавычки — в названии есть пробел:

flowgraph_dispatcher --mode "GMSK USP" --baud 9600   

Предупреждение

Требует gr-satellites, не объявленного в зависимостях проекта. См. Установка и сборка.

Отличия от Geoscan

Файлы структурно идентичны — одинаковый набор параметров, одинаковые переменные, одинаковые ответвления водопада, IQ, UDP и аудио. Различий ровно три:

Geoscan

USP

Дефреймер

satellites_geoscan_deframer

satellites_usp_deframer

Порог синхрослова

threshold=6

threshold=8

Срез ФНЧ в контуре несущей

baudrate × 1.75

baudrate × 1.5

Размер кадра

параметр frame_size = 74

не задаётся — определяется протоколом

Всё остальное, включая формулу децимации, тракт аудио и поведение при пустых метаданных, описано на странице Декодер Geoscan и здесь не повторяется.

Параметры

Общий набор (см. flowgraph_dispatcher) плюс baudrate (9600) и rx_freq (435 МГц).

audio_samp_rate = 48000
decimation      = max(4, satnogs.find_decimation(baudrate, 2, audio_samp_rate))

Именно ради этого флоуграфа в формулу добавили нижнюю границу max(4, …) (коммит «Fix decimation for USP»): без неё при некоторых бодрейтах целочисленная децимация decimation // 2 в аудио-тракте обращалась в ноль и флоуграф не запускался.

Частота после доплеровской компенсации — baudrate × decimation.

Тракт декодирования

soapy_source → satnogs_doppler_compensation → doppler_corrected
    → satellites_fsk_demodulator (iq=1, samp_rate = baudrate·decimation)
    → satellites_usp_deframer (threshold=8)
    → zeromq_pub_msg_sink → :zmq_base_port

Порог 8 бит несовпадения выше, чем у Geoscan: синхрослово USP длиннее, и более мягкий порог даёт больше захватов при том же уровне ложных срабатываний.

Формат кадра

Как и у Geoscan — только полезная нагрузка:

{
    "pdu": "…base64…"
}

Дальнейший разбор полей телеметрии — задача принимающей стороны (soniks-network), флоуграф отдаёт кадр как есть.

Отладка

flowgraph_dispatcher --mode "GMSK USP" --baud 9600 --enable-iq-dump=1 \
    --iq-file-path=/tmp/.satnogs/data/iq   

gr_satellites <имя-спутника> --iq --samp_rate <baudrate×decimation> \
    --wavfile /tmp/.satnogs/data/iq_cs16_*.raw

Прочие типовые отказы — Диагностика неисправностей.