Field Guide · concept

Also known as: remote IQ streaming, networked SDR, IQ over network

Network IQ streaming is the practice of shipping an SDR’s baseband IQ samples over a network — TCP or UDP — so the radio can sit in one place and the software decoding it in another.1 It is what lets a dongle live at the antenna on a rooftop Raspberry Pi while the CPU-heavy decoding runs on a server indoors, and it underlies remote receivers, distributed sensor networks, and shared public radios.

radio + ADCdigitize IQ decoder host IQ over TCP/UDP bits/s ≈ rate × 2 × bytes/sample × 8
The radio digitizes IQ at the antenna and streams it to the decoder; wire bandwidth grows directly with sample rate and bit depth.

How it works

At its simplest, network IQ streaming is a socket: the radio end reads samples from the ADC and writes them to a TCP or UDP connection, and the far end reads them back and feeds its DSP. The protocols differ mainly in how much intelligence sits at the radio end:

  • rtl_tcp — the minimal case: raw 8-bit IQ pushed down a TCP socket, with one-byte commands flowing back to retune and set gain. Dumb, universal, full-rate.
  • SpyServer — decimates a client-chosen slice on the server, so only the needed bandwidth crosses the wire; internet-friendly.
  • SoapyRemote — a transparent bridge for any SoapySDR radio, marshalling the whole device API plus the stream.
  • VITA 49 — the professional standard: timestamped, self-describing packets for coherent multi-receiver systems.
  • ZeroMQ — a message-queue transport GNU Radio uses to move IQ between processes or hosts.

The bandwidth math

The cost is unforgiving and easy to compute: bits per second ≈ sample rate × 2 × bytes-per-sample × 8. A 2.4 MS/s RTL stream at 8-bit is 2.4M × 2 × 1 × 8 ≈ 38 Mbit/s — fine on wired Ethernet, marginal on Wi-Fi. Move to a 10 MS/s Airspy at 16-bit and it is 320 Mbit/s, which is why higher-rate radios either decimate server-side or stay on a gigabit LAN. TCP guarantees delivery but a stall shows up as a burst of lag; UDP drops a late packet, which a decoder sees as a momentary loss of lock but never as accumulating delay — so real-time streaming often prefers UDP for the bulk samples and TCP for control.

Relevance to SDR

Network IQ streaming is what makes SDR a distributed technology rather than a desktop one. It separates the two things that want to be in different places: the antenna, which wants a short low-loss feedline and a clear sky, and the compute, which wants power, cooling, and a keyboard. It underpins headless receivers, remote monitoring, KiwiSDR/WebSDR-style shared radios, and phased sensor arrays.

GopherTrunk fits this model as a decoder that can sit at the compute end of the link: it accepts a remote raw-IQ source (an rtl_tcp-style server) exactly as it would a local dongle, so the radio can live at the mast while GopherTrunk runs its trunking DSP on a capable host. Just as importantly, the offline analogue of streaming — recording the IQ to a file and replaying it — is central to GopherTrunk: a capture replayed through the same production pipeline reproduces an on-air decode bit-for-bit, sidestepping the network entirely when the goal is a debuggable, repeatable test rather than a live feed.

Sources

  1. rtl-sdr (osmocom) — the Osmocom project wiki, home of rtl_tcp, the archetypal raw network-IQ server and its command protocol. 

See also