Equipment Software

Wie du ein APRS iGate auf einem Raspberry Pi installierst

In diesem Beitrag wird gezeigt, wie du aus einem Raspberry Pi und einem RTL-SDR in wenigen Minuten ein APRS iGate zusammenbaust. Ein iGate empfängt APRS-Pakete und leitet diese über das Internet an APRS-Server weiter. Ein gutes Netz mit vielen APRS iGates ist damit eine wichtige Basis für Webseiten wie aprs.fi.

Die Idee zu diesem Artikel kommt nicht von mir, sondern von Marco Kubon (DL1MX). Er hat in seinem Blog bereits im Mai 2013 eine erstklassige englischsprachige Anleitung dazu verfasst.

Dieser Beitrag ist im Prinzip eine Übersetzung, die ich mit eigenen Kommentaren versehen habe, um es Einsteigern etwas leichter zu machen. Das Original findest du auf kubonweb.de.

Falls APRS Neuland für dich ist, dann lies den Artikel „APRS – Überblick für Einsteiger“ zuerst.

Das Tutorial setzt einige Grundlagen im Umgang mit Linux in der Kommandozeile voraus. Sofern du noch nicht mit Linux vertraut bist, solltest du warten bis über den Linux-Crashkurs ausreichend Grundlagen vermittelt worden sind. Oder du beißt dich einfach durch 😉

rtlsdrpi

Vorbereitung

Neben Grundlagen-Wissen zum Betriebsystem Linux benötigst du einen mit Raspian bespielten Raspberry Pi oder einen anderen stromsparenden Computer. Stromsparend deshalb, weil so ein iGate ja rund um die Uhr Betrieb machen sollte. Weiterhin ist ein USB-Verteiler mit eigener Stromversorgung sinnvoll, aber nicht unbedingt notwendig.

Darüber hinaus benötigst du eine funktionierende Internetverbindung auf dem Raspberry Pi. Außerdem solltest wissen, wie du dich in der Konsole einloggst und dass der Befehl sudo benötigt wird, um Administrationsrechte zu erlangen.

Bevor du anfängst, solltest du dein System auf einen aktuellen Stand bringen. Das erledigst du am einfachsten mit den folgenden Befehlszeilen.

sudo apt-get update
sudo apt-get upgrade

Danach solltest du sicherstellen, dass der richtige Treiber für den DVB-T Stick geladen wird. In neueren Kernel befindet sich nämlich ein Treiber, mit dem man zwar TV schauen könnte, aber den Stick eben nicht als SDR nutzen kann.

Dazu muss die Datei /etc/modprobe.d/raspi-blacklist.conf mit einem Texteditor um die folgenden Zeilen erweitert werden. Wenn du noch keinen Editor kennst, nimm erstmal nano.

nano /etc/modprobe.d/raspi-blacklist.conf
blacklist dvb_usb_rtl28xxu
blacklist rtl_2832
blacklist rtl_2830

Bevor du den neuen Treiber verwenden kannst, muss der alte Treiber entfernt werden. Dies kannst du entweder mit einem Neustart deines Raspberry Pis erreichen oder mit der folgenden Befehlszeile

sudo rmmod dvb_usb_rtl28xxu

Wenn du eine Fehlermeldung erhältst, weil der Treiber nicht geladen war, kannst du sie ignorieren.

Nun legen wir uns ein Arbeitsverzeichnis an.

mkdir ~/src

Installation der Treiber

Die neuen Treiber für deinen RTL-SDR-Stick werden via git heruntergeladen und installiert.

cd ~/src
sudo apt-get install git build-essential cmake libusb-1.0-0-dev
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) kannst du den Befehl rtl_test ausführen. Wenn die Ausgabe von rtl_test fehlerfrei ist, dann ist alles gut.

Kalibrieren des Sticks

Dein Stick empfängt nicht genau auf der Frequenz die du einstellst. Er weicht leicht davon ab. Wie stark er abweicht kannst du herausfinden, wenn du einen genauen Messsender hast.

Du hast grade keinen Messender zur Hand? Dann nimmst du einfach den stärksten Mobilfunkmast in deiner Umgebung.

Mit den folgenden Befehlen kompilierst und installierst du die dafür notwendige Software.

cd ~/src
sudo apt-get install libtool autoconf automake libfftw3-dev
git clone https://github.com/asdil12/kalibrate-rtl.git
cd kalibrate-rtl
git checkout arm_memory
./bootstrap
./configure
make
sudo make install

Um den stärksten Sender in deiner Nähe zu finden, gibst du einfach kal -s GSM900 in der Kommandozeile ein und lässt es eine Weile laufen. Die Ausgabe sieht bei mir so aus.

kal-tool

