Mit freundlicher Genehmigung von Andreas Huppert.
Original Quelle zu diesem Posting: http://martin.wojtczyk.de/howto/fritzcard_dsl_sl/fcdslsl-kernel-2.6.txt
Einführung
Folgende Beschreibung will schrittweise darstellen, wie ich meine Fritz!Card DSL SL Karte unter Fedora 2 + Linux-kern 2.6.8.1 zum Laufen gebracht habe. Dennoch gehe ich davon aus, daß dieses Kochbuch auch denjenigen zu Gute kommt, die andere nicht-SuSe Distribution verwenden.
Benötigte Downloads
Kernel Konfiguration
Da möchte ich lediglich auf die ISDN und PPP Konfiguration hinweisen. Die Kommandos “grep ISDN .config” bzw. “grep PPP .config” ergeben folgende Ausgaben:
# ISDN subsystem
CONFIG_ISDN=m
# Old ISDN4Linux
# CONFIG_ISDN_I4L is not set
CONFIG_ISDN_CAPI=m
CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
CONFIG_ISDN_CAPI_MIDDLEWARE=y
CONFIG_ISDN_CAPI_CAPI20=m
CONFIG_ISDN_CAPI_CAPIFS_BOOL=y
CONFIG_ISDN_CAPI_CAPIFS=m
CONFIG_SYNCLINK_SYNCPPP=m
CONFIG_HDLC_PPP=y
CONFIG_PPP=m
CONFIG_PPP_MULTILINK=y
CONFIG_PPP_FILTER=y
CONFIG_PPP_ASYNC=m
CONFIG_PPP_SYNC_TTY=m
# CONFIG_PPP_DEFLATE is not set
# CONFIG_PPP_BSDCOMP is not set
CONFIG_PPPOE=m
Nach dem REBOOT mit dem neuen Kernel
Bevor wir den fcdslsl-driver übersetzen, muß /usr/src/linux auf den richtigen Kernel-Baum zeigen und das bewirkt folgendes Kommando:
# ln -s /<your path>/linux-2.6.8.1 /usr/src/linux
Entpacken wir das Archiv fcdslsl-suse9.1-3.11-04.tar.gz :
# tar -xzvf fcdslsl-suse9.1-3.11-04.tar.gz
Übersetzen wir den fcdslsl driver:
# cd fritz
# make install
Das Ende der Ausgabe sollte folgendermaßen aussehen:
for f in src/fcdslsl.ko; do cp -vf $f /lib/modules/2.6.8.1/extra/; done
`src/fcdslsl.ko' -> `/lib/modules/2.6.8.1/extra/fcdslsl.ko'
# reboot
Bei diesem REBOOT wird die “Fritz!Card DSL SL” Karte entdeckt und die soll “Using dynamic IP configuration” konfiguriert werden. Diese Aktion hat folgende Konsequenzen:
1. Die Fritz!Card wird als Ethernet Device konfiguriert und damit eine config Datei /etc/sysconfig/network-scripts/ifcfg-eth1 angelegt. Der Inhalt dieser Datei ist allerdings FALSCH(!):
# AVM Audiovisuelles|Fritz!Card DSL SL
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=dhcp
Wir müssen die Konfiguration durch “System Settings” -> “Network” -> “Edit” ändern, indem das BOOTPROTO “dialup” wird.
Die RICHTIGE /etc/sysconfig/network-scripts/ifcfg-eth1 Datei sieht so aus:
# AVM Audiovisuelles|Fritz!Card DSL SL
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=dialup
USERCTL=no
# diese Zeile sollte bewirken, daß ein /etc/resolv.conf angelegt wird
PEERDNS=yes
TYPE=Ethernet
IPV6INIT=no
2. In der Datei modprobe.conf ein “alias eth1 fcdslsl” Eintrag, der dazu führt, daß der fcdslsl-driver als eth1-driver benützt wird.
3. Das Modul fcdslsl wird geladen und das zeigen folgende Zeilen in der messages Datei:
CAPI Subsystem Rev 1.1.2.8
fcdslsl: AVM FRITZ!Card DSL SL driver, revision 0.2.1
fcdslsl: (fcdslsl built on Sep 8 2004 at 19:05:26)
fcdslsl: Loading...
kcapi: Controller 1: fcdslsl-b400-5 attached
fcdslsl: Loaded.
Die eth1 Schnittstelle ist allerdings noch nicht funktionsfähig, dazu brauchen wir noch die capi4k-utils Programme.
CAPI Utilities Installieren
# tar -xzvf capi4k-utils-2004-06-14.tar.gz
# cd capi4k-utils
# make menuconfig
Da müssen folgende Zeilen markiert werden:
[*] avmcapictrl & capiinit
[ ] capifax
[ ] rcapid
[*] pppdcapiplugin
-> Save
# make install
Sollten Fehler wegen “getpass redefinition” auftreten, muß die Zeile
extern char *getpass (__const char *__prompt);
in /usr/include/unistd.h auskommentiert werden.
capiinit Aufruf vorbereiten
# echo fcdslsl fdssbase.bin > /etc/capi.conf
# cd fritz # wo der fcdslsl-driver generiert wurde
# cp fdssbase.bin /usr/lib/isdn
# /sbin/capiinit start
Dieses Kommando sollte die Kernel-Module
nachladen und in der messages Datei folgende Ausgaben erzeugen:
capifs: Rev 1.1.2.3
creating device node '/udev/capi'
...
creating device node '/udev/capi20'
capi20: Rev 1.1.2.7: started up with major 68 (middleware+capifs)
creating device node '/udev/capi24'
...
creating device node '/udev/capi30'
fcdslsl: Using VCC/VPI/VCI = 0x1/0x1/0x20
fcdslsl: Stack version 3.11-04
kcapi: card 1 "fcdslsl-b400-5" ready.
Zur Kontrolle die “capiinfo” Ausgabe:
Number of Controllers : 1
Controller 1:
Manufacturer: AVM-GmbH
CAPI Version: 2.0
Manufacturer Version: 3.101-04 (49.20)
Serial Number: 0000000
BChannels: 1
Global Options: 0x00000001
internal controller supported
B1 protocols support: 0x10000000
B2 protocols support: 0x40000002
Transparent
B3 protocols support: 0x40000001
Transparent
0100
0100
01000000
00000010
02000040
01000040
00000000 00000000 00000000 00000000 00000000 00000000
01000001 00020000 00000000 00000000 00000000
Supplementary services support: 0x000003ff
Hold / Retrieve
Terminal Portability
ECT
3PTY
Call Forwarding
Call Deflection
MCID
CCBS
Verbindugsaufbau zum DSL-Provider
Dazu benötigen wir noch zwei weitere config Dateien:
********************
/etc/drdsl/adsl.conf
********************
controller 1
protocol adslpppoe
vpi 1
vci 32
********************
/etc/ppp/peers/t-dsl
********************
# Ondemand Verbindung zu T-DSL über die Fritz!Card DSL
debug
sync
noauth
defaultroute
lcp-echo-interval 5
lcp-echo-failure 3
lcp-max-configure 50
lcp-max-terminate 2
noccp
noipx
#
persist
#demand
connect ""
#
mru 1490
mtu 1490
ipcp-accept-local
ipcp-accept-remote
#
plugin userpass.so
# Anschlusskennung T-Online-Nummer Mitbenutzerkennung
# | | |
user xxxxxxxxxxxx\#yyyyyyyyyyyy\#0001\#@t-online.de
password zzzzzzzz
linkname t-dsl
ipparam internet
plugin capiplugin.so
avmadsl
:
/dev/null
##############################################################
Die Verbindung wird mit folgendem Kommando aufgebaut:
# /usr/sbin/pppd call t-dsl
Dadurch werden in der messages Datei folgende Ausgaben generiert:
pppd[4532]: Plugin userpass.so loaded.
pppd[4532]: userpass: $Revision: 1.4 $
pppd[4532]: Plugin capiplugin.so loaded.
pppd[4532]: capiplugin: $Revision: 1.34 $
pppd[4532]: capiconn: 1.9
kernel: CSLIP: code copyright 1989 Regents of the University of California
kernel: PPP generic driver version 2.4.2
pppd[4544]: pppd 2.4.2 started by root, uid 0
pppd[4544]: capiplugin: phase serialconn.
pppd[4544]: capiplugin: leased line (adslpppoe)
udev[4543]: creating device node '/udev/ppp'
pppd[4544]: capiplugin: connected: "" -> "" outgoing (pcli=0x101/ncci=0x10101)
pppd[4544]: capiplugin: using /dev/capi/0: "" -> "" outgoing (pcli=0x101/ncci=0x10101)
pppd[4544]: Using interface ppp0
pppd[4544]: Connect: ppp0 <--> /dev/capi/0
pppd[4544]: capiplugin: phase establish (was serialconn).
pppd[4544]: capiplugin: phase authenticate (was establish).
pppd[4544]: PAP authentication succeeded
pppd[4544]: capiplugin: phase network (was authenticate).
pppd[4544]: local IP address 84.128.65.129
pppd[4544]: remote IP address 217.5.98.172
pppd[4544]: capiplugin: phase running (was network).
und folgende Kernel-Module nachgeladen:
- ppp_synctty
- ppp_generic
- slhc
Damit sind wir mit dem DSL-Provider verbunden und “ifconfig -a” zeigt eine neue Netzwerk- Schnittstelle an:
ppp0 Link encap:Point-to-Point Protocol
inet addr:84.128.65.129 P-t-P:217.5.98.172 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1490 Metric:1
RX packets:62 errors:0 dropped:0 overruns:0 frame:0
TX packets:62 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:2924 (2.8 Kb) TX bytes:4554 (4.4 Kb)
Die Verbindung besteht, so lange der Prozess pppd läuft.
DNS (Domain Name Server) ansetzen
Frühere Versionen von capi4k-utils haben nach dem Start von pppd eine /etc/ppp/resolv.conf Datei mit “nameserver” Zeilen erzeugt und wir brauchten lediglich /etc/resolv.conf dazu linken. Die neue Version tut es – zumindest bei mir – nicht, so kann ich zunächst nur die “quick-and-dirty” Lösung anbieten: Wir müssen die /etc/resolv.conf Datei selbst mit folgendem Inhalt anlegen:
nameserver 194.25.2.129
nameserver 217.237.151.97
Ohne diese Aktion ist die ppp0 Schnittstelle zwar oben, aber wir können keine symbolischen IP-Adressen – wie z.B. www.google.de – erreichen.
Sollte jemand diesbezüglich die richtige Lösung erraten, soll er/sie mich benachrichtigen.
Schlußbemerkungen
Ich habe mich nicht bemüht, eine abstrakte Beschreibung zu geben, so müssen paar Sachen entsprechend angepaßt/verstanden werden, wie z.B. “eth1”: Das hängt nämlich von den sonstigen vorhandenen Netzwerk-Schnittstellen ab.
Ob und wie das Starten von DSL beim Bootvorgang stattfindet, ist Geschmacksache und ich wollte diesbezüglich keine Insellösung vorschlagen. Ich habe in der ifup script dafür eine kleine Änderung mit “/sbin/capiinit start; /usr/sbin/pppd call t-dsl” gemacht. Sollte jemandem die korrekte Lösung einfallen, soll er/sie mich benachrichtigen.
VIEL SPASS
Andreas Huppert
e-mail: a.hup@web.de