Udpflex
Über udpflex
udpflex fungiert als Schnittstelle zwischen bekannten Protokollen wie KISS, SMACK oder TCP-KISS und dem AXUDP Protokoll der dxlAPRS Tools. Es können dadurch Programme wie udpbox, udpgate4 oder APRSMAP mit vorhandenen Geräten (z.B. TNCs) oder Programmen (Direwolf, APRX usw.) betrieben werden.
Parameter in der Kurzübersicht
udpflex -h bidirectional AXUDP <-> KISS/SMACK(tty/com/pipe) or TCP-KISS(dire-wolf) Interface -A ASCII (TAPR) Mode -a automatic switch to KISS/FLEX/SMACK mode (only with 1 Port) -d <ms> delay between kiss-on and sending -p ...(2500) -h this -i <filename> send this file to tty to switch on kiss -K <idle>:<intervall>:<count> tcp-keepalive idle:intervall:count seconds (180:30:2) -k tnc2 tf switch on kiss -p <cmd>:<value> tnc2 parameter 1=txd, 2=p 3=slottime, 128:0=set smack, 255:13 kiss exit (add 16, 32 ... to cmd for next Port) repeat -p for more parameters -r use rmnc-crc -s SMACK (crc) on -t <tty>:<baud> /dev/ttyS0:9600 or Pipe Filename -T [ip]:[port] TCP-KISS -T 127.0.0.1:8001 (default) local dire-wolf soundmodem -T : -T 0.0.0.0:<tcpport> listen on <tcp port> for TCP-KISS connect -U <x.x.x.x:destport:listenport> axudp "ip:destport/listenport" to check ipnum (repeat for more Ports) -u retry until (re)pluged (USB) tty and on kiss error reinitialize kiss mode -v verbous error messages -V verbous errors and monitor data to stdout
Parameter ausführlich erklärt
Parameter | Beschreibung |
---|---|
A | Aktiviert den ASCII/TAPR Modus für kompatible TAPR TNCs |
a | Automatisches Umschalten zum KISS, SMACK oder FLEX(-KISS) Modus (nur mit einem Port möglich) |
d <ms> | Verzögerung zwischen dem Aktivieren des KISS Modus bis zum senden der Parameter mit -p. Standardwert = 2500 ms |
h | Kurzer Hilfetext |
i <Dateiname> | Sende die Datei <Dateiname> an die Schnittstelle um KISS zu aktivieren |
k | Schaltet ein TNC mit TF Firmware in den KISS Modus |
p <cmd>:<value> | Gibt TNC Parameter weiter, abhängig vom TNC selber. Bei den üblichen TNCs mit TF Firmware ist 1=TX-Delay, 2=Persistence, 3=Slottime, 128=Umschaltung auf SMACK. Der Parameter -p kann mehrfach wiederholt werden für mehrere Parameter Beispiel: -p 1:15 -p 2:255 -p 3:10 |
r | Verwende RMNC-CRC |
s | SMACK mit CRC einschalten |
t <tty>:<baud> | Name der Schnittstelle und die Übertraungsrate in Baud, z.B. /dev/ttyS0:9600. Alternativ kann auch der Dateiname einer Pipe angegeben werden. |
T [ip]:[port] | Lausche nach einer KISS-Verbindung von <IP> auf Port [port]. Standardwert ist -T 127.0.0.1:8001. Dies lauscht am selben Gerät auf Port 8001 (Direwolf Standard). |
U <x.x.x.x:destport:listenport> | AXUDP Verbindung zu udpbox, udpgate4, aprsmap usw. Kann beliebig wiederholt werden bei mehreren AXUDP Verbindungen. Beispiel: -U 127.0.0.1:5001:5002. |
u | Wiederhole Verbindungsaufbau bei Verbindungstrennung zum Gerät, z.B. USB Stecker gezogen. Bei KISS Fehlern wird der KISS-Modus neu initialisiert. |
v | Ausgabe von Fehlerinformationen auf dem Bildschirm |
V | Ausgabe von Fehlerinformationen und dem AX25 Monitor auf dem Bildschirm |
Konfigurationsbeispiele
Anbindung eines TNCs an einem Digi
udpflex -t /dev/ttyUSB0:38400 -k -d 5000 -p 1:15 -p 2:255 -p 3:10 -p 128:0 -U 127.0.0.1:9001:9002 -u
- Benutzt die Schnittstelle /dev/ttyUSB0 mit einer Geschwindigkeit von 38400 Baud (z.B. TNC2multi an einem USB/RS232 Wandlerkabel).
- k Schaltet das TNC von TF Modus in den Kiss Modus.
- d wartet etwa 5 Sekunden nach KISS Aktivierung zum senden der TNC Parameter.
- p Parameter als Beispiel: TXdelay=150ms, Persistence=255, Slottime=10, aktiviere SMACK Modus (mit CRC)
- AXUDP Schnittstelle befindet sich am gleichen Rechner. Destinationport = 9001, Listenport = 9002. Dies bedeutet, empfangene Daten werden an Port 9001 gesendet (z.B. zu udpgate4), zu sendende Daten werden auf Port 9002 "angenommen" (z.B. von udpbox (Digipeating) oder udpgate4 (APRS-IS Aussendungen uns APRS-Nachrichten)).
- u sorgt dafür, dass die Verbindung neu aufgebaut wird, wenn die USB Verbindung gertennt werden sollte.
Mithören des Monitors
Wenn man ein iGate abgesetzt betreibt und darauf Zugriff an (z.B. über Hamnet oder Internet), kann man udpflex auch nutzen, um den AX25 Monitor, also die gerade empfangenen Daten, remote mitzulesen, beispielweise über SSH. Dazu sendet man die empfangenen Daten zuerst an udpbox.
udpbox erlaubt es den Datenstrom zu vervielfachen und an mehrere Ports weiterzusenden. Beipsielsweise übergibt hier udpflex die empfangenen Daten an Port 9001. Normalerweise würde das iGate udpgate4 die Daten auf Port 9001 empfangen und ins APRS Netzwerk weiterleiten. Hier schaltet man udpbox dazwischen.
udpbox -R 127.0.0.1:9001 -r 127.0.0.1:9101 -r 127.0.0.1:9201 ...
udpbox empfängt die Daten auf Port 9001 und leitet diese weiter an Port 9101 und zusätzlich (zum Beispiel) an Port 9201. Auf Port 9101 muss dann udpgate4 hören, das leitet die empfangenen Daten weiter ins APRS Netzwerk.
udpgate4 -s MYCALL-10 -R 127.0.0.1:9002:9101 ...
Übrig bleiben nun die Daten auf Port 9201. An diesen Port docken wir nun udpflex an.
udpflex -U :0:9201 -V
Damit können wir diese Daten in der Konsole "sichtbar" machen. -U lässt auf Port 9201 lauschen. Der Destinationport bleibt auf "0", da wir ja nichts zum senden haben. Eine IP-Adresse müssen wir nicht angeben, da wir uns auf dem selben Rechner befinden und dann standardmäßig 127.0.0.1 angenommen wird. Das -V zeigt dann die ausführlichen Monitordaten am Bildschirm lesbar an. Auf dem Rechner lege ich mir dazu
pi@raspberry:~/dxlAPRS/aprs $ ./udpflex -U :0:9201 -V send init to tnc UDP0:fm DB0ERF-10 to APRS via DB0RIE* WIDE1-1 ctl UIv1 pid F0 }DO2HEY-15>APMI04,TCPIP,DB0ERF-10*::DO2HEY-15:UNIT.Volt,Pkt,Pkt,Pcnt,None,On,On,On,On,Hi,Hi,Hi,Hi UDP0:fm DB0ERF-10 to APRS via DB0RIE* WIDE1-1 ctl UIv1 pid F0 }DO2HEY-15>APMI04,TCPIP,DB0ERF-10*::DO2HEY-15:EQNS.0,0.079,0,0,10,0,0,10,0,0,1,0,0,0,0 UDP0:fm DB0ERF-10 to APRS via DB0RIE DB0FGB* ctl UIv1 pid F0 }DO2HEY-15>APMI04,TCPIP,DB0ERF-10*::DO2HEY-15:EQNS.0,0.079,0,0,10,0,0,10,0,0,1,0,0,0,0 UDP0:fm DB0NU-10 to APNL51 ctl UI^ pid F0 }DO8TBO-1>APN000,TCPIP,DB0NU-10*:=5006.16N\01058.67E-360/000OV B37 Timm 73!.... 144.800MHz 13.9V UDP0:fm DM8WP-9 to UP4Y58 via DM0RLB-10 DB0REN WIDE1 WIDE2* ctl UIv1 pid F0 `(8:q\e>/"6z}145.500MHz / Patrick direkt or Relais
Man kann so also aus der Ferne live mitlesen was so auf der QRG passiert, als wenn man direkt vor Ort wäre.
Daten von gps2aprs an Direwolf weitergeben
Im Rahmen eines Ballonprojektes gab es die Idee, aktuelle Positionsdaten mit gps2aprs und einer USB GPS Mouse zu erzeugen, diverse Daten aus einem Sensor anzuhängen und diese dann über einen Sender auszusenden. Da es noch nicht gelungen war das Soundmodem afskmodem auf einem RaspberryPi zum Laufen zu bekommen, um damit die interne Soundkarte des RaspberryPi zu nutzen, wurde zum Senden Direwolf genutzt. Direwolf kann die RaspberryPi Soundkarte problemlos zum Senden benutzen und hat auch eine TCP-KISS Schnittstelle. Da gps2aprs nur AXUDP Pakete erzeugt, wurde eine Schnittstelle zu Direwolf benötigt. Und dies erledigt in diesem Fall udpflex.
gps2aprs -c \\\\:/mnt/ramdisk/comment.txt: -f 0 -i "/O" -I MYCALL-11 -l 1 -r 127.0.0.1:6000 -t /dev/ttyAMA0:9600 -0 20 -b 20 -D udpflex -U 127.0.0.1:0:6000 -T 127.0.0.1:8001 -V
- gps2aprs nutzt die GPS Mouse an /dev/ttyAMA0 mit 9600 Baud zur Positionsbestimmung.
- Der Inhalt der Datei /mnt/ramdisk/comment.txt wird als APRS Kommentar angehängt.
- Die damit erzeugten APRS-Pakete werden im AXUDP Format an Port 6000 gesendet.
- udpflex wiederum nimmt auf Port 6000 in AXUDP die APRS Pakete entgegen und sendet diese im TCP-KISS Format weiter an Port 8001
- Port 8001 ist wiederrum der Standard TCP-KISS Port, auf dem Direwolf hört. Direwolf sendet nun die von gps2aprs erzeugten Pakete direkt aus.