APRS Empfang mit RaspberryPi, SDR Stick und den dxlAPRS Tools in der Grafischen Oberfläche

Im folgenden Beitrag erfahrt ihr, wie ihr mit den dxlAPRS Tools und einem einfachen SDR Stick ein APRS RX (=nur Empfang) iGate auf zwei Frequenzen (144,800 und 145,825 MHz) betreibt und die empfangenen Daten via Internet oder Hamnet zu den APRS-IS Servern und/oder zum Kartenprogramm APRSMAP übertragt. Das Ganze unter Verwendung der grafischen Oberfläche im Raspbian System.

Letztes Update: 27.09.2020

Für die dxlAPRS Tools ist derzeit ein Wiki in Arbeit, welches die Tools besser dokumentieren soll: http://dxlwiki.dl1nux.de.

Auch gibt es inzwischen eine Telegram-Gruppe in der sich Anwender der dxlAPRS Tools untereinander austauschen können, egal ob es um Wettersonden, APRS oder sonstiges geht. https://t.me/joinchat/CRNMIBpKRcfQEBTPKLS0zg

Ihr solltet bereits ein lauffähigs Linux-System (z.B. auf einem RaspberryPi) mit installierten dxlAPRS Tools haben. Wie das funktioniert, lest ihr auf der Seite „dxlAPRS Tools Grundinstallation„.

An Hardware benötigt man neben dem PC nur noch einen passenden SDR-Stick mit dem üblichen RTL Chipsatz. Dieser sollte selbstverständlich einen Antennenanschluss besitzen, damit man eine ordentliche Antenne daran befestigen kann. Sehr zu empfehlen ist der „nooelec NESDR Smart“. Er hat ein stabiles Aluminiumgehäuse, einen SMA Antennenanschluß und einen TCXO. Ein TCXO ist von Vorteil, da der Stick dann von Haus an sehr Frequenzstabil ist und sich nicht warmlaufen muss bzw. man keinen Frequenzkorrekturfaktor ermitteln muss. Der SDR Stick ist in vielen Shops, aber auch beim großen „A-Z“ erhältlich und kostet aktuell ca. 25-30 Euro.

Info: Natürlich kann man mehr Aufwand betreiben, z.B. mit einem Vorverstärker, Bandfilter usw. aber das überlasse ich mal jedem selbst. Ich selbst fahre auch sehr gut ohne VV oder Filter.

Weitere Vorbereitungen

Damit man unter Linux mit SDR Sticks arbeiten kann, ist die weitere Installation des Paketes rtl-sdr notwendig:

sudo apt-get install rtl-sdr

Um später die einzelnen Tools in der grafischen Oberfläche in seperaten Terminalfenstern starten und beobachten zu können, ist es ratsam auch das xfce4-terminal zu installieren:

sudo apt-get install xfce4-terminal

In den meisten Linux-Distributionen können Standard-User nicht ohne Weiteres den USB SDR-Stick ansprechen, sondern benötigen Root-Rechte. Weil dies zu vielfältigen Problemen führen kann, geben wir den normalen Benutzern mit folgenden Schritten die benötigten Rechte, um auf den USB SDR-Stick zugreifen zu können:

sudo nano /etc/udev/rules.d/20.rtlsdr.rules

Dort fügen wir folgende Zeile ein und speichern diese mit STRG+O

SUBSYSTEM=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="2838",GROUP="adm", MODE="0666", SYMLINK+="rtl_sdr"

Nachdem die Datei mit Inhalt erstellt wurde, ist ein Neustart des RaspberryPi notwendig, damit diese Änderung wirksam wird. Wenn man dies jetzt nicht macht, sollte man das spätestens vor dem ersten Test nachholen.

Das Start-Skript – so werden die Tools gestartet

Für den APRS Empfang mit einem SDR-Stick werden neben dem rtl_tcp aus dem Paket rtl-sdr folgende Module aus den dxlAPRS Tools benötigt:

  • sdrtst (Empfangsmodul)
  • afskmodem (Demoduliert die empfangenen AX25 Pakete)
  • udpbox (sammelt alle Daten und leitet diese im APRS Format weiter)
  • udpgate4 (Leitet die APRS Daten an einen APRS-Server im Hamnet oder Internet weiter)
  • Optional: APRSMAP für die lokale Darstellung der Informationen auf einer Karte (nicht notwendig für den Betrieb als iGate)
