APRS iGate разом із webSDR-приймачем
Архівний запис.
Примітка (2026): webSDR-приймач sdr.ur5zhf.com давно відключений, адреса більше не відкривається. Пост лишаю як архів налаштування.
У Миколаєві тоді працював webSDR-приймач 2-метрового діапазону на sdr.ur5zhf.com. Він працював на застосунку OpenWebRX. Подробиці налаштування є на сайті з вихідним кодом: https://github.com/simonyiszk/openwebrx
Мене ж цікавить, як використати один SDR-приймач для різних задач і не зупиняти при цьому webSDR-сайт. Сьогодні спробуємо зробити APRS iGate.
На щастя, хлопці з OpenWebRX усе зробили правильно: застосунок має мікросервісну архітектуру. Якщо коротко, програма запускає сервер, який підключається до SDR-приймача через USB і за допомогою netcat віддає сирі дані на адресі 127.0.0.1:4951. Потім для кожного клієнта відкривається нове з’єднання, у якому потік декодується в аудіосигнал.
Серверна частина — це bash-команда, яка слухає порт 4951 на локальній адресі.
Клієнтська частина складніша:
nc -v 127.0.0.1 4951 | csdr convert_u8_f | csdr shift_addition_cc --fifo /tmp/openwebrx_pipe_140160755639360_shift_pipe | csdr fir_decimate_cc 181 0.000828675 HAMMING | csdr bandpass_fir_fft_cc --fifo /tmp/openwebrx_pipe_140160755639360_bpf_pipe 0.0289618970043 HAMMING | csdr squelch_and_smeter_cc --fifo /tmp/openwebrx_pipe_140160755639360_squelch_pipe --outfifo /tmp/openwebrx_pipe_140160755639360_smeter_pipe 5 1 | csdr fmdemod_quadri_cf | csdr limit_ff | csdr old_fractional_decimator_ff 1.00217687075 | csdr deemphasis_nfm_ff 11025 | csdr fastagc_ff 1024 | csdr convert_f_s16 | csdr encode_ima_adpcm_i16_u8
Але принцип простий: nc -v 127.0.0.1 4951 відкриває з’єднання з локальною адресою, а далі через pipe задаються фільтри для DSP-бібліотеки, яка декодує сирі дані. Подробиці про команди є за адресою https://github.com/simonyiszk/csdr
Нам залишається написати команду, яка так само підключиться до сервера з сирими даними, перетворить усе на NFM-аудіо і передасть далі програмі для роботи з APRS. У нашому випадку це DireWolf.
Але спершу треба створити файл sdr.conf, з якого direwolf братиме конфігурацію. Я зберіг його в домашній теці:
#
# Sample configuration for SDR read-only IGate. #
# We might not have an audio output device so set to null.
# We will override the input half on the command line. ADEVICE null null
ADEVICE stdin null
ADEVICE - null
CHANNEL 0
# Put your callsign in place of xxx below.
MYCALL YOUR_CALL
# Pick appropriate servers for your geographical region. #
# noam.aprs2.net
# soam.aprs2.net
# euro.aprs2.net
# asia.aprs2.net
# aunz.aprs2.net
#
# Change the following line if you are not in North America.
IGSERVER euro.aprs2.net
# You also need to specify your login name and passcode.
# This is the same passcode you would use with any other IGate # application. Contact the author if you can't figure out
# how to generate the passcode.
IGLOGIN YOUR_CALL 123456
# That's all you need for a receive only IGate which relays
# messages from the local radio channel to the global servers.
А ось команда, яка слухатиме ефір і передаватиме APRS-трафік в інтернет:
nc -v 127.0.0.1 4951 | csdr convert_u8_f | csdr shift_addition_cc 0.1 | csdr fir_decimate_cc 181 0.000828675 HAMMING | csdr fmdemod_quadri_cf | csdr limit_ff | csdr deemphasis_nfm_ff 11025 | csdr fastagc_ff | csdr convert_f_s16 | direwolf -c sdr.conf -r 11025 -D 1 -
Запуск DireWolf
Тепер можна передавати APRS-маячок з радіостанції в машині на частоті 144.800 МГц і бачити таку картинку на http://aprs.fi або в будь-якому іншому сервісі моніторингу APRS-пакетів.