L2cat

Aus DXL-Wiki
Version vom 10. November 2020, 21:41 Uhr von Dl1nux (Diskussion | Beiträge) (→‎Über l2cat)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Dieser Artikel beschreibt bisher nur einen Teil der Möglichkeiten von l2cat. Weitere Beispielanwendungen können gerne mit aufgenommen werden

Über l2cat

l2cat ist unter anderem ein Packet Radio Terminal für die Kommandozeile.

  • PR-Verbindung über AXUDP (z.B. via Hamnet).
  • PR-Verbindung über HF in Zusammenarbeit mit afskmodem.
  • IP Verbindung über Packet Radio mit PPP und Komprimierung möglich.
  • Mit l2cat kann auch ein Server gebaut werden, der über Packet Radio connected und bedient werden kann (z.B. IRC Server, Winlink Server, APRS baken erzeugen usw.). Es sind vielfältige Anwendungsmöglichkeiten denkbar.

l2cat hat grundsätzlich keine weiteren Abhängigkeiten, ist also standalone lauffähig.

Parameter in der Kurzübersicht

l2cat -h

 -a                                autodetect deflate + ppp on first bytes
                                     ppp + deflate:"!p",deflate;"!d"
                                     LF to CR:"!l", strip LF:"!L", transparent:"!8"
 -C <destination>                  slave connect destination -C "OE0AAA-12 OE5XBL"
                                     if no "-C" run as server waiting for connect
 -c <cmdline>                      execute command on connect -c "/bin/bash bash %m %u"
                                     %m=mycall %u=usercall %U=same no SSID %%=%
                                     if no "-c" data path is stdin/stdout
 -D <bytes>                        discard longer ppp frames if pr tx buffer full
 -d                                deflate on
 -h                                this
 -i <mycall> <mycall> ...          connectable calls -i "OE0AAA OE0AAA-15"
                                     first mycall is digi and used to connect out
 -j <1..6>                         1:del LF, 2:del LF+CR>LF, 3:CR>LF, 4:del CR
                                     5:del CR+LF>CR, 6:LF>CR in stream from pr
 -l                                convert LF to CR in stream to pr
 -L                                strip LF in stream to pr
 -m <0..2>                         ax25 Monitor to stderr (2 with info)
 -n <port> <parm> <value>          layer 2 parms, "-n a" set on all ports
                                     parm t:txwait d:dwait o:maxfr f:t1 F:t3
                                     parm I:ipoll n:retr h:halfdup
 -P                                ppp + deflate on
 -p <filename>                     data to/from this device/pipe -p /dev/ttyS0
 -R <ms>                           enable slave "keep connected" with max reconnet delay
                                     (max 4000000ms) (120000)
 -r <ms>                           enable slave "keep connected" with min reconnet delay
                                     and doubles delay each conn try till "-R"  (2000)
 -U <x.x.x.x:destport:listenport>  axudp (autodetect axudp2)
                                     listenport=0 uses a free port
                                     repeat -U for more ports
 -v                                verbous
 -V                                more verbous
 -w <n>                            check dupe axudp frames last n frames or n*10ms


Ausführliche Beschreibung der Parameter