Wenn ihr wissen wollt wie das Startskript aufgebaut ist, wie es funktioniert und wie man die Parameter für sich selbst anpassen kann, dann lest hier direkt weiter. Alle, die das nicht interessiert, sondern gleich loslegen wollen, können gleich bis zum Ende der Seite springen und das fertige Image oder die fertigen Skripte herunterladen.

Mit dem Tool xfce4-terminal werden die Befehle jeweils in einem seperaten Fenster innerhalb der grafischen Oberfläche gestartet. So hat man dann bei Bedarf alle Terminalfenster auf einen Blick zusammen.

So schaut ein Befehl mit xfce4-terminal aus:

xfce4-terminal --title FENSTERÜBERSCHRIFT -e 'bash -c "BEFEHL"' &

Jedes so gestartete Terminal erhält die angegebene „FENSTERÜBERSCHRIFT“ und es wird ein „BEFEHL“ ausgeführt.

Alle Befehle werden direkt im Ordner /home/pi/dxlAPRS/aprs ausgeführt. Mann kann den Verzeichnispfad auch dem Systempfad hinzufügen, dann lässt sich das Skript von überall ausführen.

SDR-Stick initialisieren

xfce4-terminal --title RTL_TCP0 -e 'bash -c "rtl_tcp -a 127.0.0.1 -d0 -p 18100 -n 1"' &

Diese Zeile startet ein Terminal und initialisiert den SDR Server auf dem eigenen Rechner.

Die Parameter:
-a <IP-Adresse> = listen address
-d# = device index (default: 0)
-p <port> = listen port (default: 1234)
-n = max number of linked list buffers to keep

Erklärung:

  • Die „listen address“ gibt den eigenen Rechner (127.0.0.1 ist die interne IP-Adresse des eigenen Rechners) als Kommunikationsquelle an (sofern der Stick am selben Rechner hängt).
  • Der „device index“ gibt an, welcher SDR-Stick angesprochen wird. Wenn man mehrere SDR-Sticks angeschlossen hat, werden diese durchnummeriert beginnend mit d0, d1, d2 usw.
  • Der „listen port“ gibt den TCP Kommunikationsport an. Der SDR Server kann auf TCP Port 18100 „angezapft“ werden. Wenn man mehrere Sticks verwendet, muss jeder auf einem eigenen Port laufen.
  • Mit -n 1 hält man den Datenpuffer sehr klein und verhindert verzögerte Dekodierung
  • Das „&“ am Ende der Zeile bedeutet, dass das Programm im Hintergrund laufen soll und das man am selben Terminal oder in selben Script weitere Befehle eingeben kann.

 

Das Empfangsmodul einrichten

xfce4-terminal --title SDRTST1 -e 'bash -c "sdrtst -t 127.0.0.1:18100 -r 16000 -s /home/pi/dxlAPRS/aprs/aprspipe -c /home/pi/dxlAPRS/aprs/qrg0.txt -e -v -k"' &

Diese Zeile startet den Empfänger am angegebenen SDR-Stick. Die Datei qrg0.txt enthält die zu empfangenen Frequenzen und Frequenzparamter, auch die SDR-Stick Korrekturdaten, wenn diese keinen TCXO haben. Die empfangenen Signale werden in eine sogenannte „Audiopipe“ geschickt. Dabei handelt es sich um eine Art Transferdatei, die es ermöglicht Informationen von einem Programm zum anderen zu tranferieren. Diese Transferdatei kann leider nicht in Archive gepackt werden und muss daher von Hand angelegt werden. In den fertigen Skripts ist dies bereits eingebaut.

Der Name der pipe kann frei gewählt werden, man muss ihn sich jedoch merken, da man diese auch dem folgenden Modul bekannt geben muss.
Mit den folgenden Befehlen wird die pipe angelegt

cd /home/pi/dxlAPRS/aprs
mknod aprspipe p

Anschließend findet man eine 0-Byte Datei im Ordner mit dem Namen „aprspipe

In der Datei qrg0.txt (Die Datei kann natürlich beliebig benannt werden) erfährt der Empfänger, auf welchen Frequenzen er hören muss. Für jede Frequenz wird ein eigener Empfänger angelegt.

