Server · RTL-SDR · rtl_tcp · Windows, Linux, Raspberry Pi & Home Assistant

rtltcp.server

Shares one or more RTL-SDR sticks on your network. It behaves just like the well-known rtl_tcp, so SDR++, SDR#, GQRX and Home Radio work without any changes. On top of that, it adds what rtl_tcp is missing: it switches the stick off when nobody is listening, brings it back when it briefly drops out, and tells the client what's going on.

Why does this exist?

An RTL-SDR stick on a Raspberry Pi up in the attic usually gets much better reception than one plugged straight into the TV. The classic rtl_tcp does get the signal onto the network, but it's fragile: if the stick drops out for a moment, the connection is gone, a second client hangs forever, and the stick runs around the clock even when nobody is listening. rtltcp.server is a robust replacement for it.

What it can do

🔌

Drop-in replacement

Same port (1234), same protocol, same commands as rtl_tcp. Existing programs won't notice a difference.

🔄

Auto-reconnect

Stick unplugged or briefly gone? The server finds it again by its serial number, restores frequency and gain, and keeps streaming.

💤

Idle shutdown

With no client connected, the stick goes into standby after 30 seconds (configurable). The next client wakes it up in about a second.

📶

Multiple sticks

Each stick gets its own port (1234, 1235 …) and a name, e.g. “Roof antenna”.

🚦

Clear rules

The first client wins. A second one is disconnected right away and told who is currently listening, instead of hanging forever.

💬

rtltcp_v2 protocol

A backward-compatible extension with clear messages like “USB device lost, reconnecting”. Old clients won't notice a thing.

🔐

Optional login

Users with access to specific sticks, via SCRAM-SHA-256 – the password never travels over the network. On your home network you can do without it.

🖥️

Web interface

Status of every stick, devices, users, settings and logs in your browser – light and dark, on your phone too.

⬆️

Automatic updates

On Windows and Linux, daily at a fixed time, with checksum verification. If someone is listening, it waits.

🧩

Its own driver

RTL2832U and R82xx tuners are driven directly via libusb, without librtlsdr. Slow clients don't hold the stick back.

Download

SystemFileNote
Windows 10/11 ⬇ Installer (.exe) Sets up the Windows service and opens the firewall.
Linux & Raspberry Pi Install script Debian, Ubuntu, Raspberry Pi OS – x64, arm64 and armhf.
Home Assistant Add-on Home Assistant OS and Supervised, with the web interface in the sidebar.

Individual .deb packages, older versions and checksums are available in the repository, and the changes for each version in the changelog.

After installation, the web interface is available at http://<computer>:8080/. Log in the first time with admin / admin; after that you have to set your own password (the default password only works on the local network). On first start, the server adds every stick it finds, the first one on port 1234.

Windows 10/11

  1. Run the installer – download and run rtltcp-server-setup.exe. It asks for the ports (web interface 8080, first stick 1234) and checks that they are free.
  2. The service is running – the installer sets up the Windows service rtltcp.server (starts automatically, restarts on errors) and opens the firewall for private and domain networks.
  3. Driver for the stick – install the WinUSB driver once using Zadig: Options → List All Devices, select “Bulk-In, Interface (Interface 0)” or “RTL2832U”, driver WinUSB.
  4. Open the web interface – via the Start menu (rtltcp.server) or http://localhost:8080/.

Linux & Raspberry Pi

For Debian, Ubuntu and Raspberry Pi OS – on the computer the stick is plugged into:

curl -fsSL https://repository.jaycloud.at/repository/rtltcp.server/linux/release/latest/install.sh | bash

The script asks for the ports, verifies the checksum and installs the right package for x64, arm64 or armhf (32-bit Pi). It sets up the systemd service rtltcp-server (its own user rtltcp, data in /var/lib/rtltcp-server), plus a udev rule for the stick and a blacklist for the DVB-T kernel driver.

Home Assistant

Under Settings → System → About → Installation type you can see which way fits: for Home Assistant OS and Supervised use the add-on, for Container or Core install it directly as described under Linux.

  1. Add the repository – Settings → Add-ons → Add-on Store, top right ⋮ → Repositories, and enter this address:
    https://github.com/JayLo1401/rtltcp.server
  2. Reload the store (⋮ → Check for updates). rtltcp.server (jaycloud) appears at the bottom.
  3. Install – Home Assistant builds the add-on on the device, which takes one to two minutes.
  4. Start – optionally turn on Show in sidebar first.
  5. Open the web interface – Home Assistant takes care of the login. The stick should show up under Status, the first one on port 1234.

More on this, including troubleshooting: Home Assistant guide.

Connecting a client

In SDR++, SDR#, GQRX or Home Radio, enter the server's address (e.g. 192.168.1.10) and port 1234 as an rtl_tcp source. Tip: with a strong transmitter nearby, the automatic gain overdrives the stick – in that case set a fixed gain in the web interface under Devices, e.g. 14.4 dB.

Forgot the admin password? rtltcp-server admin reset resets the login to admin / admin (Linux: sudo -u rtltcp rtltcp-server admin reset --data /var/lib/rtltcp-server, Windows: as administrator in the installation folder).

All configuration fields, the protocol description and the architecture are documented in the README on GitHub.

Supported hardware

TunerStatusExamples
R820T / R820T2✅ testedNooElec NESDR SMArt v5, RTL-SDR Blog V3
R828D⚠️ built in, untestedRTL-SDR Blog V4
E4000, FC0012/13❌ not yetolder DVB-T sticks

Known limitations

License

rtltcp.server is licensed under the PolyForm Noncommercial 1.0.0: free to use and modify for private and non-commercial purposes, including for clubs, schools and non-profit organizations. Selling it, offering it as a paid service or building it into commercial products is not allowed.

libusb (LGPL-2.1) is included under its own license, see THIRD-PARTY-NOTICES.

No warranty

rtltcp.server is a hobby project. The USB driver is self-written – not every stick will work perfectly. If you make the server reachable from the internet, you should turn on the login.