Korseby Online - aktives ISDN

About aktives ISDN

Wenn man sich diese unter Umständen schon recht alten Karten anschaut, dann wird man feststellen, daß es keine Unterstützung für aktive ISDN-Karten in den isdn4kutils gibt. Somit sind solche Karten auch nicht über den ipppd anzusteuern. Der Grund ist, daß diese Karten nur über Capi 2.0 ansteuerbar sind. Und eine Unterstützung für solche Karten gibt es erst ab dem 2.2.17er Kernel. Es gibt aber seit geraumer Zeit auch Treiber direkt von AVM, die man dann selbst compilieren muß.

Da die meisten Benutzer mittlerweile sowieso eine höhere Kernelversion besitzen, wird dieser Sachverhalt nicht ausführlich erläutert.

Hinweis: Auch dieser Artikel wurde von Kristian im Jahre 2000 für Pro-Linux geschrieben.

Kernelkonfiguration

Das Grundlegende kommt immer zuerst. Und so müssen wir erst einmal alle nötigen Module generieren. Standardmäßig sollten sie von jeder Distribution bereits kompiliert worden sein. Zu finden sind sie bei einem 2.2er Kernel unter /lib/modules/{kernel-version}/misc, bei einem 2.4er Kernel unter /lib/modules/{kernel-version}/kernel/drivers/isdn/. Falls dort keine Module zu finden sind, müssen wir sie noch umsetzen.

Hier eine Liste der benötigten Module:

[slhc]
[isdn]
[isdnloop]
capiutil
kernelcapi
capifs
capi
capidrv
b1
( b1isa | b1dma | b1pci | b1pcmcia )

Wie einige vielleicht sehen werden, handelt es sich hier nur um die Module der ISDN-Karten der Firma AVM. Da ich leider nur eine AVM-Karte besitze, kann ich nichts weiter über andere aktive ISDN-Karten schreiben.

Wir wechseln dann ins Verzeichnis /usr/src/linux und erstellen die Kernel-Konfiguration mittels make xconfig. Dann suchen wir den Abschnitt ISDN und aktivieren mindestens folgende Abschnitte: (Bemerkung: Ich bevorzuge die Umsetzung als Module. Das erleichtert die Sache. Natürlich kann ein versierter Benutzer die Unterstützung auch direkt in den Kernel kompilieren. Je Kernelversion können die einzelnen Menüs anders aussehen. Mehr über die Konfiguration des Kernels im Artikel "Kernelkonfiguration".)

ISDN subsystem:

<M> ISDN Support
<Y> Support synchronous PPP
<Y> Use VJ-compression with synch. PPP
<Y> Support AT-Fax Class 1 und 2 commands

ISDN feature submodules:

<M> isdnloop support
<M> Support isdn diversion services

Passive ISDN cards:

Hier sind alle passiven ISDN-Karten zu finden. Man kann ruhig die Unterstützung aktivieren, allerdings handelt es sich in unserem Beispiel um eine aktive ISDN-Karte.


Active ISDN cards:

<M> CAPI2.0 support
<M> Verbose reason code reporting
<M> CAPI2.0 Middleware support
<M> /dev/capi support
<Y> CAPI2.0 filesystem support
<M> CAPI2.0 capidrv interface support
<M> AVM B1 support
<M> AVM B1 PCI support
<Y> AVM B1 PCI V4 support
<M> AVM T1 ISA support
<M> AVM B1/M1/M2 PCMCIA support
<M> AVM B1/M1/M2 PCMCIA cs module
<M> AVM T1 PCI support

Man läuft übrigens auch ganz gut, wenn man einfach alles aktiviert. Dann kann man auch nichts vergessen.

Außerdem muß man, um das Modul slhc umzusetzen, auch noch PPP und PPP Sync aktivieren.

Mit make modules und make modules_install setzt man alle Module um und installiert sie auch. Unter Umständen ist auch noch ein make bzImage vonnöten. Mehr über die Installation eines Kernels in diesem Artikel.

Installation der Software

Die notwendige Software ist unter ftp://ftp.avm.de/cardware/ zu finden. Oder direkt bei AVM. Leider gibt es derzeit nur speziell für Suse vorkompilierte Programme. Im Test lief die Software aber auch problemlos unter RedHat<7.0 und Debian<2.2. Mit Mandrake 8 und RedHat 7 kann es unter Umständen zu Fehlern kommen, da diese Distributionen einen anderen Compiler benutzen. Auf dem FTP-Server liegt aber auch der Sourcecode, den man selbst kompilieren kann.

