LoRa APRS iGate mit dxlAPRS und RA02 auf einem RaspberryPi

Mit dem neuen Tool ra02 von Chris OE5DXL ist es auf einfache Weise möglich ein LoRa APRS iGate mit der Software dxlAPRS auf einem RaspberryPi zu betreiben. Der Vorteil ist, man kann es problemlos auch mit anderen Chains (z.B. SDR RX auf 2m/70cm oder einen RX/TX mit einem TNC) kombinieren und gemeinsam in einem iGate betreiben. In der Vergangenheit habe ich so etwas schon unter dem Namen „Multi-APRS iGate“ beschrieben.

Stand: 27.11.2021

Im Gegensatz zur vorherigen Variante mit dem RPi-LoRa-KISS-TNC von OE9TKH läuft das Tool ra02 ohne Abhängigkeit von Libraries oder Python und greift direkt auf die GPIO Pins zu, ist also selbständig lauffähig.

Weitere Infos zum Tool und zur Verfügbarkeit findet man im dxlWiki: http://dxlwiki.dl1nux.de/index.php?title=Ra02

Als Hardware wird lediglich ein passendes LoRA APRS Pi-HAT benötigt. Wenn man keines bekommt, kann man sich auch selber eines zusammenbauen bzw. einfach ein passendes Modul mit den GPIO Pins verbinden. Auf dieser Seite habe ich dies bereits genauer beschrieben.

Installationsanleitung

1. SPI Schnittstelle deaktivieren

Ganz wichtig: Die SPI-Schnittstelle darf nicht aktiviert sein. Falls aktiviert, muss diese ausgeschaltet sein. Bei raspi-config kann man dies im Punkt „Interface Options“ kontrollieren. In der grafischen Oberfläche ist es unter „Start“ – „Einstellungen“ – „Raspberry Pi-Konfiguration“ – „Schnittstellen“ zu finden. Wurde der Wert geändert, muss der RasPi neu gestartet werden. Standardmäßig ist SPI aber ohnehin deaktiviert.

2. dxlAPRS Toolchain installieren

Die Installation der Tools ist hier ausführlich beschrieben: http://dxlwiki.dl1nux.de/index.php?title=Installationsanleitung

Für den RaspberryPi Version 1 und Zero/W(H) wird die Version armv6, für alle neueren RaspberryPIs die Version armv7hf benötigt. Bitte bei der Installation beachten!

Beispiel für RaspberryPi 2B und neuer:

cd ~wget http://dxlaprs.hamspirit.at/dxlAPRS_armv7hf-current.tgz
tar xzvf dxlAPRS_armv7hf-current.tgz --strip=1 scripts/updateDXLaprs
./updateDXLaprs dxlAPRS_armv7hf-current.tgz

Die dxlAPRS Tools befinden sich anschließend unter ~/dxlAPRS/aprs

Ein manuelles Update mit dem Updateskript von DL1NUX, wie in der Installationsbeschreibung erwähnt, sollte noch durchgeführt werden.

3. ra02 installieren

Da ra02 derzeit noch in Entwicklung ist, ist es noch nicht in den fertigen Paketen und Downloadquellen enthalten. Es muss noch manuell vom Entwickler OE5DXL geladen werden. Einfach im aprs Ordner ablegen und die Zugriffsrechte anpassen. Weitere Infos zu ra02 findet man im dxlWiki Artikel zum ra02.

cd ~/dxlAPRS/aprs/
wget -N http://oe5dxl.hamspirit.at:8025/tmp/ra02
chmod 755 ra02

4. Beispielskripte laden

Natürlich gibt es wie von mir gewohnt auch Beispielskripte zum herunterladen, und zwar im meinem neuen Github repository, welches alle APRS Skripte in überarbeiteter Fassung für dxlAPRS enthält.

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