Kanal 75 ist bei mir also am stärksten zu empfangen. Nun ermitteln wir mit kal -c 75 die Frequenzabweichung in Parts per Million (ppm). Bei dem von mir verwendeten Stick beträgt die Abweichung 36,420 ppm.kal-tool-ppm

Falls du mehrere Sticks hast, notiere dir die Frequenzabweichung am besten direkt auf dem Stick. Dann musst du nicht jedes mal neu messen.

Installation des multimonNG Decoders

Mit dem multimonNG kannst du zielmlich viele digitale Übertragungsverfahren decodieren. Wir beschränken uns zwar in diesem Beispiel auf APRS, aber falls du mehr machen willst, schau dich im multimonNG Repository auf Github um.

cd ~/src
sudo apt-get install qt4-qmake libpulse-dev libx11-dev patch pulseaudio
git clone https://github.com/EliasOenal/multimonNG.git
cd multimonNG
mkdir build
cd build
qmake ../multimon-ng.pro
make
sudo make install

Testen des Empfangs

Im Prinzip kannst du jetzt schon APRS Pakete empfangen. Mit der folgenden Befehlszeile stellst du den Empfänger auf die APRS-Frequenz von 144,800MHz ein. Hinter dem Parameter –gibst du die Frequenzabweichung in ppm ein und hinter –g landet der Wert für die Verstärkung.

rtl_fm -f 144800000 -s 22050 -p 36 -g 42.0 - | multimon-ng -a AFSK1200 -A -t raw -

Wenn du das jetzt eine Weile laufen lässt, dann sollten irgendwann APRS-Pakete dekodiert und angezeigt werden. Wenn du einen anderen Empfänger hast, dann stell ihn auf 144,800 MHz ein. Dann hörst du die Signale und siehst ob sie zeitgleich dekodiert werden können.

aprs-debug

Installation der APRS IGate Software

Damit die empfangen Pakete auch ins Internet weitergeleitet werden, musst du noch pymultimonaprs installieren und konfigurieren.

cd ~/src
git clone https://github.com/asdil12/pymultimonaprs.git
cd pymultimonaprs
sudo python2 setup.py install

Konfigurationsdatei anpassen

Damit pymultimonaprs die Daten ins Internet leiten kann, muss die Konfigurationsdatei angepasst werden. Dazu benötigst du die diese Informationen:

  • Rufzeichen
  • den APRS-IS Passcode passend zum Rufzeichen
  • die Geokoordinaten vom Standort des iGates

Das generieren des APRS-IS Passworts für dein Rufzeichen funktioniert wie folgt:

cd ~/src/pymultimonaprs
./keygen.py RUFZEICHEN
Key for RUFZEICHEN: 9378

Nun musst du die Datei /etc/pymultimonaprs.json mit dem Editor öffnen.

sudo nano /etc/pymultimonaprs.json

Ergänze dann die Datei, bis sie deinen Anforderungen genügt. Trage dein Rufzeichen, dein Passwort, die Frequenzabweichung, die Verstärkung und die Koordinaten vom Standort ein und speichere die Datei.

Als Symbol habe ich ein große I eingetragen. Damit ist ein TCP/IP-Gateway auf der Webseite aprs.fi gut zu erkennen.

Kommentar und Statustext solltest du mit Infos zu deiner Station oder deinem Standort versehen.

{
        "callsign": "DL0ABC-10",
        "passcode": "12345",
        "gateway": "euro.aprs2.net:14580",
        "append_callsign": true,
        "source": "rtl",
        "rtl": {
                "freq": 144.800,
                "ppm": 0,
                "gain": 0,
                "offset_tuning": false,
                "device_index": 0
        },
        "alsa": {
                "device": "default"
        },
        "beacon": {
                "lat": 51.00000,
                "lng": 10.00000,
                "table": "/",
                "symbol": "I",
                "comment": "PyMultimonAPRS iGate",
                "status": {
                        "text": "Running on Raspberry Pi with RTL dongle",
                        "file": false
                },
                "weather": false,
                "send_every": 300,
                "ambiguity": 0
        }
}

pymultimonaprs im Debug-Modus starten

Du kannst pymultimonaprs in der Konsole mit dem Parameter -v starten. Dann siehst du welche Pakete dein iGate ins Internet überträgt.

Läuft alles im Testbetrieb nach deinen Vorstellungen, kannst du dir ein Startscript installieren. Dann startet pymultimonaprs nach dem Systemstart automatisch, sofern du das Startscript installierst.

Startscript für pymultimonaprs

sudo cp pymultimonaprs.init /etc/init.d/pymultimonaprs
sudo chmod +x /etc/init.d/pymultimonaprs
sudo update-rc.d pymultimonaprs defaults 

Wenn du das Script starten möchtest, kannst du es wie folgt ausführen.

