Ausgabe 1 Software

OpenWebRX auf einem Raspberry Pi

Der Raspberry Pi hat es innerhalb von wenigen Monaten nach seinem Erscheinen geschafft, Massen an Bastlern zu mobilisieren und eigene Projekte umzusetzen. Im Laufe der Zeit haben sich bei mir auch verschiedene Versionen des kleinen Mini-Computers angesammelt und ich habe schon zahlreiche Experimente mit dem kleinen Computer realisiert.
Grade für Funkamateure bietet sich der Mini-Rechner an, denn man kann sehr schnell und ohne großen Aufwand einige nützliche Dinge damit auf die Beine stellen. In Kombination mit einem DVB-T Stick oder einem anderen unterstützten SDR lässt sich innerhalb kurzer Zeit ein eigener Web-SDR Empfänger zusammenstellen.
Lötarbeiten sind dabei nicht erforderlich, die Basteleien finden ausschließlich per Software statt. Mittels Web-SDR kann man dann mit nahezu jedem beliebigen Browser auf die eigene Hardware und Antenne zugreifen – sofern gewünscht auch über das Internet.
Ferner lässt sich so ein offener Zugang zum eigenen SDR-Empfänger auch mit anderen Funkamateuren und Freunden teilen. So ein Projekt macht außerdem auch andere technisch versierte aber unlizensierte Freunde neugierig. Der eine oder andere wird dadurch zum SWL und später vielleicht zum Funkamateur.

Um ein Web-SDR zu realisieren wird ein Raspberry Pi oder ein Computer mit Linux benötigt. Die Softwarelösung, welche die Benutzerschnittstelle als Webseite realisiert nennt sich OpenWebRX. OpenWebRX verwendet die in libcsdr integrierten Demodulatoren und kann AM, FM und SSB Signale demodulieren. Die Anwendung setzt dabei auf HTML5 und nutzt moderne Technologien wie Web-Sockets und die WebAudio API. Prinzipiell läuft die Software auch auf einem Raspberry Pi 1 Modell B. Empfehlenswert ist das jedoch nicht, denn es ist wirklich furchtbar langsam und fast nicht benutzbar. Es sollte also unbedingt ein schnellerer Rechner wie z.B. der Raspberry Pi 2 oder 3 verwendet werden. Ein normaler PC mit Debian Linux oder Ubuntu lässt sich ebenfalls dafür nutzen. Die vorliegende Anleitung konzentriert sich aber auf den Raspberry Pi mit Raspian als Betriebssystem.

Empfänger

Als Empfänger nutzen wir in diesem Tutorial einen DVB-T Stick, wie er bei Funkamateuren häufig als SDR eingesetzt wird. Vor Neuanschaffung eines Sticks, bitte unbedingt auf Kompatibilität achten oder alternativ gleich zum DXPatrol oder ein anderes SDR zurückgreifen. Von OpenWebRX wird neben dem RTL-SDR auch noch der HackRF unterstützt. Die Unterstützung des SDRplay ist in einem experimentellen Stadium verfügbar. Weitere Informationen zu unterstützten Empfängern gibt es im OpenWebRX-Wiki.

Vorbereitung

Vor der eigentlichen Installation sollte sichergestellt sein, dass das Raspian auf dem Raspberry Pi aktuell ist. Zum Aktualisieren des Geräts werden die folgenden beiden Zeilen in der Kommandozeile ausgeführt.

sudo apt-get update
sudo apt-get upgrade

Anschließend werden einige Programme installiert, die zum Kompilieren und späteren Betrieb des Systems notwendig sind.

sudo apt-get install build-essential git libfftw3-dev cmake libusb-1.0-0-dev nmap git

Für die Durchführung dieser Anleitung legen wir uns mit dem Befehl mkdir ~/src ein Arbeitsverzeichnis an und verwenden dies später um die heruntergeladenen Quelldateien abzulegen. Wenn alle Programme korrekt installiert wurden, folgt die Installation des DVB-T Sticks. Raspian bringt zwar bereits einen Treiber für DVB-T Sticks mit. Dieser lässt sich jedoch leider nicht für das geplante Vorhaben verwenden. Der mitgelieferte Treiber wird daher durch Bearbeitung mit einem Editor deaktiviert.

Die folgenden drei Zeilen müssen in der Datei /etc/modprobe.d/raspi-black-
list.conf eingetragen und abgespeichert werden.

blacklist dvb_usb_rtl28xxu
blacklist rtl_2832
blacklist rtl_2830

Bevor der neue Treiber verwendet werden kann, muss zuerst der alte Treiber entfernt werden. Dies erfolgt mit diesem Kommando:

