Field Guide · technology

Also known as: rtl_tcp

rtl_tcp is a small server that streams raw IQ samples from an RTL-SDR over a TCP connection, letting the dongle be used from another machine on the network.1 It is part of the Osmocom rtl-sdr toolset and is the simplest, oldest way to put physical distance between the radio and the software decoding it.

Pi + donglertl_tcp server GopherTrunk IQ over TCP
rtl_tcp streams IQ over the network, so the dongle can sit at the antenna while decoding runs elsewhere.

How it works

You launch rtl_tcp -a <address> -p <port> on the host that has the dongle. It opens the RTL-SDR, sets a default centre frequency and sample rate, and listens for a TCP client. When a client connects, rtl_tcp reads 8-bit unsigned I and Q bytes straight off the RTL2832U and pushes them down the socket as a continuous stream — no compression, no framing beyond the raw byte pairs. In the reverse direction the client sends short command messages (a one-byte command plus a 32-bit value) to retune, change the sample rate, or adjust gain, so the remote radio remains fully controllable. The wire format is deliberately trivial, which is why almost every SDR application — including GQRX, SDR#, and GNU Radio via gr-osmosdr — speaks it.

Two consequences follow from streaming raw 8-bit IQ. First, the bandwidth is fixed by the sample rate: 2.4 MS/s of complex 8-bit samples is about 38 Mbit/s on the wire, so a fast LAN is fine but a constrained link is not. Second, there is no buffering intelligence — a network hiccup shows up as dropped samples, which a decoder sees as a momentary loss of lock. For this reason rtl_tcp is at its best over wired Ethernet or solid Wi-Fi on the same network segment.

Variants and alternatives

  • rtl_tcp — RTL-SDR only, tiny and universal; the default when the radio is a dongle.
  • SoapyRemote — the general-purpose successor: works for any SoapySDR-supported radio (HackRF, Airspy, SDRplay), not just RTL, and exposes the full device API rather than rtl_tcp’s fixed command set.
  • spyserver — Airspy’s optimised network protocol, which can send a decimated slice rather than the whole band to save bandwidth.
  • Vendor tools such as rtl_sdr (file capture) and rtl_fm (built-in FM demod) share the same library but run locally rather than over the network.

In practice

The classic deployment runs rtl_tcp on a Raspberry Pi mounted right at the antenna, keeping the coax run short and its loss low, while the CPU-heavy decoding runs on a desktop or server elsewhere in the building. This is often a better signal path than a long feedline to a centrally located radio, because feedline loss ahead of the SDR is unrecoverable whereas a short digital link after it is essentially lossless.

Relevance to SDR

rtl_tcp is a cornerstone of remote and headless SDR setups and one of the first tools most RTL-SDR users encounter. GopherTrunk can attach to an rtl_tcp (or SoapyRemote) source, treating a remote dongle like a local one — so the antenna, LNA, and dongle can live at the mast while GopherTrunk decodes the trunking traffic on a machine with the horsepower to run its DSP chain.

Sources

  1. rtl-sdr (osmocom) — the Osmocom rtl-sdr project wiki, home of rtl_tcp and the RTL-SDR driver tools. 

See also