LoRa APRS Gateway mit dxlAPRS und TTGO LoRa Board

Stand: 01.09.2021

Hier habe ich schonmal beschrieben wie man LoRa APRS mit einem LoRa HAT für den RaspberryPi mit dxlAPRS verbinden kann. Kompatible LoRa HATs für den RaspberryPi  sind aber inzwischen sehr schwierig zu bekommen. Wenn man keinen Selbstbau nach Andreas OE1ROT macht, bleibt einem nur das OE1ACM Board (Gateway V) übrig. Das ist aber derzeit schwer zu bekommen.
Es lag also Nahe mit den beliebten TTGO Boards etwas anzufangen. Doch wie bringt man die TTGO Boards und dxlAPRS zusammen?

Von SQ9MDD wurde eine Software für die TTGO Boards entwickelt, welche eine KISS Schnittstelle bieten soll. Dies funktionierte ad hoc jedoch nur mit der Software APRX. Alle Versuche diese mit dxlAPRS (udpflex) zu verbinden, scheiterten bei mir. Es wurde keine KISS Verbindung hergestellt. Andere wollen es geschafft haben, keiner schreibt aber wie 🙂

Im August 2021 entdeckte ich die Software von Hansi DL9RDZ auf Github, welche auf der iGate Software von OE5BPA basiert und um eine KISS Schnittstelle erweitert wurde. Hansi hat auch gut die Verbindung zu dxlAPRS beschrieben. Einmal ausprobiert hat dies einwandfrei funktioniert. Das TTGO arbeitet quasi als KISS-TNC und übermittelt die Daten zuverlässig an udpflex aus den dxlAPRS Tools. Dieses wiederum schickt die Frames an das iGate udpgate4.
Man kann so auch ein bestehendes iGate einfach mit LoRa APRS erweitern. Das ist praktisch und günstig.

TTGO Board vorbereiten

Man muss als erstes das TTGO mit der Software von Hansi DL9RDZ bespielen. Eine Anleitung dazu gibts auf Github und auch auf Youtube. In Windows nimmt man am besten MS Visual Studio Code mit dem Plugin Platform.io. Es muss zuerst die Datei data/is-cfg.json bearbeitet werden.

Folgende Zeilen müssen geändert werden:

  • im Abschnitts „aprs_is“ => „active“: false,  (deaktiviert iGate in der Software)
  • im Abschnitt „digi“ => „active“: false,  (deaktiviert den digipeater)
  • Bei „callsign“: „NOCALL-10“ muss noch ein Rufzeichen eintragen, da die Software auf dem TTGO nicht startet wenn anderes Call eingetragen wird
  • Optional: im Abschnitt „display“ => „always_on“: false,   (deaktiviert das Display am TTGO, wird in der Regel ja nicht benötigt)

Anschließend muss die Software kompiliert und hochgeladen werden. Die Konfigurationsdatei wird im Platform-IO mit „Upload File System image“ hochgeladen. Das Board muss sowohl nach dem Hochladen der Software als auch nach dem Hochladen der Config-Datei rebootet werden. Das TTGO Board kann nun mit einem USB Kabel an den RaspberryPI angeschlossen werden und erscheint dort z.B. als Device /dev/ttyUSB0.

Mit dxlAPRS verbinden

Hansi beschreibt, das die direkte serielle KISS Verbindung nicht auf Anhieb klappt. Ähnliches hatte ich schon mit der Software von SQ9MDD erfahren. Es wird daher socat als Bindeglied zwischen dem USB-Device und udpflex verwendet. Falls socat nicht installiert ist, kann es wie folgt schnell installiert werden:

sudo apt-get install socat
Beispielkonfiguration laut DL9RDZ Github:

socat -v TCP-LISTEN:8888,reuseaddr /dev/ttyUSB0,b115200,raw,echo=0 &
udpflex -T 127.0.0.1:8888 -V -U 127.0.0.1:9001:0 &
udpgate4 -S MYCALL-10 -R 127.0.0.1:0:9001#LoRa -g rotate.aprs.net:14580 -p passcode  ...
  • socat Verbindet das USB-Device mit dem TCP-KISS Port 8888
  • udpflex wandelt den TCP-KISS Port 8888 um in zwei AXUDP Ports 9001 (destination port = empfangene Daten) und 0 (listen port = zu sendende Daten). Da nichts gesendet werden soll (reines RX iGate) bleibt der Sendeport auf 0. Wenn man damit auch Aussendungen machen will (Bestimmungen zu unbemannten Stationen beachten!), muss bei udpflex und udpgate4 ein passender Port (z.B. 9002) eingetragen werden.
  • udpgate4 ist das eigentliche iGate und ist hier nicht vollständig konfiguriert, daher nur als Beispiel anzusehen.

Wenn man zusätzlich APRSMAP verwenden will um die empfangenen Daten auf der Karte lokal darzustellen, ist es sinnvoll, die udpbox dazwischen zu schalten.

socat -v TCP-LISTEN:8888,reuseaddr /dev/ttyUSB0,b115200,raw,echo=0 &
udpflex -T 127.0.0.1:8888 -V -U 127.0.0.1:9001:0 &
udpbox -R 127.0.0.1:9001 -l 127.0.0.1:9101 -l 127.0.0.1:9105 -v &
udpgate4 -S MYCALL-10 -R 127.0.0.1:0:9101#LoRa -g rotate.aprs.net:14580 -p passcode ...

In diesem Beispiel sendet udpflex die Daten erst an die udpbox, welche den Datenstrom verdoppelt. Auf Port 9101 gehts zum iGate udpgate4 und auf Port 9105 gehts zu APRSMAP.

Links:
TTGO Software von DL9RDZ auf Github
TTGO Board (Beispiel)

Selbstverständlich kann man ein bestehendes dxlAPRS auf diese Weise mit LoRa APRS ergänzen. Aber auch der eigenständige Betrieb des TTGO mit dxlAPRS hat große Vorteile, denn das sehr umfangreiche iGate udpgate4 mit seinem genialen Webinterface ist sowohl für Sysops als auch für User eine große Bereicherung.

Es gibt aber auch einen großen Nachteil beim Betrieb von LoRa APRS mit einem TTGO Board in Bezug auf dxlAPRS. Es können über den KISS Weg keine Informationen zu RSSI und SNR übertragen werden. Diese Informationen können daher leider nicht im udpgate4 Webinterface angezeigt werden. Diese Funktion ist derzeit nur über den Weg der Einspielung der Daten über AXUDP vom RPi-LoRa-KISS-TNC möglich.


Support

Diese Anleitung wurde mit bestem Wissen und Gewissen 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 und der TTGO Software geht 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 für dxlAPRS:

dxl-Wiki: http://dxlwiki.dl1nux.de
Telegram-Gruppe: https://t.me/joinchat/CRNMIBpKRcfQEBTPKLS0zg

Schreibe einen Kommentar

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