Skip to content

Stream 20 MS/s to SDR++

libiio carries about 10 MS/s for one receiver over the network. The Fast TCP transport carries 20 MS/s, using 8-bit samples from zc-stream on the board. It needs the patched SDR++ and the Debian root (firmware-modern/), which has systemd and a compiler.

Inside the board, the AD9361 feeds zc-stream on ports 5555 (RX1) and 5556 (RX2), which sends 8-bit samples to SDR++ on the PC. SDR++ sends tuning, gain, rate and RX port to iiod on port 30431, which sets the AD9361. Inside the board, the AD9361 feeds zc-stream on ports 5555 (RX1) and 5556 (RX2), which sends 8-bit samples to SDR++ on the PC. SDR++ sends tuning, gain, rate and RX port to iiod on port 30431, which sets the AD9361.

  1. Once: build and install zc-stream on the board as a service. It then starts at every boot and waits, idle, for SDR++.

    # run from: the repo root, on your PC
    scp -r tools/stream-paths/zc-stream root@192.168.2.1:
    
    # run from: the board, in ~/zc-stream
    apt install gcc make libiio-dev
    make && make install
    systemctl enable --now zc-stream
    
  2. In SDR++, stop, set Transport to Fast TCP, 8-bit (zc-stream), pick a rate up to 20 MHz, and play. Leave zc-stream port at 5555: RX1 comes from port 5555 and RX2 from 5556.

What it costs
dynamic range about 48 dB between the strongest and weakest signal you can see at once, instead of 72 dB. Set the gain so the strongest signal is near the top
the network only it needs the board's address (an ip: device); over USB, use libiio
one program receives at a time another program that tries to stream is refused with "Device or resource busy"
up to 20 MS/s pick 19 MS/s when every sample counts

You should see: a live view up to 20 MHz wide, as here across the FM band:

SDR++ at 20 MS/s through zc-stream: 88 to 108 MHz live, centred on 98 MHz, with FM stations near 90.4, 95.7, 98.6, 101.5, 102.1 and 104.7 MHz in the spectrum and waterfall.

The costs in full, and the measurements: SDR++ · faster streaming.