In den neuen Skripten ist nur die Datei config.txt anzupassen und zusätzlich die Bakendatei netbeacon.txt. Damit können dann alle Skripte genutzt werden. Bitte unbedingt die Hilfe in README.md vollständig durchlesen und beachten. Die Skripte gibt es sowohl für die Nutzung im abgesetzten Betrieb in der Konsole als auch für die Nutzung in der grafischen Oberfläche (*-gui.sh). Das Repository enthält auch ein Skript für ein Multi-APRS RX-only-iGate mit SDR Empfang auf 2m und 70cm sowie LoRa APRS Empfang.

Für LoRa APRS relevante Dateien im Repository:

config.txt Zentrale Konfigurationsdatei für die wichigsten Parameter
digibeacon.txt Enthält die HF-Bake(n) für udpbox
netbeacon.txt Enthält die Netz-Bake für das iGate udpgate4
start-lora-rx.sh Startet das RX only Gateway im Konsolenbetrieb
start-lora-rxtx.sh Startet das RX/TX Gateway im Konsolenbetrieb
start-lora-rx-gui.sh Startet das RX only Gateway in der grafischen Oberfläche
start-lora-rxtx-gui.sh Startet das RX/TX Gateway in der grafischen Oberfläche
stop.sh Stoppt alle Prozesse
Desktop/desktop-lora … Desktopverknüpfungen für die grafische Oberfläche

5. Konfiguration

5.1. config.txt

In der config.txt müssen mindestens folgende Parameter angepasst werden:

Falls die Empfangs- und/oder Sendefrequenzen vom Standard (433,775 MHz) abweichen sollen, können auch noch die abweichenden Frequenzen erfasst werden

  • LORARX (Empfangsprequenz)
  • LORATX (Sendefrequenz)

5.2. netbeacon.txt

Die Datei netbeacon.txtenthält den Bakentext, welcher direkt per Internet an den APRS-Server gesendet wird. Dadurch wird das iGate auch auf den Karten bei aprs.fi und aprsdirect.com angezeigt. Hier darf nur eine Bake drin stehen!

Hier müssen die eigenen Koordinaten ergänzt eingesetzt und der Bakentext angepasst werden. Über den Koordinaten-Umrechner könnt ihr euch die richtigen Koordinaten heraussuchen. Ihr benötigt den Wert in Grad-Minuten mit zwei Stellen nach dem Komma.

Das für LoRa APRS vorgesehene Symbol (Schwarzer Diamant mit „L“ = L&) ist in der Beispieldatei bereits integriert.

!5010.00NL01100.00E&LoRa APRS iGate von MYCALL
#
# Geokoordinaten in Grad und Dezimalminuten ohne °-Symbol
# Beispiel 50°10.00 N = 5010.00N und 011°00.00 E = 01100.00E
# Die Ost-Gradzahl muss immer! dreistellig angegeben werden, also 011 bei 11 Grad Ost
#
# APRS-Symbol ist änderbar durch ersetzen der Symbolzeichen nach dem N
# und nach dem E, siehe auch APRS Symboltabelle unter:
# https://www.yachttrack.org/info_camper/downloads/APRS_Symbol_Chart.pdf

5.3. digibeacon.txt

Diese Datei muss nur bearbeitet werden, wenn euer iGate auf Funk senden soll. Sie enthält die Bakentexte, welche über Funk ausgesendet werden sollen. Es ist möglich mehrere Baken hier einzutragen. Der Intervall der Aussendung wird bei udpbox festgelegt. Weitere Infos zur digibeacon.txt findet ihr im entsprechenden Artikel im dxlWiki.

DB0NU-10>APNL01:=5010.52N/01044.39E#APRS iGate Altenstein JO50IE www.bravo37.de

Wichtig ist auf jedefall, dass hier das richtige Abesendercall eingetragen wird. Es kann und wird nicht durch die config.txt eingelesen, sondern muss explizit in dieser Datei hinterlegt werden.

6. Beispielkonfigurationen

Im Folgenden sieht man zwei Beispiele für die Nutzung von ra02 als reines RX-only iGate oder alternativ auch als sendendes iGate.

6.1. RX-only iGate (nur empfangen)

