BayCom Modems

Folgende Optionen zur Kernel-Compilierung sind wichtig:
Code maturity level options 

[*] Prompt for development and/or incomplete code/drivers 

General Setup 
[*] Networking support 
... 

Network Device Support 

[*] Radio network interfaces 
[*] BAYCOM ser12 and par96 driver for AX.25 

Anmerkung:
Für erste Tests sollte der Treiber mit 'm' als Modul compiliert werden. Thomas Sailer (sailer@ife.ee.ethz.ch) entwickelte trotz des weitverbreiteten Glaubens, es würde nicht sonderlich gut funktionieren, eine BayCom-Unterstützung für Linux. Sein Treiber unterstützt die seriellen Ser12, die parallelen Par96 und die verbesserten PicPar-Modems. Informationen über diese Modems erhält man auf der WWW-Seite des BayCom-Teams http://www.baycom.de. Der erste Schritt ist, herauszufinden, welche I/O-Adresse und IRQ die Schnittstelle verwendet, an die das BayCom-Modem angeschlossen ist. Der BayCom-Treiber muß mit diesen Werten konfiguriert werden. Ist dies geschehen, erzeugt der Treiber Netzwerk-Devices mit den Namen bc0, bc1, bc2 usw.

Änderungen im Kernel 2.2.x

In den Kerneln der 2.2.x-Reihe wurden die Bezeichnungen für das Baycom-Modul und die von ihm erzeugten Devices geändert. Es gibt hier für Half- und Fullduplex getrennte Treiber:

Modul-Name           Funktion                                  Device
------------------------------------------------------------------------------
baycom_ser_fdx       serielles BayCom-Modem, Fullduplex und    bcsf0..bcsf3
                     Halfduplex, umschaltbar, 
                     wählbare Baudrate
                     
baycom_ser_hdx       serielles BayCom-Modem, nur Halfduplex,   bcsh0..bcsh3
                     nur 1200 Baud
                     
baycom_par           paralleles PicPar- und Par96-Modem,       bcp0..bcp3

baycom_epp           EPP-Modem                                 bce0..bce3
                     (Treiber noch in Entwicklung!)
Anstelle von "insmod baycom" schreibt man also insmod baycom_ser_fdx und konfiguriert bcsf0 statt "bc0".

Beispiel:

  insmod baycom_ser_fdx mode="ser12*" iobase=0x3f8 irq=4
  sethdlc -i bcsf0 -p mode "ser12*" io 0x3f8 irq 4
Ausführlichere Informationen zu den neuen Treibern können in der Datei /usr/src/linux/Documentation/networking/baycom.txt nachgelesen werden.

Die Parameter der verwendeten Schnittstelle können mit dem Utility sethdlc eingestellt werden, hat man nur ein BayCom-Modem installiert, so kann man die Parameter auf der Kommandozeile für insmod angeben, wenn der als Modul eingerichtete Treiber geladen wird.
Als Beispiel eine einfache Konfiguration. Zunächst wird der normale serielle Treiber für die erste Schnittstelle (COM1) abgeschaltet, dann der BayCom-Treiber für ein serielles 1200-Baud-Modem an COM1 eingerichtet und die Software-DCD eingeschaltet:

setserial /dev/ttyS0 uart none 
insmod hdlcdrv 
insmod baycom mode="ser12*" iobase=0x3f8 irq=4 
WICHTIG: Einige Schnittstellenbausteine bereiten Probleme im 
          Zusammenhang mit dem BayCom-Treiber. Dieser wird zwar geladen,
          kann aber nicht auf die Schnittstelle zugreifen. Dies betrifft
          insbesondere viele der neueren 16550A-UARTs, wie sie auf 
          Pentium-Motherboards oft eingebaut sind.
