RTL-SDR als 'Spektrum-Analysator'
veröffentlicht am 23.06.2024 mit 949 Worten - Lesezeit: 5 Minute(n) in * MEDIEN * PROGRAMME *
Inhaltsverzeichnis
Seit einem knappen Jahr nutze ich gelegentlich einen kleinen SDR (Software Defined Radio) USB-Stick-Empfänger, mehr dazu habe ich in meinen Artikeln zu DAB-Empfang und sonstigen Funkdiensten beschrieben.
Da kam die Anfrage auf mich zu, bei der Umstellung von herkömmlichem Kabelfernsehen auf Glasfaser zu unterstützen. Da in dem Haushalt kein Internet benötigt wird, soll der reine Kabel-Fernseh-Vertrag des Anbieters genutzt werden.
- FTTH-Anschluss
genexis G2120B FiberTwist–Series
Dazu wurden seitens des Anbieters zwei Boxen an die Wand geschraubt, die aus dem Glasfaser-Signal ein für den Fernseher “verdauliches” Antennensignal erzeugen - und es wäre nun schon nett, wenn man am Tag der Umstellung einfach feststellen könnte, ob und welches Signal da nun rauskommt … also habe ich mich etwas umgesehen und bin auf das nachfolgend beschriebene Programm gestoßen.
Programm und Einrichtung
Das Programm ‘Spektrum’
Ich verwende hier das Programm Spektrum von Pavel Šorejs. Es handelt sich um eine Java-Software, die man im verlinkten Github-Repository als Archiv herunterladen kann.
Als Hauptvorteil wird genannt, daß die Software Sweeps über einen großen Frequenzbereich durchführen kann. - genau deshalb möchte ich das auch verwenden. Einstellbar ist der Bereich 24 - 1800MHz, damit ist der Empfangsbereich des Sticks abgedeckt.
Vorbereitung
Zunächst wird der USB-Stick angeschlossen.
Ein einfaches lsusb
zeigt, daß er vorhanden ist.
~$ lsusb
Bus 003 Device 003: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T
Als nächstes wird das heruntergeladene Archiv entpackt auf dem Rechner, ich nutze das Verzeichnis /bin
im Home-Verzeichnis des angemeldeten Benutzers. Sodann wird in dem dort entpackten Verzeichnis spektrum
ein Terminal geöffnet und dort ausgeführt:
~/bin/spektrum$ ./spektrum
Es erscheint ein Auswahlfenster, mit dem (falls mehrere vorhanden sind) der gewünschte Empfänger ausgewählt werden kann:
Und danach kommt dann diese unschöne Meldung:
Das Terminal liefert unterdessen diese Ausgaben:
~/bin/spektrum$ ./spektrum
Loading libs from /home/{benutzername}/bin/spektrum/lib.
Library rtlsdr file /home/{benutzername}/bin/spektrum/lib/librtlsdr.so.
Library rtlpower file /home/{benutzername}/bin/spektrum/lib/librtlpower.so.
Generic RTL2832U OEM: 00000001
ControlP5 2.2.6 infos, comments, questions at http://www.sojamo.de/libraries/controlP5
Reached end of setup.
Loading libs from /home/{benutzername}/bin/spektrum/lib.
Library rtlsdr file /home/{benutzername}/bin/spektrum/lib/librtlsdr.so.
Library rtlpower file /home/{benutzername}/bin/spektrum/lib/librtlpower.so.
Kernel driver is active, or device is claimed by second instance of librtlsdr.
In the first case, please either detach or blacklist the kernel module
(dvb_usb_rtl28xxu), or enable automatic detaching at compile time.
usb_claim_interface error -6
File config.csv
/home/{benutzername}/bin/spektrum/config.csv
File config.csv exists.
Reached end of makeconfig
loadConfig: Config table config.csv loaded.
startFreq = 167363020 stopFreq = 227695600 binStep = 20000
scaleMin = -32 scaleMax = -32 rfGain = 0
fullRangeMin = 24000000 fullRangeMax = 1800000000
ifOffset = 0 ifType = 0
deviceDropdown
In den Meldungen wird moniert, daß entweder das Kernelmodul dvb_usb_rtl28xxu
oder eine andere Software den Zugriff auf die Empfängerhardware blockiert.
Der Befehl lsmod
zeigt: ersteres ist richtig:
~/bin/spektrum$ lsmod
Module Size Used by
(...)
rtl2832 32768 1
i2c_mux 16384 1 rtl2832
dvb_usb_rtl28xxu 45056 1
dvb_usb_v2 53248 1 dvb_usb_rtl28xxu
(...)
Unter einem Kernelmodul versteht man im Allgemeinen einen Teil bzw. eine Erweiterung des Kernels. So sind z.B. alle Hardwaretreiber (z.B. WLAN-Karte, Soundkarte…) als Modul angelegt. Und was hat es jetzt spezifisch mit diesem Modul dvb_usb_rtl28xxu
auf sich?
~# modinfo dvb_usb_rtl28xxu filename: /lib/modules/6.1.0-21-amd64/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-rtl28xxu.ko license: GPL author: Thomas Mair <thomas.mair86@googlemail.com> author: Antti Palosaari <crope@iki.fi> description: Realtek RTL28xxU DVB USB driver (...)
Es handelt sich also um einen USB-Treiber für den DVB-Stick. Ob der nun spezifisch dafür benötigt wird, wenn der Stick direkt als DVB-Empfänger genutzt wird, das kann ich nicht sagen. DVB-T gibt es nicht mehr, und DVB-T2 kann das Teil nicht.
Der Entwickler schreibt jedenfalls, daß man dieses Kernel-Modul stilllegen soll. Dies geschieht, indem man mit root-Rechten im Verzeichnis /etc/modprobe.d
eine Datei rtl-sdr-blacklist.conf
anlegt und den Inhalt
blacklist dvb_usb_rtl28xxu
hineinschreibt.
Um nun dem “normalen User” den Zugriff auf den Stick zu ermöglichen, wird auf die gleiche Weise im Verzeichnis /etc/udev/rules.d
eine Datei 20.rtlsdr.rules
angelegt mit dem Inhalt
SUBSYSTEM=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="2838", GROUP="adm", MODE="0666"
Soweit sind die Vorbereitungen abgeschlossen, und ein
~/bin/spektrum$ ./spektrum
startet wie erwartet das Programm. Alternativ läßt sich auch ein Starter für den Desktop erstellen:
Der Praxistest
Geht noch alles?
Nachdem der “originäre Kernel-Treiber” ja deaktiviert wurde durch die beschriebenen Aktionen, lautete die erste Frage: Funktionieren meine bisher genutzten Programme welle.io und gqrx noch?
Antwort: ja, sowohl als auch.
Dieser Art beruhigt konnte ich mich daran machen, mit dem neuen Programm ein bißchen herumzuspielen, nachfolgend zwei einfache Beispiele:
Erste spektrale Übersicht
Nachdem welle.io ja so schöne DAB-Stationen spielt, wollte ich mal sehen, wie diese über das Band verteilt sind - und wie die Empfangsstärken aussehen relativ zueinander:
Kanal | Frequenz | Multiplex | Sender |
---|---|---|---|
5C | 178,352 MHz | DR Deutschland | u. a. DLF-Programmen, Schwarzwald- und Klassik-Radio … |
9B | 204,640 MHz | D2-MUX “Antenne DE” | Absolut… -Programme, RTL, Oldie-Antenne, 80er- und 90er-Hitradios u. a. |
9D | 208,064 MHz | SWR BW N(ord) | baden-württembergische Programme des SWR |
11B | 218,640 MHz | OAS BW (privat) | Seefunk, Radio 7, Radio Regenbogen, bigFM u. a. |
Noch ein Beispiel
In der Gesamtübersicht (maximale Bandbreite, 24 - 1800 MHz) taucht noch ein weiteres Signalbündel auf, das etwas herangezoomt so aussieht:
Hier handelt es sich um die noch verbliebenen terrestrischen Fernsehsender in der Umgebung (DVB-T2):
Sender | Kanal | Frequenz |
---|---|---|
Pforzheim (Langenbrand) | 21 | 474 MHz |
Pforzheim (Langenbrand) | 24 | 498 MHz |
Pforzheim (Langenbrand) | 27 | 522 MHz |
Pforzheim (Langenbrand) | 33 | 570 MHz |
Pforzheim (Langenbrand) | 35 | 586 MHz |
Karlsruhe (Grünwettersbach) | 41 | 634 MHz |
Pforzheim (Langenbrand) | 44 | 658 MHz |
Anmerkung: Die als ‘Pforzheim (Langenbrand)’ gekennzeichneten Frequenzen auf den Kanälen 21, 24, 27, 35 und 44 werden von beiden Standorten ausgestrahlt, der Kanal 33 ausschließlich von Pforzheim (Langenbrand) und Kanal 41 ausschließlich von Karlsruhe (Grünwettersbach), beide strahlen wohl das ZDF aus.
Und wie ist das nun mit dem Kabelfernsehen?
Hier zum Abschluss noch der Plot, der sich am Ausgang der beiden oben gezeigten Kästchen zur Wandlung aus Glasfaser zum normalen Kabelfernseh-Signal ergibt:
Das sieht gut aus - sehr gleichmäßiger Pegel über das Spektrum. Und der Fernseher hat nach Suchlauf auch die bekannten Programme alle schön wieder gefunden 😄.
weitere Artikel
- Media-PC als (Rund-)Funk-Scanner
- Media-PC: Der Empfang von DAB-Sendern
- Sound-Optimierung für meinen Linux-Media-PC - Teil 2
- Sound-Optimierung für meinen Linux-Media-PC
- Mediencenter-PC mit VDR und Kodi unter Debian Linux