Software defined radio tools and daemons.
Libraries:
- fftw3
- liquid-dsp
- rtl_tcp
- sdl (for scope)
go get github.com/chzchzchz/nicerx/cmd/sdrproxy
go get github.com/chzchzchz/nicerx/cmd/iqpipe
go get github.com/chzchzchz/nicerx/cmd/iqscope
Multiplexes and channelizes SDR data via a RESTful JSON interface.
sdrproxy --bind localhost:12000
View SDRs on system:
curl -v localhost:12000/api/sdr/
Read a radio stream:
curl -v localhost:12000/api/rx/ -d'{"center_hz" : 100000000, "width_hz" : 15000, "radio" : "123"}' -o out.dat
Read a radio stream with hinting to bind SDR to wider bandwidth:
curl -N -v localhost:12000/api/rx/ -d'{"hint_tune_hz" : 100000000, "center_hz" : 1009612000, "width_hz" : 30000, "radio" : "123"}' -o out.dat
FM demodulate a pager signal:
curl ... -o - | cmd/iqpipe/iqpipe fmdemod - - -s 30000 -p 22050 -d 9600 | multimon-ng -
Stream sdrproxy channel to waterfall:
curl -N -v localhost:12000/api/rx/ -d'{"name" : "iqscope", "hint_tune_hz" : 100000000, "center_hz" : 100000000, "width_hz" : 1024000, "radio" : "123"}' -o - | ./iqscope fft -c 100000000 -s 1024000 -R -w 1024 -r 600 -
Open a radio stream and display spectrum with ffmpeg (super slow, use for sanity checking):
curl -N -v localhost:12000/api/rx/ -d'{"name" : "ffplay", "hint_tune_hz" : 100000000, "center_hz" : 100000000, "width_hz" : 1024000, "radio" : "123"}' -o - | \
ffmpeg -f u8 -ar 1024000 -ac 2 -i - \
-lavfi showspectrum="s=1024x480:mode=combined:color=rainbow:overlap=1:slide=scroll:orientation=horizontal" -an -f avi - | \
ffplay -