sudo rmmod dvb_usb_rtl28xxu

Sofern hier eine Fehlermeldung erscheint, war der alte Treiber nicht geladen. Die Meldung kann ignoriert werden. Die aktuellen Treiber laden wir direkt aus dem Repository der Entwickler. Anschließend werden die Pakete kompiliert. Dazu müssen die folgenden Kommandos in der Befehlszeile eingegeben werden.

cd ~/src
git clone git://git.osmocom.org/rtl-sdr.git
cd rtl-sdr
mkdir build 
cd build 
cmake ../ -DDETACH_KERNEL_DRIVER=ON -DINSTALL_UDEV_RULES=ON 
make 
sudo make install
sudo ldconfig

Das Kompilieren sollte erfolgreich durchlaufen, wenn die obigen Schritte alle korrekt ausgeführt worden sind. Zum Testen des Sticks und der Bestimmung der möglichen Werte für die Verstärkung (gain) kann der Befehl rtl_test ausführt werden. Wenn die Ausgabe von rtl_test fehlerfrei ist, dann passt alles.

Wenn sich der Befehl rtl_test nicht ohne Root-Rechte, also ohne sudo davor ausführen lässt, dann müssen noch die udev-Regeln installiert werden. Dazu geben wir den Befehl lsusb ein und suchen in der Ausgabe nach unserem DVB-T Stick.

pi@raspberrypi:~/src/openwebrx $ lsusb
Bus 001 Device 005: ID 0bda:2838 Real-
tek Semiconductor Corp. RTL2838 DVB-T

In der Ausgabe befindet sich die Hersteller- sowie die Produkt-ID des von mir verwendeten Sticks. Bitte die zum eigenen Stick ermittelten IDs nach folgendem Schema in die Datei /etc/udev/rules.d/rtl-sdr.rules eintragen.

SUBSYSTEMS=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="2838", MODE:="0666"

Installation von OpenWebRX

Im nächsten Schritt wird OpenWebRX installiert und konfiguriert. Da OpenWebRX auf die Bibliothek libcsdr zurückgreift, muss diese vorher kompiliert und installiert werden. Zunächst mittels cd ~/src wieder in das Arbeitsverzeichnis wechseln. Anschließend wird libcsdr mit den nachfolgenden Kommandos heruntergeladen und kompiliert.

git clone https://github.com/simonyiszk/openwebrx.git
git clone https://github.com/simonyiszk/csdr.git
cd csdr
make
sudo make install

Konfiguration von OpenWebRX

Nachdem OpenWebRX installiert wurde, muss es konfiguriert werden. Die Konfiguration erfolgt in der Textdatei config_webrx.py.

nano ../openwebrx/config_webrx.py

Die Konfigurationsdatei selbst ist umfangreich und ausführlich kommentiert. In der Sektion Serversettings sollte mindestens die Einstellung max_clients auf einen kleineren Wert reduziert werden. Dort wird festgelegt wieviele Nutzer sich gleichzeitig auf die Weboberfläche verbinden dürfen. In den Zeilen 43-58 sind weitere Einstellungen erforderlich, um das Web-SDR an die eigenen Bedürfnisse anzupassen. Dort werden dann Rufzeichen, Standort, Locator, Höhe, Antenne und Empfänger eingetragen.
Außerdem können die Geo-Koordinaten dort hinterlegt werden. Auf der Weboberfläche wird später ein Bild der Region angezeigt. Die Bildhöhe und die Beschreibung des Bildes wird auch in diesen Zeilen konfiguriert. Die Bilddatei kann mittels WinSCP auf den Raspberry Pi übertragen werden. Sie wird unter dem Dateinamen openwebrx-top-photo.jpg im Pfad /home/pi/src/openwebrx/htdocs abgelegt.

In der Sektion DSP/RX settings werden Einstellungen zum SDR hinterlegt. Wichtig ist unter anderem die Mittenfrequenz (center_freq) auf die der Empfänger fest
eingestellt wird. Auch die Samplerate, die Frequenzkorrektur und die Verstärkung kann hier nach den Erfordernissen konfiguriert werden.
Die Konfigurationsdatei ist bereits für DVB-T Sticks vorbereitet. Gestartet wird OpenWebRX mit dem folgenden Befehl.

/home/pi/src/openwebrx/openwebrx.py

Der Webserver den OpenWebRX bereitstellt hört auf der Netzwerkadresse des Raspberry Pi. Mittels Browser kann nun auf das Webinterface unseres SDR zugegriffen werden. Dazu muss die IP-Adresse des Raspberry Pi in der Adresseleiste, gefolgt von einem Doppelpunkt und der dem Port 8073 eingegeben werden.