Parameter Beschreibung
a Erkenne deflate + ppp automatisch an den ersten Bytes
ppp + deflate:"!p",deflate;"!d"
LF to CR:"!l", strip LF:"!L", transparent:"!8"
C <destination> Zielrufzeichen, mit dem man sich verbinden will (ansonsten wartet L2CAT drauf bis man selbst connected wird).
c <cmdline> Führt Befehle nach den Connect aus
-c "/bin/bash bash %m %u"
%m=mycall %u=usercall %U=same no SSID %%=%
if no "-c" data path is stdin/stdout
D <bytes> Verwerfe längere ppp Frames wenn der PR Sendepuffer voll ist.
d deflate = an
h Parameterübersicht
i <mycall> <mycall> ... Eigenes Rufzeichen, ggf. mit SSID.
j <1..6> Wie der Zeilenumbruch behandelt werden soll.
1:del LF
2:del LF+CR>LF
3:CR>LF
4:del CR
5:del CR+LF>CR
6:LF>CR in stream from pr
l Konvertiert das Linux Zeilenende LF zu CR von Linux zu Packet Radio (es gibt sonst Probleme mit den Zeilenumbrüchen).
L Schneidet LF zu Packet Radio ab.
m <0..2> Zeigt den AX.25 Monitor an. "2" ist mit allen Informationen.
n <port> <parm> <value> Setzt die Layer 2 Parameter der Verbindung
"-n a" setzt den Parameter auf allen ports.
t=txwait, d=dwait o=maxfr f=T1 FRACK Timer, F:T3-Timer, I=ipoll n=Retries h=halbduplex.
P ppp und deflate = an
p <filename> Daten senden und emfpangen zu diesem Gerät bzw. zu dieser Pipe. Kann genutzt werden um ein eigenes "TNC" zu bauen oder ein anderes Terminal anzubinden.
Beispiel: -p /dev/ttyS0
R <ms> Aktiviere die Aufrechterhaltung der Verbindung als "Slave" mit einer maximalen Wiederverbindungsverzögerung in Millisekunden. Standard = 120000ms, Maximalgröße = 400000ms.
r <ms> Aktiviere die Aufrechterhaltung der Verbindung als "Slave" mit einer minimalen Wiederverbindungsverzögerung in Millisekunden. Die Zeitspanne verdoppelt sich bei jedem Wiederholungsversuch bis der Wert von -R erreicht ist. Standard = 2000ms.
U <x.x.x.x:destport:listenport> Packet Radio AXUDP Einstieg mit Ziel-IP und Ziel-Port. Bei Listen Port = 0 wird dieser automatisch vergeben.
v Zeige Informationen in der Bildschirmausgabe.
V Zeige erweiterten Informationen in der Bildschirmausgabe.
w <n> Überprüfe auf doppelte AXUDP Frames in den letzten n Frames oder n*10ms

Beispiele

Packet Radio Verbindung über AXUDP und Hamnet

Das folgende Beispiel ermöglicht eine PR-Verbindung im Terminal zu einem Packet Radio Knoten, welcher über AXUDP erreichbar ist, z.B. DB0FHN, DB0NU usw. Ein kleines Beispielskript dazu findet sich auch weiter unten im Artikel.

./l2cat -i MYCALL -U 44.130.60.100:93:0 -v -l -j 2 -n a n 40 -n a f 80 -n a F 150 -C DB0FHN

  • -i = Genutztes AFu Rufzeichen
  • -U = Packet Radio AXUDP Einstieg, im Beispiel DB0FHN auf Destination Port 93. Listen Port bleibt auf 0, dieser wird dann automatisch vergeben. Es kann natürlich jeder andere Einstieg genutzt werden sofern IP-Adresse und Port bekannt sind.
  • -v = gibt eventuelle Meldungen der Anwendung aus
  • -l = Konvertiert das Linux Zeilenende LF zu CR von Linux zu Packet Radio (es gibt sonst Probleme mit den Zeilenumbrüchen)
  • -j 2 = Wandelt Zeilenumbruch von PR zu Linux passend zurück
  • -n a n 40 = Setzt Layer 2 Parameter "Retries" auf 40
  • -n a f 80 = Setzt Layer 2 Parameter "T1 Timer" (FRACK) auf 80
  • -n a F 150 = Setzt Layer 2 Parameter "T3 Timer" auf 150
  • -C = Zielrufzeichen, mit dem man sich verbinden will (ansonsten wartet L2CAT drauf bis man selbst connected wird)

Die Layer 2 Parameter diesen nur dazu die Verbindung stabil zu halten

L2cat.png

Beispielskript

Das folgende Beispielskript als pr.sh gespeichert und mit Ausführungsrechten versehen (chmod 755 pr.sh) erlaubt die schnelle Verbindung mit dem Packet Radio Netzwerk, vorausgesetzt man hat Zugriff auf das Hamnet per HF oder VPN. Getestet wurde das Skript unter dem aktuellem Raspberry Pi OS (Raspbian).

Man gibt das eigene Rufzeichen als Option mit an, z.B.

./pr.sh DL1NUX-7
pr.sh

# pr.sh öffnet ein Packet Radio Terminal über AXUDP zu DB0FHN
# Voraussetzung: Es besteht im aktuellen Netzwerk Zugriff auf das HAMNET.
#                Internetzugriff reicht nicht aus!
# Bitte das eigene Call als Parameter zum Aufruf angeben. SSID ist möglich.
# Beispiel:  ./pr.sh MY1CAL-5
# Mehr Infos hier: http://dxlwiki.dl1nux.de/index.php?title=L2cat
if [ -z $1 ]; then
        echo "Bitte eigenes Rufzeichen als Option angeben!"
        echo "Beispiel:  ./pr.sh MY1CAL-5"
        exit 1
fi

./l2cat -i $1 -U 44.130.60.100:93:0 -v -l -j 2 -n a n 40 -n a f 80 -n a F 150 -C DB0FHN