Запис радіоефіру з SDR-приймача у файл

1 хв читання

Архівний запис.

Продовжуючи тему багатофункціонального використання SDR-приймача на базі OpenWebRX, хочу поділитися рецептом запису ефіру у файл.

Щоб записати ефір із сирого потоку SDR-приймача, потрібно виконати команду:

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 | sox -r 44100 -e unsigned -b 8 -c 1 -t raw  - /tmp/hmm.ogg

Тут зсув csdr shift_addition_cc 0.1 вказує на частоту 144.800 МГц.

Зсув розраховується так:

csdr shift_addition_cc `python -c "print float(145000000-145350000)/2000000"`
де:
145000000 - центральна частота,
145350000 - потрібна частота,
2000000 - ширина смуги

Якщо прослухати файл /tmp/hmm.ogg, то почуємо шуми, бо шумодав не ввімкнено.

Дані S-метра записуються у fifo /tmp/record_smeter_pipe, і на основі цих значень ми обираємо рівень шумодава та записуємо його у fifo /tmp/record_squelch_pipe.

Тут є тонкість. Запис не почнеться, доки ми не запишемо дані у fifo

echo "0" > /tmp/record_squelch_pipe

і не почнемо читати дані S-метра в окремому потоці

cat /tmp/record_smeter_pipe

До речі, створювати fifo-pipe потрібно так:

mkfifo /tmp/record_squelch_pipe
mkfifo /tmp/record_smeter_pipe

Проблема з читанням після вибору значення шумодава (у мене це 0.0005) вирішується перенаправленням потоку --outfifo /dev/null. А от значення шумодава потрібно записати до виклику команди запису. Робимо так: echo "0.0005" > /tmp/record_squelch_pipe

echo "0.0005" > /tmp/record_squelch_pipe
nc -v 127.0.0.1 4951 | csdr convert_u8_f | csdr shift_addition_cc -0.25 | csdr fir_decimate_cc 181 0.000828675 HAMMING  | csdr squelch_and_smeter_cc --fifo /tmp/record_squelch_pipe --outfifo /dev/null  5 1 | csdr fmdemod_quadri_cf | csdr limit_ff | csdr deemphasis_nfm_ff 11025 | csdr fastagc_ff | csdr convert_f_s16 | sox -r 11025 -e signed -b 16 -c 1 -t raw  - /tmp/hmm_sq.wav

От і все: тепер у файлі /tmp/hmm_sq.wav буде запис ефіру без шумів.

РадіоSDRСкрипти й автоматизація