WebSDR mit anderen teilen

In Kombination mit einem dynamischen DNS-Dienst oder einer dauerhaften festen öffentlichen IP-Adresse kann der OpenWebRX natürlich auch mit Freunden aus dem OV geteilt werden. Dazu muss jedoch eine Portweiterleitung am Router eingerichtet werden. Wer sein OpenWebRX öffentlich über www.sdr.hu teilen möchte, der kann sich auf der Seite www.sdr.hu/register registrieren, um einen eindeutigen Schlüssel zur Identifizierung des SDRs zu bekommen. Dieser kann dann in der Konfigurationsdatei im Bereich sdr.hu listing eingetragen werden.

sdrhu_key = "xxxxxxxxxxxxxxxxx"
sdrhu_public_listing = True

Das schwächste Glied in dieser Konfiguration ist der DVB-T Stick als Empfänger, doch diese Komponente ist verbesserungsfähig oder kann ausgetauscht werden. Das Beispiel macht deutlich was mitttels SDR, kleinen Computern und Vernetzung via Internet oder HAMNET möglich ist.

Ich arbeite in einem IT-Systemhaus und bin überwiegend mit der Administration von Mail-Servern beschäftigt. Derzeit beschäftige mich viel mit VHF/UHF, APRS und HAMNET. Darüber hinaus sammle ich Erfahrungen im Antennenbau.

  1. Marcus, dc5dm

    Hallo Silvio, ein schöner, informativer Beitrag.
    Werde das mal testen, wenn ich Zeit habe 😉
    Im Link zum OpenWebRX-Wiki ist ein Leerzeichen enthalten, so das er auf Gihub zu einem 404-Fehler führt. Und mit “Gegenkoordinaten” sind Geo-Koordinaten gemeint, oder?
    mni 73
    Marcus, dc5dm

  2. Hallo zusammen,

    bei unseren Projekten wir haben wir recht gute Erfahrungen mit SDR-Sticks gemacht die über einen TCXO verfügen (z.B. die Sticks von NooElec wie NESDR Mini2+, Nano2+ oder Smart). Eine Kalibrierung ist damit meistens nicht mehr erforderlich. Zudem sind diese Sticks deutlich temperaturstabiler als herkömmliche SDR-Sticks ohne TCXO.

    Schönen Gruß
    Frank, DL3DCW

  3. Kai - do9kai

    Ich glaube es gibt da ein kleinen Fehler in der Dokumentation. Die Zeile:
    cd build cmake ../ -DDETACH_KERNEL_DRIVER=ON -DINSTALL_UDEV_RULES=ON
    funktioniert so nicht wirklich 😉 Ansonsten lässt sich das wirklich gut nachbauen anhand der Dokumentation.

    Leider aber hat mich openwebrx überhaupt nicht überzeugt.

    Gründe:
    1. Es wird nur Google Chrome als Browser unterstützt. Das wird wahrscheinlich irgendwelche technischen Gründe haben, die aber scheinbar nirgends erläutert sind. Wer (wie ich z.B.) einen anderen Browser nutzt, hat entweder Pech gehabt, oder muss sich einen zweiten Browser installieren (mag für den ein oder anderen Banal klingen, ich finde das trotzdem äusserst unschön!)

    2. Das Wiki auf Github ist bei Problemen nicht wirklich hilfreich.

    3. Es gibt wohl ein Supportforum (Mailingliste genannt). Allerdings nur als geschlossene Benutzergruppe auf Google Groups. Wer aus welchen Gründen auch immer es vorzieht kein Google User sein zu wollen, der hat eben Pech gehabt.

    Ich habe (Stand: 14.03.2014) jedenfalls keine brauchbare Instanz hinbekommen. Jeder Aufruf (mit dem gewünschten Browser) führt dazu, das erstmal kein Wasserfall kommt. Nach gefühlt 2 Minuten, kommt dann doch dieser Wasserfall (in einem rasenden Tempo) und im LOG ist zu sehen: fft overflow bis dann letztendlich ein WebSocket has closed unexpectedly. Please reload the page. erscheint. Ein reload der Page lässt das Spiel nur von vorne beginnen.

    Ich werde nun ein paar Tage noch schauen, ob per git pull evtl. Updates kommen, ansonsten werde ich den Pi einer anderen Funktion zu kommen lassen.

    • Kai - do9kai

      Aber was ich als Ergänzung dazu sagen muss:

      Der Entwickler antwortet wenigstens auf Anfragen in der Group und es scheint ein Programmfehler zu sein, denn er sich in den nächsten Tagen anschauen will. (Wollte ich noch mitteilen! Fairplay muss sein)

      • Kai - do9kai

        OK, nach einem erneuten git pull läuft nun auch openwebrx bei mir.

        Als Ergänzung vielleicht noch ein Link wie man seine Frequenzkorrektur (ppm) ermittelt: https://github.com/simonyiszk/openwebrx/wiki/Correcting-the-frequency-offset

        Das ganze scheint aber recht Clientlastig zu sein. Ich habe zum ersten mal auf meinem Macbook Air (den ich Mitte 2013 gekauft habe und täglich mehrere Stunden im Betrieb habe) festgestellt, das es einen eingebauten Lüfter gibt.

        • Marcus, dc5dm

          Ah ok, ich hatte schon bedenken, da ich beides – Server und Client – am Laptop getestet hatte, ob der Raspi das kann.

          • Kai - do9kai

            Der Raspi kann das, allerdings eine Samplerate von 1 Mhz ist dann schon das Maximum. Bei mehr geht die CPU Last auf dem Raspi sehr hoch, und es kommt sehr Häufig zu Audio Buffer Underrun.

            Ich habe mal zu Testzwecken die PMR Frequenzen laufen lassen. Das geht ganz gut mit der Samplerate. Erstaunlich, neben den Nachbarskindern hört man doch auch oft Leute die dann auch noch erzählen das sie 25 KM weit weg sind … und das mit 500mW 😉

        • Kai - do9kai

          Noch ein Hinweis zu openwebrx-top-photo.jpg
          Der korrekte Path lautet /home/pi/src/openwebrx/htdocs/gfx/

  4. Hi zusammen,

    wie kann ich den die Bandauswahl konfigurieren?
    Auf der sdr.hu Seite kann ich bei jedem Empfänger oben rechts die Bänder auswählen.

    Gruß Markus

  5. Hallo,

    tolle Anleitung, ich bin auch bis zum Schluss durchgekommen, allerdings zeigen die Browser beim Aufruf nur

    Error response
    404
    message response: Invalid path

    Ich habe einen Raspi3 und einen RTL DVB-T-Stick, in der Kommandozeile werden die anfragenden PCs auch angezeigt:

    client 0x1ab31f0: CS_THREAD_FINISHED, client_goto_source = 2, errno = 32127.0.0.1 – – [23/Jul/2017 13:35:07] code 404, message Invalid path.
    127.0.0.1 – – [23/Jul/2017 13:35:07] “GET / HTTP/1.1” 404 –
    127.0.0.1 – – [23/Jul/2017 13:35:07] code 404, message Invalid path.
    127.0.0.1 – – [23/Jul/2017 13:35:07] “GET /favicon.ico HTTP/1.1” 404 –

    Hast Du eine Idee ?

    Danke

    Hubert

  6. Kellerfunker

    Hallo zusammen,

    habe leider das gleiche Problem wie Hubert. Sobald ich eine andere IP anstelle von “localhost” einsetze, bekomme ich beim Zugriffsversuch nur die Error 404-Meldung angezeigt. Im Terminal sind die von Hubert beschriebenen Meldungen ebenfalls zu sehen. Ist das eventuell ein Kompatibilitäts-, respektive Versionsproblem (raspbian, openwebrx)?

    Viele Grüße, der Kellerfunker

  7. Die Lösung:

    ich musste die Datei folgendermassen starten:

    python2 openwebrx.py

    dann läuft es, nach ein paar Minuten ist der Pi komplett eingefroren, der Start hat aber funktioniert !

  8. Kellerfunker

    Danke, ich werde das gleich mal austesten. Bericht folgt. 🙂

  9. Ich habe schon einige Installationen vorgenommen, alle laufen nach der Anleitung auf sdr.hu standardmäßig ohne Probleme. Ein Raspberry 1 funktioniert natürlich nicht. Dass das Wasserfalldiagramm endlos nach unten läuft ist sicher ein Problem. Nach langer Zeit (z.B. 30min.) kann es den Browser komplett überlasten. Der Entwickler weiß das, er hat es auf der Agenda ein begrenztes Fenster zu erzeugen (wie bei HackRF oder dem UniTwente WebSDR).
    Kürzlich habe ich auf unserem exponierten Standort ein VHF-WebSDR aufgebaut. Mit einer horizontalen Rundstrahlantenne bevorzugt für den unteren 2m-Bereich. Nähere Infos über http://www.db0rvb.de

  10. Liebe Fan von OpenWebRX
    Meine Installation hat als Hardware ein RPI3 und einen Dongle NooElec NSDRmini 2+.
    Ich habe nach Anleitung die Software installiert.
    Der erste Start war ein Erfolg. Danach RPI mit »shutdown» abgeschaltet, di Applikation funktioniert bei wieder einschalten nicht mehr. Folgende Meldungen wurden ausgegeben:

    Browser FireFox:

    Error response
    Error code 404.
    Message: Invalid path..
    Error code explanation: 404 = Nothing matches the given URI.

    SSH Terminal des RPI:
    Reading samples in async mode…
    client 0xc751f0: CS_THREAD_FINISHED, client_goto_source = 2, errno = 32127.0.0.1
    – – [12/Nov/2017 10:25:21] code 404, message Invalid path.
    127.0.0.1 – – [12/Nov/2017 10:25:21] “GET / HTTP/1.1” 404 –
    127.0.0.1 – – [12/Nov/2017 10:25:21] code 404, message Invalid path.
    127.0.0.1 – – [12/Nov/2017 10:25:21] “GET /favicon.ico HTTP/1.1” 404 –

    Gestartet wird mit dem Befehl:
    python2 openwebrx.py

    Ich konnte das ganze nur wieder starten als ich eine Kopie der «config_webrx.py» benütze. Und mit dem Befehl die Anwendung startete.

    Ich kann auch die Anwendung mehrmals auf dem Browser abschalten und wieder einschalten, solange ich den RPI nicht mit «shutdown» abschalte funktioniert alles gut.

    Meine Frage: wird Etwas eingetragen, dass die App nicht mehr läuft????

    Ich danke für die gute Anleitung.

    Viele Grüsse
    Arturo

  11. Michael

    Meine Installation erfolgt unter Raspberry Pi 3 Modell B+ und einem Dongle NooElec.

    *** Erfolgreich ***

    Ich habe die Konfiguration entsprechen angepasst und alles funktioniert. Nun noch etwas Feintuning und fertig.

    73 de Michael

  12. Michael

    Ich muss meinen Eintrag vom 25. Mai korrigieren. Nach einem Neustart bekomme ich auch nur noch die Meldung
    Error response
    Error code 404.
    Ich habe nichts gefunden und alles neu installiert. Ohne Erfolg ich bekomme es nicht wieder zu laufen.

    73 de Michael.

  13. Hallo,

    für alle mit dem 404 Problem habe ich eventuell eine Lösung:
    Ich habe mir mal angeschaut was der Docker Container macht und dieser nutzt python 2.7. Mit Python 3 scheint es wohl Probleme zu geben. Ich starte also mit python2.7 openwebrx.py und bisher klappt es ohne Fehler. Also versucht python2.7 zu installieren und versucht es nochmals.

    Grüße,
    Björn

  14. Wollte die blacklist Einträge mit dem Texteditor eintragen, schaffe es leider nicht, die Datei anschließend zu speichern/überschreiben, obwohl ich mich mit -sudo su- als Superuser eingeloggt habe.

  15. schade kein support mehr, immer noch problem 404

    • Moin,
      wechsele mal direkt ins openwebrx verzeichnis und starte dort direkt.
      So funktionierts bei mir.

      Gruss Bernd

  16. Hallo

    Ich würde gerne open Web rx auf einen pc mit Ubuntu installieren und als Empfänger ein hackRf One, mein Englisch ist nicht so gut das ich die Anleitung verstehen vermag wenn einer mir eine step by step Anleitung geben könnte unter Ubuntu ,wäre ich dankbar

  17. Hallo,
    gibt es mittlerweile eine Lösung für den Fehler 404. Ich habe gestern die Software auf meinem
    Raspi installiert und habe leider auch das Problem.

    73 Michael

    • raspifan

      Falls es noch “jemanden” interessiert: setzt statt localhost die IP des Raspi ein. dann ist der 404 Fehler weg !

      • Sascha Schröder

        Funktioniert bei mir leider auch nicht, weder mit localhost noch mit IP-Adresse. Irgendwer noch eine Idee?

  18. Hallo zusammen meine Kenntnisse zum OpenWeb Rx sind sehr dünn. Betreibe aber trotzdem einen der auch sehr gut funktioniert meine ich.
    Jetzt zu meiner frage. Kann ich das so einstellen oder gibt es die möglichkeit überhaupt Nutzern denen ein Zeitfenster zu verpassen damit die einfach ausgelogt werden ? Leider sind da Nutzer drinen die rund um die Uhr auf dem SDR sitzen und andere Nutzer nicht die möglichkeit haben das SDR auch zu besuchen. http://dac351.ddns.net:8073/#freq=439150000,mod=nfm,sql=-92

Schreibe einen Kommentar zu locke Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht.

*