APRS Digi auf RaspberryPI oder Linux mit dxlAPRS und TNC

Im Folgenden wird erklärt, wie man mit den dxlAPRS Tools und einem TNC(2) einen leistungsfähigen APRS Digipeater mit iGate Funktion aufsetzt. Grundvoraussetzung ist die Grundinstallation der dxlAPRS Toolchain, wie HIER beschrieben. Aus dem Archiv tatsächlich benötigt werden aber nur folgende Anwendungen:

Stand: 12.07.2022

1. Installation der Skripte

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

cd ~/dxlAPRS/aprs/
git clone https://github.com/dl1nux/dxlAPRS-APRS-Skripte

Die Dateien landen nun im Unterordner /dxlAPRS-APRS-Skripte. Von dort aus verschiebt oder kopiert man sie in den /aprs Ordner.

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

In den aktuellen Skripten werden die wichtigen anzupassenden Parameter in der Datei config.txt eingetragen. Diese Informationen werden von allen Skripten eingelesen und dort automatisch eingesetzt. Vor Inbetriebnahme müssen daher mindestens das Call des iGates sowie der Passcode in die config.txt eingetragen werden und die netbeacon.txt angepasst werden.

Das Archiv enthält folgende für den Digi benötigte Dateien:

config.txt Konfigurationsdatei für wichtige Parameter
start-digi-tnc.sh Startskript für den APRS-Digi (in der Konsole)
start-digi-tnc-gui.sh Startskript für den APRS-Digi (in der grafischen Oberfläche)
stop.sh Stoppe alle Prozesse des APRS Digis
digibeacon.txt Baken welche über HF ausgestrahlt werden (Weitere Infos im Bakenfile)
netbeacon.txt Baken welche über das iGate ins APRS-IS Netzwerk gesendet werden
frametypes.txt Enthält eine ausführliche Auflistung der APRS-Frametypes (nützlich beim Frametype-Filter im Digipeater)
readme.md Weiterführende Informationen
Desktop/desktop-digi-tnc.desktop Desktopverknüpfung für den Start des Skripts in der GUI.

2. Detaillierte Beschreibung

Die folgende Beschreibung erklärt den Aufbau des Startskripts ausführlich. Es lohnt sich sehr, sich damit etwas genauer zu beschätigen. Man kann da noch sehr viel mehr individuell einstellen. Die genannten Paramater sind eine Empfehlung von mir und Chris OE5DXL für den Betrieb eines APRS Digis.

Warnung: Diese Konfiguration erzeugt einen sendenden APRS Digipeater. Dieser darf unbemannt nur mit einer gültigen Relais-Genehmigung erfolgen!

Wichtig: Bitte auf die Programm- und Dateipfade achten. In der config.txt ist /home/pi/dxlAPRS/aprs voreingestellt.

Mindestens zu ändernde Angaben in der config.txt:

  • Devicename (TTYPORT) und Baudrate (TTYBAUD) für TNC
  • Rufzeichen des Digipeaters und des iGates (MYCALL) sowie in der digibeacon.txt falls genutzt
  • Ziel-APRS-Gateway (SERVERURL) mit Port (SERVERPORT)
  • APRS Passcode passend zum Rufzeichen (PASSCODE)

Folgende stellen in Dateien müssen noch händisch angepasst werden

  • In den Bakendateien netbeacon.txt und digibeacon.txt müssen die Koordinaten und der Bakentext angepasst werden (sollten bei beiden identisch sein).

Optional:

  • Aussenderadius in km für APRS-IS Aussendungen über HF (udpgate4 -R …+10:“20″…) entspricht 20km Radius um die angegebenen Koordinaten in der netbeacon.txt. Bitte diesen Wert so klein wie möglich halten! Wenn man diese Aussendungen gar nicht benötigt, kann man den Eintrag „:20“ einfach entfernen. Dann werden keine Positionspakete mehr über HF ausgestrahlt, sondern nur noch APRS-Nachrichten. In Gegenden mit viel Frequenzbelegung ist dies dringend zu empfehlen.

2.1. Laufende Prozesse beenden

killall -9 udpgate4 udpbox udpflexsleep 3

Erklärung:
Beendet sicherheitshalber bereits laufende Prozesse. Anschließend wird 3 Sekunden gewartet bis es weitergeht.

2.2. Pfad definieren

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

Erklärung:
Setzte den Pfad der Anwendungen in den Systempfad, damit die Anwendungen direkt gefunden werden können

2.3. TNC initialisieren

udpflex -t /dev/ttyS0:9600 -k -d 5000 -p 1:15 -p 2:255 -p 3:10 -p 128:0 -U 127.0.0.1:9201:9299 -u -v &

