APRS RX only iGate mit dxlAPRS unter Linux

Im folgenden Beitrag erfahrt ihr, wie ihr unter Linux 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 iGate kann sowohl in einem System mit grafischer Oberfläche als auch ohne benutzt werden, z.B. für abgesetzten Betrieb. Es kann auch auf einem bestehenden System bzw. Server mit dazu installiert werden. Auch auf Einplatinenrechnern wie dem RaspberryPi, BananaPi oder OrangePi mit ARMv7 Architektur ist dxlAPRS lauffähig. Die folgende Beschreibung bezieht sich auf die Installation auf einem RaspberryPi mit RaspberryPi OS.

Letztes Update: 06.04.2021

Funktionsbeschreibung

Die dxlAPRS Toolchain ist eine Sammlung von einzelnen Programmen für APRS und Wettersondenempfang. Dabei hat jedes einzelne Tool eine eigene Funktion in der „Kette“. Die Programme werden nacheinander gestartet und über UDP bzw. TCP Ports miteinander verbunden. Fast alle Programmparameter werden über Kommandozeilenparameter den Programmen übergeben. Dies wirkt einerseits etwas kompliziert, andererseits macht dies die Funktionen der Toolchain sehr flexibel. Für fast jeden Wunsch gibt es dadurch eine Lösung. Um die Verkettung der einzelnen Programme für APRS Empfang zu verdeutlichen, wurde die folgende Grafik vorbereitet:

Betrieb mit oder ohne grafische Oberfläche?

Darüber streiten sich die Geister. Fakt ist aber, wenn man die APRS-Station überwachen möchte, ist der Einsatz in einer grafischen Oberfläche wirklich sinnvoll. Alle Programmausgaben können so in separaten Fenster dargestellt werden. Tritt ein Problem auf, kann sofort festgestellt werden, an welcher Stelle der „Kette“ das Problem besteht, also welches Programm die Probleme verursacht. Das ist ein großer Vorteil. Eine Fehleranalyse nur über die Konsole (SSH) ist theoretisch auch möglich, jedoch nur für Experten zu empfehlen die sich sehr gut auskennen mit der dxlAPRS Toolchain. Außerdem kann man sich remote auf einen PC aufschalten (VNC, RDP usw.) und so den RX ohne Monitor betreiben. Darüberhinaus steht auch APRSMAP als grafische Anwendung in den dxlAPRS Tools zur Verfügung. Es ist ein sehr mächtiges APRS Programm mit Kartendarstellung und schon allein zur Darstellung aller empfangenen APRS Pakete sehr gut geeignet.

Klar werden für eine laufende Grafische Oberfläche ein paar Ressourcen benötigt, aber selbst ein RaspberryPi hat genug Ressourcen um dies problemlos zu verarbeiten.

Letztendlich könnt ihr euch raussuchen, wie ihr das System betreiben wollt. Die Beispiel-Skripte sind sowohl für den Betrieb in einer grafischen Oberfläche (GUI) als auch ohne vorhanden.

Vorbereitungen

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 derzeit (04/2021) leider schon rund 40 Euro. Vor ein paar Jahren war dieser noch für rund 20 Euro erhältlich. Aber die Nachfrage ist stark gestiegen nach guten SDRs. Alternativ kann ich auch die „grünen NEWGEN“ SDRs empfehlen, welche es aus China gibt. Diese haben ebenfalls einen TCXO und sind auch sehr frequenzstabil. Man bekommt sie bei Ebay für rund 20 Euro das Stück, in größeren Mengen erhält man sie auch günstiger.

Info: Natürlich kann man noch 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.

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

sudo apt-get install rtl-sdr

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.

Optional:

Wird das iGate wie oben empfohlen in der grafischen Oberfläche betrieben, muss noch das Programm xfce4-terminal installiert werden.

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. Der Parameterzusatz –minimize startet das Konsolenfenster minimiert. Dies ist für weniger wichtige Fenster zu empfehlen.

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.

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.