#-----------------------------------------------------------------------------------------------------
# QRGG0.TXT - von DL1NUX : Keine Tab-Stops bei der Nutzung von Auskommentierungen (#)!!!# Original von OE3OSB (2017-07-12)
#-----------------------------------------------------------------------------------------------------
# f mhz afc(khz) squelch(0..100) lowpass(0..100) ifwidth (hz)
#-----------------------------------------------------------------------------------------------------
# comment
# p <cmd> <value> rtl_tcp parameter like 'p 5 50' ppm, 'p 8 1' autogain on
# f <mhz> <AFC-range> <squelch%> <lowpass%> <IF-width> FM Demodulator
# a <mhz> 0 <squelch%> <lowpass%> <IF-width> AM Demodulator
# u <mhz> <IF-shift> 0 <agc speed> <IF-width> USB Demodulator
# l same for LSB
# AFC-Bereich in +-kHz, Squelch 0 aus, 100 offen, 70 ist normal
# Audio Tiefpass in % Nyquist Ausgabefrequenz Sampelrate, 0 is aus
# IF-width 3000 6000 12000 24000 48000 96000 192000Hz für wenig CPU Auslastung
# (192000 nur mit >=2048khz iq-rate), (4th order IIR)
# (SSB 8th order IF-IIR), Andere Werte haben mehr CPU-Last (12000 default)
#-----------------------------------------------------------------------------------------------------
# Parameter für SDR Stick:
# p 5 = Frequenz Offset in PPM - Sticks mit TCXO benötigen die syntax p 5 0
# Bei allen anderen Sticks ohne TXCO muss die Frequenzabweichung in PPM berechnet werden
# z.B.: https://github.com/ptrkrysik/gr-gsm/wiki/Installation-on-RaspberryPi-3
# Wenn Ihnen die PPM für den Stick bekannt ist, hängen Sie ihn hier an: p 5 ppm
# Korrekte Syntax für ppm 50 ist p 5 50
p 5 0
#
# p 8 = Automatic Frequency Control (AFC) Frequenz wird automatisch nachgezogen (wichtig bei Dopplereffekt)
# p 8 1 = AFC an / p 8 0 = AFC aus
p 8 1
#-----------------------------------------------------------------------------------------------------
# Einstellen der Frequenz(en) (Wichtig: Als MHz-Trennung einen Punkt verwenden, und KEIN Komma (144.8 anstatt 144,8)
# f <mhz> <AFC-range> <squelch%> <lowpass%> <IF-width>
# Beispiel: f 401.0 5 60 0 6300
# f 439.275 0 0 80 20000 (20khz IF, uses more CPU)
# u 439.5001 -700 0 0 600 (USB with 600Hz CW-Filter at 800Hz
#-----------------------------------------------------------------------------------------------------
# Wichtig: Die SDR Sticks haben nur 2 MHz Bandbreite!
# Wenn Sie mehrere Frequenzen überwachen, dürfen diese nicht mehr wie 2 MHz auseinander liegen
# z.B. 144.8 bis 146.7 MHz
f 144.800 # Europäische APRS QRG auf 144 MHz
f 145.825 3 0 0 12000 # ISS APRS QRG

Für normalen terrestrischen APRS Empfang auf 144,8 MHz benötigt die QRG Zeile keine weiteren Parameter. Der „Standard“ passt hier. Für die ISS QRG benötigen wir jedoch weitere Parameter, insbesondere für die AFC, da aufgrund der Fluggeschwindigkeit die Frequenz auch wandern kann.

Erklärung:

  • Wir benutzen einen Stick mit TCXO und benötigen keine Frequenzkorrektur.
  • Die AFC ist an.
  • Wir empfangen in FM auf 144,800 MHz und 145.825 MHz

Kommen wir nun zurück zum ursprünglichen Befehl:

xfce4-terminal --title SDRTST0 -e 'bash -c "sdrtst -t 127.0.0.1:18100 -r 16000 -s /home/pi/dxlAPRS/aprs/aprspipe -c /home/pi/dxlAPRS/aprs/qrg0.txt -e -v -k"' &

Die Parameter:
-t <url:port> = connect rtl_tcp server
-r <Hz> = Output sampelrate Hz for all channels 8000..192000. For FM min. 25% more than rx IF-width
-s <soundfilename> = 16bit signed n-channel sound stream/pipe
-c <configfilename> = Read channels config from file (qrg0.txt)
-e = enable sending SDR Data hidden in audio channels (tune/afc/rssi..)
-v = Show rssi (dB) and afc (khz)
-k = keep connection

