Запись радио-эфира с SDR-приемника в файл
В продолжение темы многофункционального использования 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```
```bash
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 будет запись эфира без шумов