PATH=/home/pi/dxlAPRS/aprs:$PATH

SDR-Stick initialisieren

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

sdrtst -t 127.0.0.1:18100 -r 16000 -s /home/pi/dxlAPRS/aprs/aprspipe -c /home/pi/dxlAPRS/aprs/qrg2.txt -e -v -k &

Diese Zeile startet den Empfänger am angegebenen SDR-Stick. Die Datei qrg2.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 und die Audiopipes müssen nicht per Hand erstellt werden.

Der Name der Autopipe 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 Audiopipe am richtigen Ort 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 qrg2.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 Gain Control (AGC)
# p 8 1 = AGC an / p 8 0 = AGC 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 mit 3 KHz AFC Bereich

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 und dem Dopplereffekt die Empfangsfrequenz „wandert“.

Erklärung:

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

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

sdrtst -t 127.0.0.1:18100 -r 16000 -s /home/pi/dxlAPRS/aprs/aprspipe -c /home/pi/dxlAPRS/aprs/qrg2.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
-e = enable sending SDR Data hidden in audio channels (tune/afc/rssi..)
-c <configfilename> = Read channels config from file (qrg0.txt)
-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 „qrg2.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 – kann entfallen bei abgesetztem Betrieb).
  • „keep connection“ soll dafür sorgen dass SDRTST sich neu startet wenn es beendet wird (laut OE5DXL).

AX25 Signale dekodieren

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

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 in APRSMAP die Daten zum endgültigen AXUDP Port in udpgate4 schicken.

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 (kann entfallen bei abgesetztem Betrieb).
  • 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

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 vom 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 einem 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 aprs.hc.r1.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) (kann entfallen bei abgesetztem Betrieb).

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 indirekt empfangen wurden (z.B. digipeatet), 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 indirekten Pakete für 1440 Minuten (=24 Stunden) angezeigt.

Optional: Objektiliste anzeigen lassen

Ab Version 0.72 von udpgate4 kann auf der HEARD-Seite auch eine Liste der APRS-Objekte und APRS-Items angezeigt werden. Diese wird mit -B aktiviert, gefolgt von der Zeitspanne in Minuten aus welcher die Objekte angezeigt werden sollen.

Beispiel: -B 60 zeigt alle Objekte, welche über Funk in den letzten 60 Minuten empfangen wurden in einer separaten Liste an.

Beispielinhalt der netbeacon.txt:

!5014.00NR01100.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 das Symbol „Schwarzer Diamant mit R“ für das Gateway auf der APRS Karte generiert. Dieses Symbol ist definiert für RX-only APRS iGates, also nur empfangende iGates. Man kann natürlich auch beliebige andere APRS Symbole für die Station nutzen, wenn man dies möchte.

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“. Neben / und \ gibt es auch noch Overlay-Symbole mit anderen Tabellen-Zeichen. 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, seht 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

Alle 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)

Startskripte und Dateien als Download

Alle Beispielskripte und Dateien können direkt von Github in den aprs Programmordner heruntergeladen werden:

git clone https://github.com/dl1nux/dxlAPRS-SDR-iGate.git ~/dxlAPRS/aprs

Sollten die Dateien im falschen Ordner landen, einfach alles in den aprs Programmordner kopieren oder verschieben. Enthalten sind Startskripte für 2m Empfang, 70cm Empfang oder für kombinierten 2m und 70cm Empfang mit zwei SDR-Sticks. Und zwar jeweils für abgesetzten Betrieb ohne grafische Oberfläche (GUI) oder mit grafischer Oberfläche.

Bitte unbedingt die beigefügte README.md Datei lesen, dort finden sich weitere wichtige Hinweise!