Erklärung:
Stellt die Verbindung zum TNC über das KISS Protokoll her.

  • -t = Devicename:Baudrate an dem der TNC hängt (bitte anpassen!)
  • -k = Aktiviere KISS Protokoll (in TF 2.7b etc.) enthalten .
  • -p = TNC Parameter TXDelay (x10 ms), Persistence, Slottime etc. (siehe udpflex -h)
  • -U = IP:dest:source = Verbindungen zu udpbox und udpgate4
  • -u = bei USB Verbindungen zum TNC wird ein reconnect zum TNC erzwungen bei Trennung (stört bei nicht-USB Verbindungen nicht)
  • -v = Zeigt AX25 Monitor und weitere Ausgaben an (nicht notwendig beim standalone Betrieb)

2.4. Digipeater aktivieren

udpbox -R 127.0.0.1:9201 -l 127.0.0.1:10201 -d DB0XYZ-10 -p 0,1,2,5,8,17 -t 1740,28 -f p28,29,33,35-39,41-43,46,47,58,59,61,64,91,95,96,123 -k 0/0/20000 -b 600:/home/pi/dxlAPRS/aprs/digibeacon.txt -x APLWS*,NOCALL -l 127.0.0.1:9299 -v &

Erklärung:
Startet den APRS Digipeater

  • -R = Empfange Daten von udpflex …
  • -l = … und sende diese weiter an udpgate4 (iGate). Die empfangenen Daten landen dann im APRS-IS Netzwerk, also auch z.B. auf aprs.fi und aprsdirect.com
  • -d = Aktiviere den Digipeater unter dem Rufzeichen „DB0XYZ-10“
  • -p = Digipeating Optionen (siehe udpbox -h)
  • -t = Dupe Filter in Sekunden für alle APRS Pakete bzw. für unveränderliche Baken (nicht bewegend). Gilt übrigens auch für eigene Bakenaussendungen! Wenn man nur eine Bake alle 10 Minuten sendet laut -b, würde diese auch erst wieder nach 29 Minuten gesendet werden (29*60 = 174 Sekunden). Ab drei unterschiedlichen Baken und/oder Objekten (=30 Min) spielt das keine Rolle mehr.
  • -f = Frametype-Filter (positiv oder negativ) für APRS Aussendungen über HF (siehe beiliegende frametype.txt). Das angegebene Beispiel verhindert z.B. Digipeating von APRS-IS Aussendungen (dec 125 fehlt in der Positivliste [„Was bereits aus dem Internet kommt, muss nicht erneut digipeatet werden!“]).
  • -k = Filtert alles um eine bestimmte Position im angegebeben Radius (außer APRS Textnachrichten). Die im Beispiel genannten Parameter filtern quasi alle Pakete ohne Positionsangaben, welche dadurch für APRS keinen Mehrwert und nur lokale Bedeutung haben.
  • -b = Aussendung von HF Baken aus der angegebene Datei im Rhytmus von X Sekunden (600 = 10 Minuten). Es können mehrere Baken sowie Objekte hinterlegt werden. Mehr Infos siehe Bescheibung in digibeacon.txt
  • -x = Ignoriert Frames beim Digipeating welche die genannten Calls enthalten (egal an welcher Stelle), z.B. APLWS* = Wettersonden (Mehrere Calls sind kommagetrennt möglich). Hilfreich gegen lokale „Spammer“.
  • -l = (Schließt -d „Digi Funktion“ ab): Alle zu sendenden Daten weiterleiten ans TNC (udpflex)
  • -v = Zeigt erweitere Infos an im Betrieb (nicht notwendig beim standalone Betrieb)

2.5. iGate starten

udpgate4 -s DB0XYZ-10 -R 127.0.0.1:9299:10201+10:20#144800 -H 10080 -I 1440 -u 50 -n 30:/home/pi/dxlAPRS/aprs/netbeacon.txt -g rotate.aprs2.net:14580#m/100,-t/t,-u/APLWS*/APRARX -p PASSCODE -t 14580 -w 14501 -v -D /home/pi/dxlAPRS/aprs/www/ -0 &

