Network SDR Decoding Instructions - pavolgaj/radiosonde_auto_rx GitHub Wiki

Ever wanted to decode all the sondes your station can see, simultaneously? With the new Network SDR support (Currently SpyServer only, though we plan to add support for the KA9Q server) in radiosonde_auto_rx v1.6.0, this is now possible!

However, some caveats:

  • It uses a lot of CPU. You will need to be using a RPi 4 at minimum, running Raspbian 64-bit.
    • If using a RPi4, you will need active cooling, else your RPi will overheat and under-clock very quickly, causing things to break. (This is true for a RPi4 in general however...)
    • If you have an old Intel CPU machine around (i3, i5, etc), then that will probably perform better than any RPi.
  • Scanning is currently quite slow, due to the long time it takes spyserver_client to connect. (... however you'll now have a 'virtual SDR' dedicated to scanning continuously, so this isn't really a problem)
  • The web interface still needs a bit of work to display many receivers nicely.
  • There are known issues with SpyServer refusing connections after some time (can be days to weeks of operation... or not happen at all). This may be due to USB bus bandwidth issues, to try and have the AirSpy on its own USB bus, or on a USB 3 port where possible.

Currently auto_rx only supports connecting to a SpyServer instance. I am not entirely happy about this - SpyServer is closed source, and while there are open source implementations of the protocol, we are still subject to the developers whims, particularly in regard to what SDRs are supported. Phil Karn (KA9Q) has made significant development on a fully open source network SDR server which auto_rx should hopefully support eventually.

Acknowledgements

Big thanks to the following people for making this possible:

Hardware

  • One Airspy Mini (Airspy R2 is also known to work, though will use more CPU). Currently we only support connecting to one backend server, so you need to provide the frequency coverage you need with a single SDR.
  • An Antenna (and maybe a preamp?) - I'm hoping you've already had a radiosonde_auto_rx station running, so you have some idea on what is required here!
  • At the bare minimum, a Raspberry Pi 4, or similar class of SBC (or a faster Intel machine).
    • I highly recommend running the 64-bit version of Raspbian.

Notes on Receive Bandwidth & Coverage

Pretty much all SDRs have a usable receive bandwidth which is smaller than the sample rate in use, due to passband filter rolloff. Typically, about 80% of the sample rate is usable. E.g. for a 6 MHz sample rate (the Airspy Mini's maximum), 4.8 MHz is usable. For an Airspy R2, 8 MHz.

So, this means that a Airspy Mini will not be able to cover the entirety of the 400-406 MHz radiosonde band. You will need to pick a centre frequency such that the frequency range covered is suitable for your area. Some examples:

  • 402.5 MHz Centre = 400.1 - 404.9 MHz centre (Suitable for use in Australia where sondes are generally found in 400-403 MHz)
  • 403 MHz Centre = 400.6 - 405.4 MHz

An Airspy R2, however will cover the entire band.

The min_freq and max_freq configuration settings must be set to either be the same as these band edges, or 'inside' them. While the scan plot on the web interface will show the entire SDR bandwidth, any peaks outside the range min_freq to max_freq will be dropped.

Setup - radiosonde_auto_rx

SpyServer support is now available in the main branch of auto_rx (as of v1.6.0).

Optional - auto_rx testing branch

If you want to keep up with the absolute latest changes, you can also use the testing branch as follows: If using the Docker install method, replace 'latest' with 'testing' when using the docker run command.

e.g.:

docker run \
  -d \
  --name radiosonde_auto_rx \
  --restart="always" \
  --device=/dev/bus/usb \
  --network=host \
  -v ~/radiosonde_auto_rx/station.cfg:/opt/auto_rx/station.cfg:ro \
  -v ~/radiosonde_auto_rx/log/:/opt/auto_rx/log/ \
  ghcr.io/projecthorus/radiosonde_auto_rx:testing

If installing the 'long' way, use the testing branch when getting the source:

git clone https://github.com/projecthorus/radiosonde_auto_rx.git
cd radiosonde_auto_rx
git checkout testing

Setup - Airspy SpyServer

AirSpy SpyServer

This guide (in particular Sections 3, 4 and 5) are a good introduction to setting up a SpyServer. If running 64-bit Raspbian (recommended!), use the ARM64 version of SpyServer, available here: https://airspy.com/downloads/spyserver-arm64.tgz

Note that the SpyServer software does not necessarily need to be run on the same host as radiosonde_auto_rx.

The following configuration settings in spyserver.config should be set as per the following notes:

  • maximum_clients = 20
  • allow_control = 0 (This one is important! If this is set to 1, auto_rx will eventually error out.)
  • initial_frequency = 403000000 (This will result in coverage from 400.1 to 404.9 MHz with a Airspy Mini)
  • initial_gain is a difficult one to set correctly without feedback. For an Airspy Mini / R2, start at 17, but test using a SpyServer client and see what gain works best for your situation (note that you will need to set allow_control back to 1 for the client to be able to change gains)
  • The following FFT settings will help reduce CPU usage:
    • fft_fps = 5
    • fft_bin_bits = 14 (Results in ~300 Hz bin bandwidth)

Once setup, confirm you can access the SpyServer using a client like SDR# or SDR++.

SpyServer Client

spyserver_client needs to be complied and copied into auto_rx directory.

If you are using the docker install method, then this doesn't need to be done, as the docker image already includes spyserver_client.

sudo apt-get install libsamplerate0-dev
git clone https://github.com/miweber67/spyserver_client
cd spyserver_client
make
cp ss_client ~/radiosonde_auto_rx/auto_rx/ss_iq
cp ss_client ~/radiosonde_auto_rx/auto_rx/ss_power

Configuration

Use the station.cfg.example.network file as a starting point.

  • sdr_type to SpyServer
  • sdr_quantity to maybe 5 to start with. Increase this once you have confidence in you platforms ability to run multiple decoders reliably.
  • Set the Search min/max frequency to be either the same range as your SpyServer will cover, or narrower. Any peaks detected outside of this range will be discarded.

You can also use the always_decode option to start up persistent decoders, if you know the launch site(s) near you are always using the same frequency.

Setup - KA9Q Server

TODO...