ra02 -p 8 10 9 11 -a -L 127.0.0.1:9702:0 -v
udpbox -R 127.0.0.1:9702 -l 127.0.0.1:10702 -r 127.0.0.1:9999 -v
udpgate4 -s MYCALL -R 127.0.0.1:0:10702 -H 10080 -I 1440 -u 50 -B 60 -n 30:netbeacon.txt -g rotate.aprs2.net:14580#m/1,-t/t -p PASSCODE -t 14580 -w 14501 -D /home/pi/dxlAPRS/aprs/www/ -v &
  • Reines Empfangs-iGate
  • ra02 greift direkt auf die 4 GPIO Pins MINO,MOSI,NSS/Enable und SCK zu (-p). Diese Pins müssen benannt werden. Die AGC wird aktiviert (-a) und die empfangenen Pakete werden im AXUDP Format an Port 9702 gesendet.
  • udbox könnt man in dieser Konstellation auch weglassen. Hier dupliziert es den AXUDP Datenstrom auf Port 10702 und 9999. An Port 9999 könnte man nun z.B. mit APRSMAP die empfangenen Pakete auf einer Karte anzeigen lassen.
  • udpgate4 ist das eigentliche iGate und nimmt die AXUDP Daten von Port 10702 entgegen (-R). Es verbindet sich mit dem entfernten APRS-Server (-g) und sendet auch eigene Baken ins APRS-IS-Netzwerk (-n). Die restlichen Optionen dienen der Funktion und Darstellung des Webinterfaces des iGate. Weitere Infos hier: http://dxlwiki.dl1nux.de/index.php?title=Udpgate4

6.2. RX/TX iGate (Senden und Empfangen)

Da die LoRa APRS Gatewayplatinen und Chips grundsätzlich auch sendefähig sind, kann man damit auch ein sendefähiges iGate bauen. Vieles ist im Bereich LoRa APRS aber noch experimentell, und es werden noch nicht alle Funktionen unterstützt, die von normalem APRS gewohnt sind. Deswegen ist Senden eher die Ausnahme.

Zusätzlich muss man bedenken, dass man in manchen Ländern (auch in DL) bei unbemanntem Betrieb eine Genehmigung der staatlichen Regulierungsbehörde benötigt (Relaisrufzeichen, Frequenzzuteilung etc.). Hierbei spielt die Sendeleistung aber keine Rolle. Da wir es für Amateurfunk einsetzen (Sender und Empfänger sind Funkamateure), ist es keine ISM-Anwendung mehr. Bei ausschließlich bemanntem Betrieb ist dies jedoch nicht erforderlich.

Beim sendefähigen iGate ist kaum mehr Aufwand erforderlich. Es wird dazu keine weitere Software benötigt, wenn alle vorher beschriebenen Schritte bereits durchgeführt werden. Nur das Startskript muss angepasst werden.

Was könnte bzw. sollte überhaupt über LoRa APRS ausgesendet werden?

  • Regelmäßige APRS Positionsbake als Identifikation
  • APRS Textnachrichten
  • Digipeating empfangener APRS-Pakete (nur bei iGates ohne Netzanbindung!)
  • APRS-IS Aussendungen (sollten tunlichst unterlassen werden!)

Die Bake macht natürlich Sinn bei unbemannten Stationen und ist sogar mancherorts eine Pflichtaussendung.

Digipeating macht selten Sinn. Bei iGates ohne Netzanbindung (Internet, Hamnet), kann es sinnvoll sein lokale Stationen durch Digipeating bis ans nächste iGate zu führen, welches ans Netz angebunden ist und die Daten in das APRS-IS Netzwerk überträgt. Damit kann man auch diese Positionspakete auf aprs.fi & Co sehen. Bei iGates mit Netzanbindung sollte man dies tunlichst unterlassen, da es die Frequenz nur zumüllt.