Erklärung:

  • Wir connecten uns an den rtl_tcp Server, den wir mit „rtl_tcp“ initialisiert haben mit einer Samplerate von 16 KHz.
  • Als Bindeglied zu rtl_tcp dient die zuvor erstellte Pipe „aprspipe„.
  • Die Frequenzen bzw. Frequenzparameter sind in der Datei „qrg0.txt“ zu finden (siehe oben).
  • Übertrage Daten wie Feldstärke etc. versteckt im Audiostrom (-e).
  • Zeige Signal in dB und AFC in KHz (Ausgabe im Terminalfenster).
  • „keep connection“ soll dafür sorgen dass SDRTST sich neu startet wenn es beendet wird (laut OE5DXL).

AX25 Signale dekodieren

xfce4-terminal --title AFSKMODEM -e 'bash -c "afskmodem -f 16000 -o /home/pi/dxlAPRS/aprs/aprspipe -c 2 -M 0 -c 0 -L 127.0.0.1:9001:0 -M 1 -c 1 -L 127.0.0.1:9002:0"' &

AFSKMODEM dekodiert die empfangenen Signale auf beiden Kanälen und sendet diese als AXUDP Pakete an zwei seperate Ports raus.

Die Parameter:
-f <num> = adcrate (16000) (8000..96000)
-o <filename> = oss devicename (/dev/dsp)
-c <num> = (0..1) channel parameters follow (repeat for each channel)
Für jeden Kanal seperat:
-M <num> = (0..7) modem parameters follow (repeat for each modem)
-c <num> = use stereo channel 0=left (or mono), 1=right
-L <[x.x.x.x]:destport:listenport> = use axudp instead of kiss /listenport check ip (AXUDP v2)

Erklärung:

  • Die Abtastrate an der Audiopipe (aprspipe) beträgt 16 KHz (muß mit der Angabe bei SDRTST übereinstimmen).
  • Mit -M werden die einzelnen Modems parametriert. AFSKMODEM unterstützt bis zu 8 Kanäle, mit denen Parallel gearbeitet werden kann, z.B. für verschiedene Baudraten oder bei der Nutzung mehrerer Frequenzen.
  • Da zwei Frequenzen abgehört werden, werden zwei getrennte Kanäle erstellt. Die dekodierten Daten eines jeden Kanals werden an einen unterschiedlichen UDP Port gesendet (9001 und 9002). Dies erlaubt die getrennte Betrachtung beider Kanäle, auch in der Weboberfläche des iGate

Alle Daten einsammeln und weiterleiten

xfce4-terminal --title UDPBOX -e 'bash -c "udpbox -R 127.0.0.1:9001 -l 127.0.0.1:9101 -l 127.0.0.1:9105 -R 127.0.0.1:9002 -l 127.0.0.1:9102 -l 127.0.0.1:9105 -v"' &

UDPBOX sammelt die Daten der zwei Kanäle per UDP ein und vervielfältigt diese, damit diese mehrfach verarbeitet werden können. Man kann bspw. auf dem iGate oder einem anderen Rechner APRSMAP installiert haben und dort die empfangenen Daten visualisieren und kontrollieren. Sollte man dies nicht benötigen, kann man die UDPBOX auch weglassen und die Daten von AFSKMODEM direkt zu UDPGATE4 weitersenden.

Die Parameter:
-R <ip>:<port> = read raw axudp frame, 0 ip read from all (-R 0.0.0.0:2000)
-l <ip>:<port> = send raw axudp frame (AXUDP v2)
-v = show frames and analytics on stdout