Hat man die Datei heruntergeladen, entpackt man sie und installiert die einzelnen Pakete. Eine RPM war auch zu finden. Mehr findet man in der beiliegenden README.

Initialisieren der Treiber

Als nächstes lädt man die entsprechenden Module in den Kernel:

modprobe slhc
modprobe isdn
modprobe isdnloop
modprobe capiutil
modprobe kernelcapi portbase=0x150 irq=7
modprobe capifs
modprobe capi
modprobe capidrv
modprobe b1

Und je nach ISDN-Karten-Modell eines der folgenden:

modprobe b1isa
modprobe b1dma
modprobe b1pci
modprobe b1pcmcia

Bei einigen Kernel-Versionen (2.2.18-2.2.19 z.b.) scheint das Modul b1 abzustürzen und bringt einen Speicherauszug. Das hat aber keinen weiteren Einfluß. Das Modul läuft trotzdem. Zurückzuführen ist dieses seltsame Verhalten auf einen Bug.

Normalerweise sollten jetzt alle Module geladen sein. Als nächstes müssen wir noch einen Eintrag in der modules.conf tätigen:

alias char-major-45 capidrv

Manchmal reicht dieser Eintrag nicht alleine aus und wir fügen auch noch das folgende hinzu:

alias char-major-43 capidrv alias char-major-44 capidrv

Für Puristen: Der Befehl modprobe alias char-major-45 capidrv tut es auch.

Starten der Software und Verbindung ins Internet

Als nächstes müssen wir noch die neueste Firmware auf den Chip der Karte laden:
insmod /lib/modules/current/misc/kernelcapi.o portbase=0x150 irq=7

avmcapictrl add 0x150 15
avmcapictrl load /lib/isdn/b1.t4 1

Die "1" am Ende steht für die erste Karte. Falls wir mehrere Karten im Rechner stecken haben, dann bezeichnet die Nummer die entsprechende Karte in Reihenfolge.

Bei mir kam es bei der mitgelieferten Firmware seltsamerweise zu Problemen. Der Upload wollte erst klappen, als ich mir manuell die neueste aus dem Netz gezogen habe. Zu finden ist die Firmware auch auf dem FTP-Server von AVM.

Bevor wir ins Internet verbinden können, müssen wir noch capiinit (zu finden unter /bin) starten.

capiinit start

Jetzt sollte er die Karte gefunden haben. Im proc-Verzeichnis (/proc/capi) findet der erfahrene Benutzer noch mehr. Beispielsweise kann man mittels cat /proc/capi/controller nachprüfen, ob der Kernel eine Karte gefunden hat. /proc/capi/driver zeigt an, welches Modul wir verwenden.

Als nächstes müssen wir die Peers-Datei erstellen, die der ppp-Daemon benötigt. Die Struktur sieht folgendermaüßen aus:

#
#/etc/ppp/peers/isdn/tonline
debug
sync
noauth
plugin /etc/ppp/plugins/userpass.so
username XXXXXXXXXXXXYYYYYYYYYYYY\#0001
password PASSWORT
defaultroute
plugin /etc/ppp/plugins/capiplugin.so
number 0191011
protocol hdlc
ipcp-accept-local
ipcp-accept-remote
/dev/null
#mit folgenden Parametern:
#XXXXXXXXXXXX: max 12-stellige Anschlußkennung
#YYYYYYYYYYYY: max 12-stellige T-Online-Nr.
#0001: Mitbenutzer
#Wichtig ist der \ vor dem # ! (Maskierung)

Dann kann es eigentlich bereits losgehen.

Mit

pppd call isdn/tonline usepeerdns

sollten wir ins Internet verbinden können. Das entsprechende Device findet pppd automatisch. Es ist jedoch pppd mindestens in der Version 2.3.11 zu benutzen. Ab Version 2.4.1 wurde scheinbar die Syntax der peers-Datei geändert. Nähere Informationen dazu kann ich leider noch nicht geben.

Die Option usepeerdns besagt, daß pppd automatisch die vom Provider empfohlenden Name-Server benutzen soll.

Beendet wird die Verbindung mit:

killall pppd

Anhang

/etc/capi.conf:

# card file proto io irq mem cardnr ...
#fcpci - - - - - -
fcpnp - - 0x300 5 - -
# ----- --
# 1) I/O-Adresse hier eintragen ____| |
# 2) IRQ-Nummer hier eintragen _____________/
# 3) Kommentar vor "fcpnp" entfernen