sudo /etc/init.d/pymultimonaprs start

Um es wieder zu stoppen verwendest du die Option stop.

sudo /etc/init.d/pymultimonaprs stop

Ich hoffe ich konnte das Thema so rüberbringen, dass auch Linux-Einsteiger einigermaßen folgen konnten. Wenn du Fragen hast und ich einen Punkt nochmal genauer erklären soll, dann schreib es einfach in die Kommentare.

Bitte vergiss nicht den Blogbeitrag von DL1MX zu besuchen. Dort sind im Laufe der Zeit sehr viele nützliche Kommentare eingegangen und hilfreiche Antworten gegeben worden. Hier nochmal der Link: APRS Rx-only IGate with Raspberry Pi and DVB-T dongle.

23 Kommentare

  1. Pingback: Wochenrückblick KW 6 › HAMSPIRIT.DE

  2. Pingback: Wie du APRS-Pakete unter Linux über die Kommandozeile versenden kannst › HAMSPIRIT.DE

  3. Pingback: Linktipp: Wie du mit deinem RTL-SDR APRS-Stationen empfängst und mit Xastir auf einer Karte darstellst › HAMSPIRIT.DE

  4. Dietrich-Eckhard DL1RDB

    Hallo OM!s ,
    Sehr gute Artikel! Danke für eure Bemühungen .
    vy 73 de Dietrich-E. DL1RDB
    Rundspruchsprecher Bayern-Ost

  5. Hi!

    Eine sehr gute Idee, die mal wieder zeigt, für was der RasPi so alles gut ist…
    Was ich jetzt noch über Twitter hab anklingen lassen, ist folgendes…
    Ich habe bei mir in der Nähe evtl. demnächst auf 2m einen APRS-Digi, der gleichzeitig als iGate dient (an einem ziemlich guten Standort).
    Jedoch habe ich jetzt das Problem, dass ich gern auch die anderen APRS-Frequenzen (10,1476 MHz USB, 14,104 MHz LSB, 29,250 MHz FM) und eventuell auch übergangsweise die 2m-Frequenz (da es mind. noch ein paar Monate dauern wird, bis der APRS-Digi in Betrieb geht, da vorrangig ein 70cm DV-Relais aufgebaut werden muss) von meinem QTH aus per iGate sind Netz schicken würde. Für die in Klammer geschriebenen QRGs kann ich jedoch keine Antennen an dem guten Standort aufbauen, deshalb muss ich zu mir nach Hause ausweichen.

    Jetzt die Frage: gibt es die Möglichkeit, mit dem oben beschriebenen iGate mit 3 (4) Sticks 3 (4) QRGs gleichzeitig abzuhören (bzw. eigentlich müsste doch die Bandbreite ausreichen, um 10 und 14 MHz gleichzeitig zu hören, oder? ^^)? Und kann man der Software beibringen, dass jeweils eine der Frequenzen eben auf USB und LSB läuft?
    Danke für deine Antwort – habe leider zur Zeit keinen Raspberry da um selbst zu spielen…

    Vy 73 de Florian, DO1IUK

    • Hallo Florian,

      ich denke das funktioniert, sofern du über die Grenzen dieses Tutorials hinaus nach Lösungen suchst.

      Du brauchst sicher einen stärkeren Rechner, mehr Strom für die ganzen Sticks und auf dein vorhaben angepasste Software. Außerdem brauchst du einen HF-Konverter, wenn du das ganze mit einem RTL-SDR machen willst.

      Was die Software angeht, so musst du vermutlich selbst Hand anlegen. Entweder mit Python und Gnuradio selbst programmieren.

      Sofern dir das zuviel ist, kannst auch versuchen dein Vorhaben durch das zusammenkitten und kombinieren von Software-Teilstücken zu kombinieren.

      Der wichtigsten Schritt wäre wohl erstmal SSB-Signale zu empfangen. Wenn du die hören kannst, kannst du die Ausgabe beliebig umleiten und weiterverarbeiten.

      Oben im Artikel ist ein Beispiel für den Empfang mit rtl_fm und die Weitergabe an multimon-ng. Im Prinzip müsste das ähnlich funktionieren, wenn du dir das für SSB zurecht biegst.

      Natürlich kannst du auch auf den Teil mit dem SDR verzichten und ein Funkgerät oder Empfänger nehmen. Dann verarbeitest du einfach die NF über die Soundkarte. Geht sicherlich auch und du musst weniger programmieren.

      Eine fertige Lösung kann ich aus Zeitgründen nicht aus dem Boden stampfen, aber ich hoffe, dass ich dir eine Lösungsansätze mit auf den Weg gegeben habe.

      Wenn du eine Lösung realisiert hast, freue ich mich auf kurzes Feedback oder vielleicht einen Gastartikel?

      73, Silvio

      PS: Hier sind zwei Links, die ich in dem Zusammenhang nützlich finde:

  6. Sigi DG9BFC

    für 4 Frequenzen wirst du auch 4 Sticks nehmen müssen also um es einfach zu machen dann auch 4 Raspis (saubere Trennung und weniger Programmaufwand)

    ich denke bei mehreren Rtl Sticks kommt der Raspi and die Belastungsgrenze

    … ansonsten … gut geschriebener Artikel (Apsr-I-Gate für Dummies … grins)

  7. Vielen Dank für die tolle Anleitung.

    Einen Hinweis bei der generierung des APRS-IS Passworts.

    Ich habe den Fehler gemacht das Call mit SSID zu registrieren.
    Also z.B: DL0ABC-10

    Das Passwort immer nur mit dem „nackten“ Rufzeichen generieren, dann klappts.

    Vy 73 de Alex, DL1KDA

  8. Simon DO2SAK

    Hallo tolle Anleitung habe aber ein Problem bei der Installtion von pymultimonaprs.

    Beim Befehl: sudo python2 setup.py install bringt er mir folgende Fehlermeldung:

    File „setup.py“, line 6, in
    import pkg_resources
    ImportError: No module named pkg_resources.

    Ich bin leicht verwirrt vielleicht weiß hier einer Rat.
    Danke
    73 Simon do2sak

    • Simon DO2SAK

      Problem gelöst.
      Die Antwort auf meines Problems habe ich bei der Originalbeschreibung gefunden.
      Beim Installieren von pymultimonaprs die Zeile:
      „sudo apt-get install python2.7 python-pkg-resources“
      hinzunehmen.

      73 Simon do2sak

  9. Kleine Anmerkung von mir. Beim Teil mit Installation der Treiber war es bei mir noch erforderlich die UDEV Rules per Hand zu kopieren.

    sudo cp ~/src/rtl-sdr/rtl-sdr.rules /etc/udev/rules.d

    Danach udev neu starten (notfalls mit einem reboot). Danach funktionierte bei mir auch rtl_test

    73 de Kai, do9kai

  10. Ich Danke auch für diese Anleitung, hat bestens geklappt.
    Ein Punkt bringe schaffe ich nicht:

    Auf APRS unter Info steht bei mir
    Gerät: Unknown: Unknown

    Auch wenn ich in pymultimonaprs.json unter „device“: „default“ etwas ändere z.B „RaspberryPi“ ändert sich nichts. Was mache ich falsch?

    vy 73 de Cami, HB9EXF

  11. Geht auch ein R820T2?
    Ich verstehe nicht was ich im Nano machen muss? Diesen Text dann abspeichern wenn ja mit welcher Tastenkombination? Ich komm nicht weiter.

  12. So, hat sich alles erledigt. Hab meinen blauen Stick aus Am…on für 8€ endlich zum laufen gebracht. Es ist ein R820T2, den ich fast weggeschmissen hätte…
    Ich habe nochmal den SDR Sharp aufm PC installiert und entdeckt, dass die mit dem Kalibrierungstool gemessenen Werte garnicht auf 2m übereinstimmen. Sondern völlig falsch waren! Das Tool zeigte einen Wert von -13 ppm an. Am Scope dann hatte ich 100 ppm. Nach der Korrektur der .jason Datei, dekodiert pymultimonaprs alle meine Pakete. Ich rate jedem der Probleme hat, das mal auszuprobieren.
    Tip fürs installieren von SDR Sharp:
    Es muss eine Datei geöffnet werden, dann erst wird der Stick erkannt. Das fehlt bei fast allen Anleitungen im Netz. Es wird irgendwas im Hintergrund installiert. Danach erkennt SDR Sharp den Stick.

    Gruss Marco 73`

  13. Hallo,
    nach Installation und Start erhalte ich die Ausgabe

    Tuned to 145050037 Hz

    Was ist da nicht richtig ?

    mni tnx info
    herbert
    dl4sdr

  14. 100ppm sind das dann 100 Herz im Sharp sdr?

  15. Hallo Bernd,

    100ppm heißt 100 Teile von 1 Million, also 14,48 kHz im Fall von APRS (14480000 / 1000000 * 100).

    73 de DL1MX
    Marco

  16. Danke, läuft nun auch in Saarbrücken als DK9JC-10. 🙂 73 de John, DK9JC / N1JJC

  17. Lukas DO4AMF

    Huhu!

    Ich musste bei mir zwar -g50 (gain) mit angeben und die Abweichung manuell messen (+66ppm, statt -11ppm), aber ansonsten sehr toll erklaert! 🙂 Jetzt muss nur noch wer das iGate nutzen 😉

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

banner