Erklärung:

  • UDPBOX empfängt AXUDP Daten an Port 9001 (von 144,800 MHz) und Port 9002 (von 145,825 MHz) von AFSKMODEM. Die Ports müssen mit den Angaben bei AFSKMODEM übereinstimmen.
  • Zur Weiterleitung an das iGate sendet UDPBOX die Daten an Port 9101 und 9102 weiter. Für die Darstellung unter APRSMAP werden beide Datenstränge an Port 9105 gesendet
  • Hinweis: Man kann APRSMAP auch auf einem anderen PC laufen lassen, auch einem Windows-PC. Dazu sendet man die Daten an den passenden Rechner IP-Adresse:Port, z.B. -l 192.168.178.20:9105. Natürlich sollte man dann sicherstellen das der Rechner immer unter der IP-Adresse erreichbar ist und auch keine Firewall die Datenübergabe an APRSMAP blockiert.
  • Außerdem werden mit -v im Ausgabefenster Informationen zu den einzelnen Paketen angezeigt.
  • Man kann hier beliebige weitere UDPBOX Chains anfügen, z.B. wenn noch ein Stick mit der 70cm APRS Frequenz mitläuft (mit -R). Die Weiterleitung selbst erfolgt mit dem Parameter -l.

APRS Daten an einen APRS Server weiterleiten

xfce4-terminal --title UDPGATE4aprs -e 'bash -c "udpgate4 -s MYCALL-2 -R 127.0.0.1:0:9101#144800 -R 127.0.0.1:0:9102#145825 -n 30:/home/pi/dxlAPRS/aprs/netbeacon.txt -g rotate.aprs2.net:14580#m/1,-t/t -p 12345 -t 14580 -w 14501 -v -D /home/pi/dxlAPRS/aprs/www/"' &

UDPGATE4 ist das eigentliche iGate und leitet APRS Pakete an einen APRS-Server weiter.