Benutzer eines Kernel 2.2.x können in einem solchen Fall an Stelle von baycom_ser_fdx baycom_ser_hdx probieren, da dieser Treiber in anderer Weise auf die Hardware zugreift.
Wer nun keine zusätzliche Schnittstellenkarte mit 8250 oder 16450 UART vorsehen will, der sollte vor die erste setserial-Zeile des Beispiels einfügen:
setserial /dev/ttyS0 uart 16550A skip_test 
Weiterhin stört der Linux-Treiber für die parallele Schnittstelle die korrekte Funktion des BayCom-Treibers. Man sollte daher auf den "parallel printer support" im Kernel verzichten oder diesen als Modul kompilieren, damit er bei Notwendigkeit via rmmod entfernt werden kann:
rmmod lp 
Das komplette Skript sieht dann etwa so aus:
#!/bin/sh 
rmmod lp 
setserial /dev/ttyS0 uart 16550A skip_test
sleep 3 
setserial /dev/ttyS0 uart none 
insmod hdlcdrv 
insmod baycom mode="ser12*" iobase=0x3f8 irq=4 
Damit sollte der Treiber funktionieren, was man mit sethdlc -d einfach nachprüfen kann. Der Wert hinter 'dbg2' sollte etwa 2000-3000 sein und sich ständig ändern. Die Probleme mit dem Schnittstellenbaustein sind ausschließlich auf Schwierigkeiten des Linux-BayCom-Treibers bei der Hardwareinitialisierung zurückzuführen und deshalb von der eingesetzten Modemschaltung weitestgehend unabhängig. Für den Test mit sethdlc braucht das Modem nicht angeschlossen zu sein.
Ein Par96-Modem am Parallelport LPT1 mit Hardware-DCD richtet man so ein:
insmod hdlcdrv 
insmod baycom mode="par96" iobase=0x378 irq=7 options=0 
Dies ist aber nicht unbedingt der beste Weg.
Sethdlc arbeitet genau so gut mit einem Modem wie mit mehreren. In der Hilfeseite ('man sethdlc') findet man alle Details, einige Beispiele sollen diesen Aspekt hier verdeutlichen. Es wird angenommen, das BayCom-Modul ist mit
insmod hdlcdrv 
insmod baycom
bereits geladen oder als Treiber in den Kernel eincompiliert. Man kann das Netzwerk-Device bc0 nun einrichten:
- als Parallelport-Modem an LPT1 mit Software-DCD:
sethdlc -p -i bc0 mode par96 io 0x378 irq 7 
- als serielles Modem an COM1:
sethdlc -p -i bc0 mode "ser12*" io 0x3f8 irq 4 

Zurück zum Seitenanfang

6.1.2.1. AX.25-Kanalzugriffsparameter

Die AX.25-Kanalzugriffsparameter entsprechen den Parametern ppersist, txdelay und slottime. Wiederum wird dazu Sethdlc verwendet. Genaueres steht wiederum in der Hilfeseite, aber ein weiteres Beispiel kann nicht schaden. Wir setzen also das oben begonnene Skript fort, indem wir den BayCom-Treiber mit TXDelay 200 ms, SlotTime 100 ms PPersist 40 und Half-Duplex einrichten:
sethdlc -i bc0 -a txd 200 slot 100 ppersist 40 half 
Alle Zeitwerte werden in Millisekunden angegeben.

Die AX.25-Unterstützung des Kernels für die Nutzung des BayCom-Device einrichten

Der BayCom-Treiber erzeugt Standard-Netzwerk-Devices, die der Kernel-AX.25-Code nutzen kann. Damit ist die Konfiguration fast dasselbe wie bei einer PI- oder PacketTwin-Karte. Zunächst gibt man dem BayCom-Device ein Rufzeichen:
/sbin/ifconfig bc0 hw ax25 VK2KTJ up
oder (einige Versionen von ifconfig unterstützen den eben angegebenen Weg nicht):
/sbin/ifconfig bc0 up 
axparms -setcall bc0 VK2KTJ up 
Als nächstes wird in der Datei /etc/ax25/axports ein Eintrag für BayCom hinzugefügt. Die Verbindung des Eintrags zum entsprechenden Netzwerk-Device geschieht über das eingestellte Rufzeichen.
Verwendet ein Programm den Eintrag mit dem für BayCom vergebenen Rufzeichen, so wird das BayCom-Device angesprochen.
Das neue AX.25-Device kann nun ganz normal verwendet werden, es läßt sich für TCP/IP einrichten, man kann es dem ax25d hinzufügen und NetROM oder ROSE darüber laufen lassen.

Wegweiser

Überprüfen sie nun ihre Konfiguration.



Hans-Peter Zorn