CAPI

Ist man glücklicher Besitzer einer Fritz-ISDN-Karte, kann man die von AVM bereitgestellten Treiber benutzen. Gleichzeitig erhält man die Möglichkeit, mit dieser passiven Karte unter Linux auch Faxe zu senden und zu empfangen. Der Nachteil soll aber nicht verschwiegen werden. Es ist zwar möglich, die idsn4linux-utils weiter zu verwenden, dann jedoch ohne die Möglichkeit zu faxen. Verwendet man die reinen Capi-Treiber, funktionieren die automatische Einwahl, die Anrufüberwachung und der Anrufbeantworter nicht. Man muß also selber abwägen, was einem wichtiger ist.

Zuerst besorgt man sich die Capi-Treiber von der AVM-Homepage oder direkt von capi4fritz-01.01.01.tar.bz2. Die Dateien in den Unterverzeichnissen usr_bin usw. sollten in die Verzeichnisse /usr/bin usw. kopiert werden. Weiterhin sollte der pppd-Dämon mindestens in der Version 2.4.0 vorliegen. Ich verwende hier den 2.4.20-er Kernel, für den noch zwei Änderungen im Quelltext der Capi-Treiber nötig waren. In der Datei src/driver.c ist die Zeile 972 auszukommentieren. Es sollte etwa so aussehen:

// tq_dpc.next    = NULL;

Weiterhin ist die Datei src/defs.h anzupassen.

//#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 3, 43)
# define KFREE_SKB(x)   dev_kfree_skb(x)
//#else
//# define KFREE_SKB(x) dev_kfree_skb_any(x)
//#endif

Nun kann das Capi-Modul übersetzt werden. Ich nehme bereits an, dass man sich bereits im entpackten Verzeichnis befindet.

make
mkdir /lib/modules/<Kernel-Version>/misc
cp src/fcpci.o /lib/modules/<Kernel-Version>/misc
depmod -ae

Jetzt muss noch der Kernel mit Capi-Unterstützung aktiviert werden. Dazu wird im Untermenü ISDN der ISDN-Support als Modul markiert, und im Unterpunkt Aktive Karten die folgenden Optionen selektiert:

< > ICN 2B and 4B support
< > PCBIT-D support
< > Spellcaster support
< > IBM Active 2000 support
[ ] Eicon active card support
<M> CAPI2.0 support
[*]   Verbose reason code reporting (kernel size +=7K)
[*]   CAPI2.0 Middleware support (EXPERIMENTAL)
<M>   CAPI2.0 /dev/capi support
[*]     CAPI2.0 filesystem support
< >   CAPI2.0 capidrv interface support
< >   AVM B1 ISA support
< >   AVM B1 PCI support
< >   AVM T1/T1-B ISA support
< >   AVM T1/T1-B PCI support
< >   AVM C4 support
< >   Hypercope HYSDN cards (Champ, Ergo, Metro) support (module only)

Man sollte dabei beachten, dass "CAPI2.0 support" und "/dev/capi support" nicht fest in den Kernel eingebunden werden. Jetzt sollte spätestens das i4l-Startskript deaktiviert werden.

Dem Capi-Modul muss mitgeteilt werden, welche ISDN-Karte im System sitzt. Dies passiert in der Datei /etc/capi.conf. Für meine Fritz-Classic-PCI sieht das etwa so aus:

# card     file   proto io    irq mem  cardnr options
#b1isa     b1.t4  DSS1  0x150 7   -    -      P2P
#b1pci     b1.t4  DSS1  -     -   -    -
#c4        c4.bin DSS1  -     -   -    -
#c4        -      DSS1  -     -   -    -
#c4        -      DSS1  -     -   -    -      P2P
#c4        -      DSS1  -     -   -    -      P2P
#t1isa     t1.t4  DSS1  0x340 9   -    0
#t1pci     t1.t4  DSS1  -     -   -    -
fcpci      -      -     -     -   -    -
#fcclassic -      -     0x300 5   -    -

Jetzt erstellen wir noch die Konfigurationsdatei für unseren Provider. Man paßt dazu am besten eines der vorgefertigten Skripte in /etc/ppp/peer/isdn an. Für meinen Provider1 sieht das letztendlich wie folgt aus:

#debug
192.168.0.1:192.168.1.1
sync
demand
noauth
plugin /etc/ppp/plugins/userpass.so
username xxx
password yyy
defaultroute
plugin /etc/ppp/plugins/capiplugin.so
number Einwahlnummer
protocol hdlc
ipcp-accept-local
ipcp-accept-remote
/dev/null

Das Capimodul kann nun mit

capiinit start
pppd connect /bin/true call isdn/provider1 > /var/log/ppp 2>&1 &

gestartet werden. Zusätzlich wird noch die Einwahl initiiert.