Vor Inbetriebnahme müssen folgende Parameter in den Dateien angepasst werden:

  • aprs-2.sh / aprs-70.sh / aprs-2-70.sh (oder in der „gui“ Version): Im Abschnitt udpgate4 (letzte Zeile) müssen das eigene Rufzeichen (MYCALL) und der passende APRS Passcode (Parameter -p 12345) eingetragen werden.
  • netbeacon.txt: Bitte die eigenen Koordinaten des Empfangsstandortes angeben im Format GRAD MINUTEN.
  • qrg2.txt bzw. qrg70.txt: Der parameter „P 5“ gibt die Frequenzabweichung des SDR-Stecks in ppm an und ist idealerweise „0“. SDR-Sticks mit TCXO benötigen keinen Korrekturwert (z.B. Nooelec NESDR Smart).

Starten der Programme

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

cd /home/pi/dxlAPRS/aprs
./aprs-gui-2.sh

Automatischer Start in der grafischen Oberfläche

Soll eines der Skripte beim Starten des RaspberryPi automatisch ausgeführt werden, bitte die entsprechende *.desktop Datei in den Ordner /home/pi/.config/autostart kopieren. Sollte der Ordner /home/pi/.config im Dateimanager nicht angezeigt werden, muss dies aktiviert werden unter „Ansicht“ und „Versteckte anzeigen“. Es ist zu empfehlen in das Skript eine kleine Pause am Anfang einzubauen, damit der  Rechner Zeit zum hochfahren hat.

Beispiel: sleep 20 am Anfang des Skripts sorgt dafür, dass die restlichen Befehle erst nach 20 Sekunden abgearbeitet werden.

Automatisches Starten auf einem Standalone-PC ohne grafische Oberfläche

Es hat sich bewährt das Skript direkt nach dem Hochfahren mit der crontab zu starten. Dazu muss die Datei /etc/crontab als root (sudo) editiert werden:

sudo nano /etc/crontab

Nun fügt man folgenden Eintrag der Tabelle hinzu:

@reboot pi /home/pi/dxlAPRS/aprs/aprs-2.sh

„pi“ nach dem „@reboot“ ist der Benutzer, unter dem das Skript ausgeführt werden soll. Es sollte NICHT! als root laufen. Wenn der Dateiname des Skripts abweicht, bitte entsprechend eintragen.

Es gibt darüber hinaus auch andere Möglichkeiten das Skript automatisch starten zu lassen. Das ist euch dann selbst überlassen. Falls euer Rechner zu lange zum booten braucht und das Skript zu schnell startet, verpasst ihm einfach einen „sleep 20“ oder so am Anfang der Datei, dadurch startet es später.

Fertiges Image

Für den Raspberry Pi habe ich fertige Images erstellt, welche mit dem WIN32DiskImager auf eine SD Karte geschrieben werden können. Es enthält bereits alle notwendigen Softwarepakete und alle Startskripte für APRS und Wettersondenempfang.

Image mit grafischer Oberfläche:

Dieses Image basiert auf RasbperryPi OS with Desktop (Vollversion). Es kann auf eine 8 GB SD-Karte aufgespielt werden, die Partition sollte anschließend noch auf Kartengröße vergrößert werden. Es sind die bekannten Anpassungen in den Skript- und Textdateien wie oben beschrieben zu machen.

Der Download (ca. 2 GB) kann hier erfolgen: LINK
Letztes Update: 31.12.2020

Login-Name: pi
Passwort: aprs

Image ohne grafische Oberfläche:

Es basiert auf RasbperryPi OS (Lite-Version) mit Patch-Stand 25. Oktober 2020. Das Image ist ca. 3,4 GB groß und es kann auf eine 4 GB SD-Karte aufgespielt werden. Dateisystem und Partition können selbstverständlich noch vergrößert werden bei Bedarf. Es sind die bekannten Anpassungen wie oben beschrieben zu machen.

Größe: 1,23 GB
Download: 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

Support:

Schreibe einen Kommentar

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