rtltcp.server
Stellt einen oder mehrere RTL-SDR-Sticks im Netzwerk bereit. Er verhält sich wie das bekannte rtl_tcp,
deshalb funktionieren SDR++, SDR#, GQRX und Home Radio ohne Änderung. Dazu kommt, was
rtl_tcp fehlt: Er schaltet den Stick ab, wenn niemand zuhört, holt ihn zurück, wenn er kurz weg war,
und sagt dem Client, was los ist.
Warum gibt es das?
Ein RTL-SDR-Stick am Raspberry Pi unterm Dach empfängt meist viel besser als einer direkt am Fernseher. Das klassische
rtl_tcp bringt das Signal zwar ins Netz, ist aber empfindlich: Fällt der Stick kurz aus, ist die Verbindung
weg, ein zweiter Client hängt ewig, und der Stick läuft rund um die Uhr, auch wenn niemand zuhört.
rtltcp.server ist ein robuster Ersatz dafür.
Was es kann
Drop-in-Ersatz
Gleicher Port (1234), gleiches Protokoll, gleiche Befehle wie rtl_tcp. Bestehende Programme merken keinen Unterschied.
Auto-Reconnect
Stick abgesteckt oder kurz weg? Der Server findet ihn über die Seriennummer wieder, stellt Frequenz und Gain neu ein und streamt weiter.
Idle-Abschaltung
Ohne Client geht der Stick nach 30 Sekunden (einstellbar) in Standby. Der nächste Client weckt ihn in rund einer Sekunde.
Mehrere Sticks
Jeder Stick bekommt einen eigenen Port (1234, 1235 …) und einen Namen, z. B. „Dach-Antenne“.
Klare Regeln
Der erste Client gewinnt. Ein zweiter wird sofort getrennt und erfährt, wer gerade zuhört, statt ewig zu hängen.
Protokoll rtltcp_v2
Abwärtskompatible Erweiterung mit klaren Meldungen wie „USB device lost, reconnecting“. Alte Clients merken davon nichts.
Optionale Anmeldung
Benutzer mit Zugriff auf bestimmte Sticks, per SCRAM-SHA-256 – das Passwort geht nie über das Netz. Im Heimnetz geht es ohne.
Weboberfläche
Status jedes Sticks, Geräte, Benutzer, Einstellungen und Logs im Browser – hell und dunkel, auch am Handy.
Automatische Updates
Unter Windows und Linux täglich zu einer festen Uhrzeit, mit Prüfsumme. Hört gerade jemand zu, wird gewartet.
Eigener Treiber
RTL2832U und R82xx-Tuner werden direkt über libusb angesprochen, ohne librtlsdr. Langsame Clients bremsen den Stick nicht.
Download
| System | Datei | Hinweis |
|---|---|---|
| Windows 10/11 | ⬇ Installer (.exe) | Richtet den Windows-Dienst ein und öffnet die Firewall. |
| Linux & Raspberry Pi | Installationsskript | Debian, Ubuntu, Raspberry Pi OS – x64, arm64 und armhf. |
| Home Assistant | Add-on | Home Assistant OS und Supervised, mit Weboberfläche in der Seitenleiste. |
Einzelne .deb-Pakete, ältere Versionen und Prüfsummen gibt es im
Repository, die Änderungen je Version im
Changelog.
Nach der Installation ist die Weboberfläche unter http://<rechner>:8080/ erreichbar. Erste Anmeldung
mit admin / admin, danach muss ein eigenes Passwort gesetzt werden (das Standardpasswort gilt
nur im lokalen Netz). Beim ersten Start trägt der Server jeden gefundenen Stick ein, den ersten auf Port
1234.
Windows 10/11
- Installer starten – rtltcp-server-setup.exe herunterladen und ausführen. Er fragt die Ports ab (Weboberfläche 8080, erster Stick 1234) und prüft, ob sie frei sind.
- Dienst läuft – der Installer richtet den Windows-Dienst rtltcp.server ein (startet automatisch, Neustart bei Fehlern) und öffnet die Firewall für private und Domänen-Netze.
- Treiber für den Stick – einmalig mit Zadig den WinUSB-Treiber installieren: Options → List All Devices, „Bulk-In, Interface (Interface 0)“ bzw. „RTL2832U“ wählen, Treiber WinUSB.
- Weboberfläche öffnen – über das Startmenü (rtltcp.server) oder
http://localhost:8080/.
Linux & Raspberry Pi
Für Debian, Ubuntu und Raspberry Pi OS – auf dem Rechner, an dem der Stick hängt:
curl -fsSL https://repository.jaycloud.at/repository/rtltcp.server/linux/release/latest/install.sh | bash
Das Skript fragt die Ports ab, prüft die Prüfsumme und installiert das passende Paket für x64, arm64 oder armhf
(32-bit Pi). Es richtet den systemd-Dienst rtltcp-server ein (eigener Benutzer rtltcp, Daten in
/var/lib/rtltcp-server), dazu eine udev-Regel für den Stick und eine Sperre für den DVB-T-Kerneltreiber.
- Aktualisieren: derselbe Befehl – die Einstellungen bleiben erhalten.
- Ohne Rückfragen:
curl … | RTLTCP_WEB_PORT=8080 RTLTCP_STREAM_PORT=1234 bash - Ports später ändern:
/etc/default/rtltcp-serverbearbeiten, dannsudo systemctl restart rtltcp-server.
Home Assistant
Unter Einstellungen → System → Info → Installationsart steht, welcher Weg passt: Bei Home Assistant OS und Supervised das Add-on, bei Container oder Core direkt installieren wie unter Linux.
- Repository hinzufügen – Einstellungen → Add-ons → Add-on Store, oben rechts ⋮ → Repositories und
diese Adresse eintragen:
https://github.com/JayLo1401/rtltcp.server - Store neu laden (⋮ → Nach Updates suchen). Unten erscheint rtltcp.server (jaycloud).
- Installieren – Home Assistant baut das Add-on auf dem Gerät, das dauert ein bis zwei Minuten.
- Starten – optional vorher In Seitenleiste anzeigen einschalten.
- Weboberfläche öffnen – die Anmeldung übernimmt Home Assistant. Unter Status sollte der Stick erscheinen,
der erste auf Port
1234.
- Updates bietet Home Assistant nach jedem neuen Release beim Add-on an.
- Ein Stick kann nur von einem Programm benutzt werden. Nutzt schon ein anderes Add-on den Stick (rtl_433, RTLSDR-Airband …), braucht rtltcp.server einen eigenen.
- Die Weboberfläche ist zusätzlich unter
http://<home-assistant>:8099/mit eigenem Login erreichbar. Die Einstellungen sind Teil der Home-Assistant-Backups.
Mehr dazu, inklusive Fehlersuche: Anleitung Home Assistant.
Client verbinden
In SDR++, SDR#, GQRX oder Home Radio als rtl_tcp-Quelle die Adresse des Servers
(z. B. 192.168.1.10) und Port 1234 eintragen. Tipp: Bei einem starken Sender in der Nähe
übersteuert die automatische Verstärkung – dann in der Weboberfläche unter Geräte einen festen Gain setzen,
z. B. 14,4 dB.
Admin-Passwort vergessen? rtltcp-server admin reset setzt den Login auf admin /
admin zurück (Linux: sudo -u rtltcp rtltcp-server admin reset --data /var/lib/rtltcp-server,
Windows: als Administrator im Installationsordner).
Alle Konfigurationsfelder, die Protokollbeschreibung und der Aufbau stehen im README auf GitHub.
Unterstützte Hardware
| Tuner | Status | Beispiele |
|---|---|---|
| R820T / R820T2 | ✅ getestet | NooElec NESDR SMArt v5, RTL-SDR Blog V3 |
| R828D | ⚠️ eingebaut, ungetestet | RTL-SDR Blog V4 |
| E4000, FC0012/13 | ❌ noch nicht | ältere DVB-T-Sticks |
Bekannte Grenzen
- Kein TLS: Die Anmeldung ist sicher, IQ-Daten und Weboberfläche laufen aber unverschlüsselt. Von außen besser über VPN oder einen Reverse-Proxy mit HTTPS.
- Android wird als Server nicht unterstützt.
- Unter Windows lässt sich ein USB-Port nicht stromlos schalten – der Stick schläft, bleibt aber am Strom.
Lizenz
rtltcp.server steht unter der PolyForm Noncommercial 1.0.0: Für private und nicht-kommerzielle Zwecke frei nutzbar und veränderbar, auch für Vereine, Schulen und gemeinnützige Organisationen. Verkaufen, als bezahlten Dienst anbieten oder in kommerzielle Produkte einbauen ist nicht erlaubt.
Mitgeliefert wird libusb (LGPL-2.1) unter seiner eigenen Lizenz, siehe THIRD-PARTY-NOTICES.
rtltcp.server ist ein Hobbyprojekt. Der USB-Treiber ist selbst geschrieben – nicht jeder Stick wird perfekt funktionieren. Wer den Server aus dem Internet erreichbar macht, sollte die Anmeldung einschalten.