Glücklicherweise hat man mit udpbox aus der dxlAPRS Toolchain einen herausragenden Digipeater, welcher unzählige Konfigurations- und Filtermöglichkeiten hat. Diese sind auch notwendig, da durch die geringe Datenübertragungsrate des LoRa Übertragungsverfahrens die Aussendungen deutlich länger sind als bei normalen 1200 Baud AFSK, und damit die Belegung der Frequenz in Gebieten mit hoher Aktivität ein Problem werden kann. Bei der Tracker-Software von OE5BPA kann man das SSID-Digipeating aktivieren indem man das Ziel-Rufzeichen um die SSID „-1“ anpasst. Die udpbox beherrscht SSID-Digipeating und setzt dies in das bekannte WIDE Verfahren um. Sicherlich ist es auch möglich „echtes“ WIDE Digipeating in der Tracker-Software hinzuzufügen, allerdings würde es die Sendelänge unnötig erhöhen. Ein „-1“ genügt auch. Bei den Trackern von Bernd OE1ACM bietet die Software hingegen noch keine Möglichkeit Digipeating zu aktivieren (weder über SSID noch WIDE).

Wenn das eigene iGate über Hamnet oder Internet mit dem APRS-IS Netzwerk verbunden ist, kann man APRS-Nachrichten an User in Reichweite übermitteln lassen, egal woher diese letzendlich kommen (APRS, DMR, Handy-Apps usw.). Wenn die Tracker oder Empfangsgeräte dies unterstützen, können diese Informationen dort angezeigt werden.

Es ist natürlich technisch auch möglich Positionspakete aus dem APRS-IS Netzwerk über LoRa APRS zu übertragen, z.B. Daten die von Handy-Apps geschickt werden, oder Wetterstationen die Ihre Pakete direkt übers Internet übermitteln. Davon wird aber dringend abgeraten! Bei falscher Konfiguration wird das Gateway nicht mehr mit dem Senden aufhören, da es die vielen Daten unter Umständen nicht rechtzeitig losbekommt. Zudem macht es auch kaum Sinn, da im LoRa APRS meist nicht per „HF“ mitgehört wird wie bei normalem 1200 Baud APRS. Technisch geht es, aber ich beschreibe es nicht in meiner Anleitung. Wer darüber mehr wissen will, soll mich direkt kontaktieren.

Ein Beispiel wie ein RX/TX iGate gestartet wird:

ra02 -p 8 10 9 11 -a -w 17 -L 127.0.0.1:9702:9799 -v
udpbox -R 127.0.0.1:9702 -l 127.0.0.1:10702 -r 127.0.0.1:9999 -b 600:digibeacon.txt -l 127.0.0.1:9799 -v
udpgate4 -s MYCALL -R 127.0.0.1:9799:10702+10 -H 10080 -I 1440 -u 50 -B 60 -n 30:netbeacon.txt -g rotate.aprs2.net:14580#m/1,-t/t -p PASSCODE -t 14580 -w 14501 -D /home/pi/dxlAPRS/aprs/www/ -v
  • Dieses iGate empfängt und sendet auch.
  • Bei ra02 ist zusätzlich ein „listen port“ 9799 mit angegeben. Alles was dort hingeschickt wird, wird ausgesendet. Mit -w wird auch noch die Sendeleistung auf das Maximum gesetzt.
  • Bei udpbox ist zusätzlich noch eine Bake (-b) alle 10 Minuten (600 Sekunden) aktiviert welche über Funk ausgesendet werden soll (erzeugte Baken gehen an Port 9799. Ein Digipeater ist hier nicht aktiv. Da dieses iGate über eine Internetverbindung verfügt, kann man hier auf den Digipeater verzichten, denn der würde nur die QRG zumüllen.
  • Bei udpgate4 ist hier auch noch der Ziel-Port für zu sendende Pakete bei -R mit angegeben (vorher 0). Dieses können z.B. APRS-Nachrichten sein die aus dem APRS-IS Netzwerk kommen und an einen Empfänger in der Nähe des iGates zugestellt werden sollen. Die Aussendung von Positionspaketen von APRS-IS nach Funk ist hier nicht aktiviert, macht in LoRa APRS auch wenig Sinn und würde ebenfalls nur die Frequenz zumüllen.

6.3. LoRa APRS Digipeater

Hier folgt demnächst eine Beschreibung eines reinen LoRa APRS Digipeaters ohne Netzwerkanbindung.

7. Autostart

7.1. 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.

7.2. 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/start-lora-rx.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.


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.

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