Die Parameter:
-s <call> = server call of this server -s MYCALL-2 (-S no callcheck)
-M <ip>:<dport>/<lport>[+<byte/s>[:<radius>]][#<portname>]
-R = same as -M but axudp format
-n <min>:<file> = netbeacon minutes:filename -n 10:netbeacon.txt
-g :<filename> = read gateway urls from file url:port#filter,filter,…
-p <password> = login passwort for aprs-is servers -p 12345. To hide password in commandline use file mode -p pass.txt
-t <localport> = local igate tcp port for in connects -t 14580
-w <port> = port of www server -w 14501
-v = show frames and analytics on stdout
-D <path> = www server root directory (-D /usr/www/)

Erklärung:

  • Das iGate empfängt AXUDP Daten auf Port 9101 und 9102 auf dem gleichen Rechner (127.0.0.1) von UDPBOX kommend. Die einzelnen Ports erhalten noch einen Namen (#name) damit man sie auf der Weboberfläche des iGate einzeln erkennen kann (Wichtig: Es werden dann nur die Ports angezeigt, an denen Pakete empfangen wurden. Der ISS Kanal wird daher je nach Aktivität nicht immer sichtbar sein)
  • Zwischen 127.0.0.1 und dem Port 9101 bzw. 9102 ist noch eine Null, diese ist der „destination port“, der aber bei dem reinen Empfangs iGate irrelevant ist und daher auf „0“ steht.
  • Es wird außerdem alle 30 Minuten eine APRS Bake mit dem Inhalt der Datei „netbeacon.txt“ eingerichtet („- n“). Die „Bake“ erzeugt für den APRS-Empfänger ein entsprechendes Symbol auf der Karte bei aprs.fi unter dem Rufzeichen „MYCALL-2“. Es sollte keinesfalls öfter eine Bake gesendet werden! Es reichen sogar 60 Minuten. Die Symbole bleiben trotzdem auf der APRS Karte (z.B. aprs.fi) sichtbar.
  • Die APRS Daten werden nun alle an den Server rotate.aprs2.net auf Port 14580 gesendet (Es kann hier auch ein beliebiger anderer APRS Server eingesetzt werden, z.B. einer im Hamnet aprsc.db0gw.ampr.org). Der Filter m/1 lässt nur Daten aus einem Umkreis von 1 km durch und -t/t filtert unnötige Telemetrie. Leider funktionieren die Filter nicht mit allen APRS Servern gleichermaßen gut.
  • Den Passcode für die Übermittlung (Kann z.B. hier generiert werden: https://apps.magicbug.co.uk/passcode/) übergibt der Paramter „p“.
  • -t gibt den Port an, auf dem das iGate für eingehende Verbindungen lauscht. Dieser Port darf auf diesem Rechner noch nicht in Benutzung sein und lautet standardmäßg 14580.
  • -w gibt den Port an, auf dem die Weboberfläche des iGate abrufbar ist (auf dem iGate Rechner selbst z.B. mit der Adresse 127.0.0.1:14501 im Browser abrufbar).
  • -D gibt den Pfad an, an dem die Dateien für die iGate Weboberfläche abgelegt sind.
  • Außerdem werden die einzelnen gesendeten Frames im Terminalfenster ausgegeben (-v).

Die Weboberfläche des iGate sieht dann in etwa wie folgt aus. Besonders interessant ist der HEARD Button. Dort kann man die Anzahl der empfangenen Pakete bzw. Bytes pro Rufzeichen sehen.

In der oberen Tabelle werden alle direkt gehörten Positionspakete gesammelt und kumuliert. Alle Pakete die digipeatet empfangen wurden, oder auch Internet-Aussendungen aus dem APRS-IS Netzwerk (erkennbar an dem „}“ am Zeilenanfang), werden in der unteren Tabelle gesammelt.

Tipp: Der Zeitraum der angezeigten Pakete ist standardmäßig auf 24 Stunden (MH-Liste) und 30 Minuten (Via Liste) definiert. Man kann diesen beliebig einstellen, in dem man beim udpgate4 die Optionen -H und -I hinzufügt.

Beispiel:

-n 30:/home/pi/dxlAPRS/aprs/netbeacon_aprs.txt -H 10080 -I 1440

In diesem Beispiel werden die direkt empfangenen Pakete für 10080 Minuten (= 1 Woche) und die Via Pakete für 1440 Minuten (=24 Stunden) angezeigt.

Beispielinhalt der netbeacon.txt:

!5014.00N/01100.00E`APRS iGate mit dxlAPRS Toolchain 144.800 und 145.825 MHz
#
# Geokoordinaten in Grad und Dezimalminuten ohne Grad-Symbol° (DD MM.MMMM)
# Beispiel 48°12.83 N = 4812.83N und 016°15.85 E = 01615.85E

Es ist zu beachten, dass bei den Koordinaten die Ost-Koordinate immer 3-stellig eingetragen wird, also 011 für 11 Grad. Sonst nimmt er die Position nicht.

Tipp: Bei der obigen Konfiguration wird ein Sat-Antennen Symbol SATfür das Gateway auf der APRS Karte generiert. Man kann natürlich auch beliebige andere APRS Symbole für die Station nutzen

In der obigen netbeacon.txt ist das Symbol „versteckt“ definiert. Das Symbol wird mit den zwei Zeichen nach dem „N“ und dem „E“ definiert. APRS Symbole werden aus zwei Tabellen definiert. Einer primären und einer sekundären Tabelle. Die primäre Tabelle wird gewählt mit einem /, die sekundäre Tabelle mit einem \ nach dem „N“. Welches Symbol dann aus der entsprechenden Tabelle genommen wird, definiert wiederrum das Zeichen nach dem „E“.

Eine Übersicht der APRS Symboltabelle bekommt ihr hier: https://www.yachttrack.org/info_camper/downloads/APRS_Symbol_Chart.pdf

Beispiele:

Wenn ihr z.B. den grünen Jeep als APRS Symbol haben möchtet, sehr ihr in der Tabelle nach. Es befindet sich in der primären „/“Tabelle und wird durch das Zeichen „j“ definiert. Eine netbeacon.txt mit grünem Jeep als Symbol würde dann wie folgt aussehen:

!5014.00N/01100.00EjAPRS iGate mit dxlAPRS Toolchain 144.800 und 145.825 MHz
#
# Geokoordinaten in Grad und Dezimalminuten ohne Grad-Symbol° (DD MM.MMMM)
# Beispiel 48°12.83 N = 4812.83N und 016°15.85 E = 01615.85E

Die obigen Befehle können dann auch in eine ausführbare Skriptdatei kopiert werden. Es ist sinnvoll zwischen den einzelnen Befehlen eine kurze Pause zu lassen, damit nicht alles gleichzeitig gestartet wird (z.B. „sleep 3“ wartet 3 Sekunden bevor es weitermacht)

APRSMAP

Mit der Installation der dxlAPRS Tools, existiert im Order dxlAPRS/aprsmap ein mächtiges grafisches Programm zur Anzeige der APRS Daten. Es kann natürlich noch viel mehr, daher ist hier auch ein Verweis auf die Webseite von APRSMAP wichtig: http://wiki.oevsv.at/index.php?title=DXL_-_APRSmap

APRSMAP lädt, wenn es Internetzugriff hat, automatisch passende OSM Karten für die Darstellung nach. Um unsere empfangenen APRS Daten nun darzustellen, muss man nur einen Empfangsport einrichten, mehr nicht. Dazu klickt man unter „Config“ => „Rf-Ports“ auf z.B. „RF-Port 1“ und gibt dort den Port, auf dem Empfangen werden soll (in diesem Fall Port 9105) wie folgt ein: „:0:9105“ (natürlich ohne Gänsefüßchen). Dies bedeutet, dass am gleichen Rechner gehört wird (keine Angabe einer IP-Adresse). Der Sende-Port lautet „0“ (es wird nichts gesendet) und der Empfangsport lautet „9105“ (IP-Adresse:destinationport:listeningport). Man könnte hier z.B. auch einen APRS Server eintragen und von dort die Daten empfangen oder auch von APRSMAP aus dort hin senden. Aber das würde hier zu weit führen. Wir benutzen APRSMAP hier nur zur Darstellung der empfangenen Daten.

Und so sieht es dann fertig aus:

Startskripte und Dateien als Download

Um es etwas einfacher zu machen biete ich hier ein Archiv als Download an, das alle Skripte und Dateien enthält.
Achtung: Die Dateien wurden zuletzt am 26. Dezember 2019 aktualisiert und erweitert!

Downloadlink:
http://www.dl1nux.de/aprs_skripte.zip

Download unter Linux mit:
wget http://www.dl1nux.de/aprs_skripte.zip

Die Dateien müssen in den Ordner mit den APRS Tools entpackt werden, z.B. /home/pi/dxlAPRS/aprs

Bitte lest unbedingt die beigefügte README.TXT Datei !

Starten der Programme

Man wechselt in den Programmordner und startet das Startskript, z.B.

cd /home/pi/dxlAPRS/aprs
./aprs_start2.sh

Fertiges Image

Für den Raspberry Pi (2B aufwärts) habe ich ein fertiges Image erstellt, welches mit dem WIN32DiskImager auf eine SD Karte geschrieben werden kann. Es enthält bereits alle notwendigen Softwarepakete. Es basiert auf Raspbian Buster (Vollversion) mit Patch-Stand 29. August 2019. Es kann auf eine 8 GB SD-Karte aufgespielt werden (manche Karten weichen in der Größe ab, so dass man es dann mit einer 16 GB Karte versuchen sollte). Es sind die bekannten Anpassungen wie oben beschrieben zu machen. Es lohnt sich die von mir downloadbaren Skripte nochmal aktuell nachzuladen.

Der Download (ca. 3,2 GB) kann hier erfolgen: LINK

Login-Name: pi
Passwort: aprs


Diese Anleitung wurde mit bestem Wissen und Gewissen und mit Hilfe des Entwicklers Christian OE5DXL erstellt. Aber auch hier kann sich natürlich der Fehlerteufel verstecken. Deshalb sind alle Angaben ohne Gewähr! Auch geht die Entwicklung der dxlAPRS Tools immer weiter, was auch Veränderungen mit sich bringen kann. Wenn ihr einen Fehler findet oder Fragen habt, zögert nicht mich zu kontaktieren. Gerne auch als Kommentar auf der Webseite.
Kontaktmöglichkeiten:

  • per E-Mail attila [at] dl1nux . de
  • per IRC Chat im Hamnet (HamIRCNet) im Kanal #hamnet-oberfranken
  • per Packet-Radio im DL/EU Converse Kanal 501

6 Gedanken zu „APRS Empfang mit RaspberryPi, SDR Stick und den dxlAPRS Tools in der Grafischen Oberfläche

  1. Hallo Attila,
    ich schon wieder 😉
    Diesmal zwickt es mit dem dxlAPRS. Ich bekomme keine Signale vom 2m Band herein, obwohl ich diese am FTM400xd auf 144.8MHz sehe. Auf 70cm sehe ich meine Sonde. Gibt es da einen typischen Anfängerfehler ?
    Verwendet habe ich das Image von Dir und die Eintragungen lt Deiner sehr ausführlichen Anleitung durchgeführt.
    Danke im Voraus
    73, DF3RP

    • Einen heißen Tip habe ich nicht. Kontrolliere im SDRTST ob die Frequenz passt und wie viel dB Empfangssignal angezeigt werden. Bei zwei QRGs auf 2m ist die angezeigte Frequenz etwa die Mitte davon (bei mir 145312000). Im Leerlauf sind es ca. 46-49 dB Signal. Bei gutem APRS Empfang deutlich mehr.
      Natürlich sollte die Antenne auch funktionieren und gut hörbare APRS Stationen sollten aufnehmbar sein.
      Und man sollte die QRG Datei nochmal kontrollieren. Ein falscher Parameter und er lauscht auf der falschen QRG oder mit falschen Parametern. Viel Erfolg!

  2. Danke für die Ausführungen!
    Da ich 2 m und 70 cm mit 2 Sticks betreiben will, habe ich in der qrg2.txt gelesen das man dann die zweite Frequenz für den ISS Empfang auskommentieren soll.
    So habe ich es zumindest verstanden, und ausgeführt. Leider ging dann auf 2 m wie beschrieben nichts mehr. Nach dem ich nun das # (Komentarzeichen) wieder entfernt habe funktioniert das ganze auf beiden Bändern. Hat also offensichtlich was mit der Frequenz zu tun, weniger die am Stick als in der Verarbeitung innerhalb der Software, vermute ich nun mal. Die Sticks sind die Noelec mit TCO und beim Betrieb als SDR stimmt die Empfangsfrequenz mit meinen Funkgeräten zusammen.

    • Hallo Klaus, das hast du leider falsch verstanden. Grundsätzlich kann man mit einem SDR-Stick und AFSKMODEM ein oder zwei Frequenzen gleichzeitig empfangen. Diese dürfen nicht mehr als 2 MHz auseinander sein. Der Aufruf von AFSK Modem unterscheidet sich daher, ob man ein oder zwei Frequenzen empfängt. Entweder hat man einen oder zwei Channels. Deswegen habe ich dafür auch unterschiedliche Startskripts dafür erstellt. Da ich der Meinung bin, wenn man auf 2m hört, kann man auch durchaus beide APRS QRGs mit dem Stick abdecken, habe ich den 2-Kanal-Empfang eben für „2m Empfang“ betitelt. Auf 70cm gibts nur die eine QRG, da reich Einkanal Empfang. Die Zuordnung zu den Bändern ist aber willkürlich. Du kannst auch das 70cm Skript nehmen und in der QRG Datei nur eine 2m QRG angeben. Dann passt das. Wenn man tatsächlich nur eine QRG auf 2m empfangen will und eine QRG auf 70cm, müsste man das Skript ändern. Empfehlen würde ich es nicht. Es frisst kein Brot und benötigt nur wenig mehr CPU Leistung. Dafür empfängt man aber die ISS und andere APRS Satelliten. Ich hoffe ich konnte es einigermaßen erklären.
      73 de dl1nux

  3. Ich habe einen OpenWebRX laufen mit dem ich im QRL 2m höre. Da er 24 Stunden in Betrieb ist wäre es schön, wenn man das IGATE installieren kann um die empfangenen Daten von der 144,800 ins Netz weiter zu leiten.
    73 de Michael.

    • Hallo Michael,
      openwebrx hat bereits eine APRS Gatewayfunktion eingebaut. Die Einstellungen dazu findest du in der config_webrx.py

      # === aprs igate settings ===
      # if you want to share your APRS decodes with the aprs network, configure these settings accordingly
      aprs_callsign = „N0CALL“
      aprs_igate_enabled = False
      aprs_igate_server = „euro.aprs2.net“
      aprs_igate_password = „“

      Damit kannst du empfangene Daten direkt an ein APRS Gateway übergeben. Mann kann auch einstellen, dass 24/7 auf der APRS QRG gehört und übermittelt wird, dazu würde ich dir empfehlen in der openwebrx community nachzufragen.
      Du kannst natürlich auch ein bereits vorhandenes Gateway mit udpgate4 zum Einspielen der Daten nutzen. udpgate4 leitet die Daten ja nicht nur weiter, sondern ist wiederrum ein Gateway das von anderen Clients connected werden kann. Du kannst also openwebrx sagen, dass er sich mit deinem vorhandenen udpgate4 iGate verbinden soll. Dieses leitet die Daten dann an einen anderen APRS Server im Internet oder Hamnet weiter.
      73 Attila

Schreibe einen Kommentar

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