Erklärung:
Startet das APRS iGate.

  • -s = Rufzeichen des iGates. Sollte mit der Angabe bei udpbox übereinstimmen.
  • -R = Input/Output iGate zu HF inkl. Begrenzung der übertragenden Byte/s „+XY“, des Radius der APRS-IS Aussendungen in km „:20“ und Bezeichnung des HF Ports „#144800“. Der Radius kann auch weggelassen werden, dann werden nur APRS-Nachrichten aus dem APRS-IS Netzwerk eingespielt. Das bedeutet, dass APRS-Frames aus diesem Radius um das Gateway herum, welche direkt in das APRS-IS Netzwerk eingespielt wurden (z.B. über Handy-Apps wie aprsdroid), nochmals über HF ausgestrahlt werden als VPN Paket (dec 125).
  • -H und -I = Zeitraum für die MH-Listen auf dem Webinterface des iGates (direkt gehört und via Liste)
  • -u 50 speichert zu jedem Call 50 komplette Bakenstrings. Diese lassen sich über den Paketzähler (Spalten Pack oder Junk) im Webinterface anzeigen. Dieser Parameter ist optional!
  • -n = Sende eine Bake in das APRS-IS Netzwerk im angegebenen Minutentakt aus der angegebenen Datei (Bitte genaue Formattierung und Koordinatenformat beachten!)
  • -g = Verbindung zum APRS Gateway adresse:port#Filter (Informationen zu APRS-IS Filtern z.B. hier: http://dxlwiki.dl1nux.de/index.php?title=Aprsis-filter. Mehrere Filter können mit einem Komma , getrennt werden. Der Filter -u/APLWS*/APRARX sorgt dafür, dass Wettersonden-Objekte aus dem APRS-IS Netzwerk aus dem Datenstrom herausgefitlert werden und damit nicht auf dem HF-Sender landen, denn dort haben sie nichts zu suchen. Es kann auch ein File mit mehreren Gateway-Zielen angegeben werden, z.B. „-g :igates.txt“. Die igates.txt enthält dann je Zeile die komplette Syntax von -g, also inkl. Port und Filterangaben. Es wird das erste funktionierende Gateway genutzt. Geht das nicht, springt es zum nächsten und prüft zwischendurch die Erreichbarkeit vom ersten Gateway.
  • -p = APRS Passcode passend zum Rufzeichen (https://apps.magicbug.co.uk/passcode/)
  • -t = Das eigenes Gateway kann selbst (auch per Telnet) auf diesem Port connected werden (z.B. für lokale Anwendungen wie SVXLink usw.)
  • -w = Port für das Webinterface des Gateways (Webinterface kann dann unter http://IP-Adresse:Port im Webbrowser aufgerufen werden.
  • -v = Zeige erweiterte Informationen an (nicht notwendig beim standalone Betrieb)
  • -D = Pfad zum Webinterface-Ordner (enthält unter anderem info.html und eine beliebig anpassbare CSS Datei fürs Webinterface)
  • -0 = Dies ist eine „Null“ und sorgt dafür, dass bei Telnet Connects auf Port 14580 (-t ) die Angabe von weiteren Filtern notwendig ist (spart Traffic)

Ein großer Vorteil der dxlAPRS Tools beim Digi ist das gute Webinterface des Gateways. Es ist sehr informativ sowohl für Sysops als auch für User. Wenn möglich, sollte man das Gateway im Hamnet verfügbar machen.

3. Autostart

Möchte man das Startskript bei jedem Start des Rechners automatisch starten gibt es mehrere Möglichkeiten:

Start über CRONTAB:

 sudo nano /etc/crontab

Ans Ende der CRON Tabelle setzt ihr folgende Zeile:

 @reboot pi /home/pi/dxlAPRS/aprs/start-digi-tnc.sh

Erste Spalte = Starte beim Reboot
Zweite Spalte = User unter dem der Befehl ausgeführt wird (möglichst als User und nicht als root ausführen)
Dritte Spalte = Kompletter Pfad zum Startskript

Das Skript sollte nun bei jedem Hochfahren des Pi/Linux Rechners automatisch als User „pi“ starten.

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.

4. Fertige Images für den RaspberryPi

Informationen und Downloadlinks zu den fertigen Images von DL1NUX findet ihr ab sofort auf einer eigenen Seite.


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

4 Gedanken zu „APRS Digi auf RaspberryPI oder Linux mit dxlAPRS und TNC

  1. Hello Attila

    Question, if i want to use „-a“ paramater un udpbox with more than 1 callsign, like LU2ETE,LU9ESQ,NA1SS is possible?….What is the format?

    Vielen Dank

    Walter
    LU8ESQ

  2. Hello Attila,
    How are you? … I tell you that I am wanting to use apsmap in linuxmint 64bits, but when I want to move the map with the mouse, the application closes and I have this message in the console:
    ./aprs.sh: line 2: 1630 Segment violation (`core ‚generated) ./aprsmap-x86_64

    Any solution?

    Thanks

    Walter

Schreibe einen Kommentar zu Attila Antworten abbrechen

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.