Update 08.08.2006: Nutzer von Fedora Core 5 lesen bitte diesen Artikel.
Nachdem mit dem heutigen Update der selinux-policy-targeted Unterstützung für das capifs bereitsteht, nehme ich mir die Zeit, ein kurzes HowTo zur Verwendung der AVM FritzCards unter Fedora Core 4 zu schreiben.
Zumindest die internen ISDN-FritzCards arbeiten mit den bewährten Hisax-Treibern unter Fedora auf Anhieb problemlos, wer aber für Anwendungen wie Fax-over-ISDN die proprietären CAPI-Treiber von AVM nutzen will, muß aufgrund der Probleme mit udev ein wenig Handarbeit anlegen. Dazu später, ersteinmal gilt es, das AVM Kernelmodul fcpci zu installieren. Für die Fritzcard PCI gibt es fertige Pakete bei Axel Thimm, für andere Karten wie die FritzCard DSL muß man sich das Kernelmodul selbst bauen.
ISDN deaktivieren:
service isdn stop
chkconfig isdn off
Falls die Fritzcard in der Netzwerkkonfiguration system-config-network als Ethernet-Gerät auftaucht, diesen Eintrag löschen. Von der Konsole kann man das erledigen, indem man die Datei /etc/sysconfig/idsncard löscht/verschiebt und außerdem den entprechenden „alias ethX hisax“ aus der Datei /etc/modprobe.conf löscht. Jetzt sollten bei Booten keine ISDN Module mehr geladen werden.
Installation mittel yum:
yum --enablerepo=at-stable install fcpci
Sollte yum dabei durcheinander kommen und Euren Kernel up- oder downgraden sollte, versucht es mit:
yum --enablerepo=at-stable install fcpci-kmdl-`uname -r`
Eigenbau des Moduls:
Wer dennoch das Kernelmodul selbst bauen möchte oder muß, läd es sich vom AVM-FTP-Server herunter, für die Fritzcard DSL und einen aktuellen 2.6.12er Kernel zum Beispiel das Archiv fcdsl-suse93-3.11-07.tar.gz.
Zum Übersetzen muß das Paket kernel-devel (des aktuellen Kernels) installiert sein.
yum install kernel-devel
wget ftp://ftp.avm.de/cardware/fritzcrd.dsl/linux/suse.93/fcdsl-suse93-3.11-07.tar.gz
tar xzf fcdsl-suse93-3.11-07.tar.gz
cd fritz
make
make install
depmod -ae
Die letzen beiden Befehle müssen als root ausgeführt werden, bei der DSL Karte muß root zusätzlich noch die Firmware fdslbase.bin nach /usr/lib/isdn kopieren:
cp fdslbase.bin /usr/lib/isdn.
Wenn depmod keine Fehler gebracht hat, geht es weiter mit der Anpassung der /etc/capi.conf. Da diese nicht im Paket von Axel Thimm enthalten ist, poste ich meine mal in voller Länge. Bis auf die eingebaute Karte müssen alle anderen Einträge auskommentiert sein.
# card file proto io irq mem cardnr options
#b1isa b1.t4 DSS1 0x150 7 – – P2P
#b1pci b1.t4 DSS1 – – – –
#b1pci – – – – – –
#b1pci – – – – – – P2P
#b1pciv4 b1.t4 – – – – –
#c2 c2.bin DSS1 – – – –
#c2 – DSS1 – – – –
#c4 c4.bin DSS1 – – – –
#c4 – DSS1 – – – –
#c4 – DSS1 – – – – P2P
#c4 c4.bin DSS1 – – – – P2P
#t1isa t1.t4 DSS1 0x340 9 – 0
#t1pci t1.t4 DSS1 – – – –
#fcclassic – – 0x300 5 – –
fcpci – – – – – –
#fcpcmcia – – – – – –
#fcpnp – – 0x150 10 – –
#fcdsl fdslbase.bin – – – – –
#fcdsl2 fds2base.bin – – – – –
#fcusb – – – – – –
#fcusb20 fus2base.frm – – – – –
#fcusb21 fus3base.frm – – – – –
#fxusb – – – – – –
#fcdslusb fdsubase.frm – – – – –
#fcdslsl fdssbase.bin – – – – –
#fcdslslusb fdlubase.frm – – – – –
Wer denkt, jetzt die capi mittels capiinit starten zu können, irrt sich. Zuerst gilt es noch, zwei udev-Rules anzulegen. Ich habe das in der Datei /etc/udev/rules.d/10-capi.rules getan:
SYSFS{dev}=“68:0″, NAME=“capi20″
SYSFS{dev}=“191:[0-9]*“,NAME=“capi/%n“
(Hintergründe dieses dirty Hacks in diesem Bugzilla Eintrag)
Immer noch meldet capiinit beim ersten Start, daß kein /dev/capi20 vorhanden ist, udev erstellt es leider erst, nachdem capiinit scheitert. Deshalb ein weiterer kleiner Hack:
cd /etc/udev/devices
mknod -m 666 capi20 c 68 0
Auch nicht schön, aber der Aufruf von capiinit sollte jetzt keine Fehler mehr produzieren und alle Module laden. Wir überprüfen das:
# lsmod
Module Size Used by
fcpci 589592 0
capi 17537 0
kernelcapi 46561 2 fcpci,capi
capifs 5961 2 capi
...
Sieht gut aus, jetzt ist es an der Zeit, ein init-Skript zu erstellen, um die Capi automatisch beim Systemstart zu laden. Mein /etc/init.d/capi sieht so aus:
#!/bin/sh
#
# capi Script to start and stop capi for passive ISDN Cards
#
# chkconfig: – 55 45
# description: capi4linux is a CAPI 2.0 Implementation by AVM # for passive ISDN-Cards like the die Fritz!Cards
# probe: true
# Source function library.
. /etc/rc.d/init.d/functions
[ -f /sbin/capiinit ] || exit 0
[ -f /etc/capi.conf ] || exit 0
RETVAL=0
# Starten oder stoppen?
case „$1“ in
start)
# Start
echo -n „Starting capi4linux: “
## If you have trouble with capiinit load the modules
## with modprobe. Should not be necessary at the moment!
# modprobe capifs
# modprobe kernelcapi && modprobe capi && modprobe fcpci
/sbin/capiinit
RETVAL=$?
echo
;;
stop)
# Stop.
echo -n „Stopping capi4linux: “
/sbin/capiinit stop
## removing capifs DOES NOT work (Module in use)
# rmmod capifs
RETVAL=$?
echo
;;
status)
capiinfo
exit $?
;;
restart)
$0 stop
$0 start
;;
*)
echo „Usage: capi {start|stop|status|restart}“
exit 1
esac
exit $RETVAL
Drei Handgriffe, damit unser neues Script bei jedem Boot ausgeführt wird:
chmod +x /etc/init.d/capi
chkconfig --add capi
chkconfig capi on
Bevor ihr neu bootet stellt sicher, daß ihr mindestens selinux-policy-targeted-1.25.4-10 installiert habt oder SELinux deaktiviert/im permissive Mode läuft, anderenfalls werdet ihr eine Menge Kernel-Oopses sehen, bei mir waren es 118 nur während des Bootens (mehr dazu hier).
Auf die Konfiguration der des ppp gehe ich an dieser Stelle nicht mehr ein, die Dokumentation von AVM sollte ausreichen. Für alle, die es gerne ausführlich mögen: