Fritz
Card PCI v. 2.0 Linux 2.6 Howto
Stefan Bauer (duke at
splatterworld dot de)
23 Juli 2005
Einleitung:
Fritz Card PCI zur Einwahl ins Internet unter Linux Debian Kernel 2.6.x
testing auf Basis von HiSax und ISDN4Linux
Voraussetzung:
Fritz Card PCI v.2.0 (Fa. AVM)
technische Voraussetzungen zum Betrieb an einem ISDN Telefonanschluss
Linux 2.6 System mit Kernel Sourcen
regulärer Internet Zugang für den Bezug der Pakete und Utilities
Call by Call Provider mit Zugangsnummer und Benutzerkennung für die Einwahl
ca. eine halbe Stunde Zeit
Ablauf:
1. Vorhandene Hardware überprüfen
1.1 Anpassen des Kernels
1.2 Installation der benötigten Pakete
1.3 Konfiguration der Geräte und Pakete
1.4 Der erste Versuch
2. Dies und
Jenes
3. Bekannte Probleme
4. Verweise
und Infos
1. Vorhandene Hardware überprüfen:
Nachdem wir die Fritz Karte in unser System eingebaut haben und dieses
nun gebootet, überprüfen wir erneut ob es sich bei
unserer Karte um eine PCI FritzCard v. 2.0 handelt.
# lspci | grep AVM
Unsere Ausgabe sollte in etwa so aussehen:
0000:02:09.0 Network controller: AVM Audiovisuelles MKTG & Computer System GmbH Fritz!PCI v2.0 ISDN (rev 01)
Falls dies gewährleistet ist, gehen wir zum nächste Schritt über
1.1 Anpassen des Kernels:
Da sich durch den Einbau der Karte neue Geräte und
Möglichkeiten ergeben, müssen diese auch unterstützt
werden.
Wir wechseln hierzu in unser Kernel Quell Verzeichnis (abhängig
von der aktuellen Kernel Version) und bearbeiten die Konfiguration:
# cd /usr/src/linux-2.6.11.7
# make menuconfig
Folgende Optionen müssen aktiviert werden und werden dadurch in den Kernel integriert (mit einkompiliert):
Device Drivers - >
Networking Support --->
Networking Support <*>
Network Device Support <*>
PPP (point-to-point protocol) support <*>
PPP multilink support <*>
PPP support for async serial ports <M>
PPP support for sync tty ports <M>
PPP BSD-Compress compression <M>
SLIP (serial line) support <M>
ISDN subsystem --->
ISDN support <*>
Old ISDN4Linux ----->
Old ISDN4Linux <*>
Support synchronous PPP <*>
Support BSD compression <M>
Passive cards ------->
HiSax SiemensChipSet driver support <*>
HiSax Support for EURO/DSS1 <*>
AVM Fritz!Card PCI/PCIv2/PnP support <*>
Jetzt wo wir die Kernelkonfiguration abgeschlossen haben,
verlassen wir die menuconf Umgebung und bejahen die Speicherung der
Einstellung.
Zeit, den Kernel ins System einzubinden. Hierzu übersetzen wir
Ihn, erstellen die nötigen Module, verlinken diese und teilen zu
guter Letzt unserem Bootmanager mit, wo er unseren individuellen Kernel
findet und starten anschliesend neu:
#
make bzImage && make modules && make modules_install
&& cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.11.7 &&
update-grup && shutdown -r now
Sollte nach dem Reboot alles gut verlaufen sein, sieht die Ausgabe der ISDN und HiSax Unterstützung in etwa so aus:
# dmesg
ISDN subsystem Rev: 1.1.2.3/1.1.2.3/1.1.2.2/1.1.2.3/none/1.1.2.2
HiSax: Linux Driver for passive ISDN cards
HiSax: Version 3.5 (kernel)
HiSax: Layer1 Revision 2.46.2.5
HiSax: Layer2 Revision 2.30.2.4
HiSax: TeiMgr Revision 2.20.2.3
HiSax: Layer3 Revision 2.22.2.3
HiSax: LinkLayer Revision 2.59.2.4
HiSax: Total 0 card defined
hisax_isac: ISAC-S/ISAC-SX ISDN driver v0.1.0
hisax_fcpcipnp: Fritz!Card PCI/PCIv2/PnP ISDN driver v0.0.1
HiSax: Card 1 Protocol EDSS1 Id=fcpcipnp0 (0)
HiSax: DSS1 Rev. 2.32.2.3
HiSax: 2 channels added
HiSax: MAX_WAITING_CALLS added
hisax_fcpcipnp: found adapter Fritz!Card PCI v2 at 0000:02:09.0
Nun gehen wir zum nächsten Schritt über, die Karte mit nötiger Software (Pakete) anzusprechen:
1.2 Installation der benötigten Pakete:
Folgende Pakete benötigen wir:
ipppd
isdnactivecards
isdnlog
isdnlog-data
isdnutils
isdnutils-base
capiutils
Diese installieren wir bei aufrecht erhaltener Internet Verbindung mit:
# apt-get install ipppd isdnactivecards isdnlog isdnlog-data isdnutils isdnutils-base capiutils
Wärend die Pakete eingespielt werden, frägt
womöglich das eine oder andere Paket nach gewissen Einstellungen,
diese überspringen wir und passen sie nachträglich manuell
an, womit wir zum nächsten Schritt kommen.
1.3 Konfiguration der Geräte und Pakete:
Jetzt erstellen wir die benötigten Konfigurationen für unser ISDN Subsystem
# isdnconfig
In diesem Menü wählen wir lediglich Punkt eins und zwei aus
und geben jeweils ippp0 als Interface an. Falls wir eine
Rückmeldung bekommen, dass diese Geräte nicht verfügbar
sind, verweise ich auf 3. Bekannte Probleme
Andernfalls beenden wir isdnconfig mit Q (Quit) und wenden uns den Konfigurations Dateien zu:
Relevante Dateien sind:
/etc/isdn/isdn.conf
/etc/isdn/device.ippp0
/etc/isdn/ipppd.ippp0
/etc/ppp/pap-secret
Es ist an der Zeit, sich die Konfiguration vorzunehmen:
/etc/isdn/isdn.conf
AREAPREFIX = 0
AREACODE = 8621
Diese sind die einzigen zwei benötigten Zeilen, bei Areacode die
Vorwahl ohne 0 (null) und bei Areaprefix die weggefallene 0 eintragen.
/etc/isdn/device.ippp0
# set -e
kommentieren wir ein, da wir nicht wollen, dass beim kleinsten Fehler der Dienst seine Arbeit beendet
LOCALIP=169.255.255.169
REMOTEIP=10.0.0.2
belassen wir bei den Standard Werten, da diese vom Provider gesetzt werden
LOCALMSN=0
REMOTEMSN=19231770
LEADINGZERO=0
LocalMSN setzen wir auf 0, oder auf unsere zugewiesene ISDN Nummer bei einer Telefonanlage z.b
RemoteMSN steht für die anzuwählende Nummer beim Provider, in unserem Fall Freenet Call by Call
LeadingZero verlangt wieder die führende 0, da wir bei der Einwahlnummer des ISP's auf die 0 verzichten
DIALMODE=on
für manuelle Einwahl, bei automatischer [dial] (Dial on Demand) siehe 3. Bekannte Probleme
isdnctrl huptimeout ${device} 600
Zeit bis zum Auflegen, bei nicht benutzter Verbindung. Wert von 60 auf benötigten erhöhen (600 in unserem Fall)
Die restlichen Optionen werden von mir nicht dokumentiert aber sind als
vorhandene Kommentare in der Konfigurationsdatei einsehbar.
/etc/isdn/ipppd.ippp0
debug
Liefert eine Ausgabe bei Fehlern
passive
Überlässt Gegenstelle Verbindungsinitialisierung
lcp-restart 1
user benutzer0815
Benutzer / Login Name beim Provider (in unserem Fall benutzer0815)
remotename benutzer0815
Name für den Eintrag in der pap-secret Datei (in unserem Fall auch der Username)
noccp
nolzs
noipdefault
Überlässt Gegenstelle die Definition der IP Adresse für unser Interface
netmask 255.255.255.255
Unsere Netzwerkmaske
nohostroute
mru 1524
mtu 1500
Maximale Übertragung von Einheiten in einem Paket (kann / soll auf 1500 geändert werden)
ipcp-accept-local
ipcp-accept-remote
Zusammenfassend, sind die farbig markierten Einstellungen die
völlig ausreichenden für eine Verbindungsherstellung. Der
rest kann auskommentiert bleiben.
Lediglich das Anmelden beim Provider bedarf noch einen kleinen Eingriff in der pap-secret Datei:
/etc/ppp/pap-secrets
benutzer0815 benutzer0815 geheimespasswort
benutzer0815 definiert unseren Benutzernamen beim Provider
benutzer0815 teilt pap mit, dass wir der User sind
und geheimespasswort stellt unser Passwort da
1.4 Der erste Versuch:
Falls wir nun alle oben genannten Schritte erledigt haben, können
wir ein letztes Mal neustarten um die Automatisierung zu Gesicht zu
bekommen. Für ganz Eilige reicht es, die isdnutils neuzustarten.
# /etc/init.d/isdnutils reload
Sollte dies ohne Murren erledigt worden sein, ist es an der Zeit unsere erste Verbindung aufzubauen.
# isdnctrl dial ippp0
Dialing of ippp0 triggered
Die Ausgabe von dmesg liefert uns folgendes:
# dmesg
ippp0: dialing 1 019231770...
isdn_net: ippp0 connected
Und unser interface sollte mit zugewiesener IP Adresse bereit sein:
# ifconfig ippp0
ippp0 Protokoll:Punkt-zu-Punkt Verbindung
inet Adresse:213.6.62.148 P-z-P:62.104.218.38
Maske:255.255.255.255
UP PUNKTZUPUNKT RUNNING NOARP MTU:1500 Metric:1
RX packets:1348 errors:0 dropped:0 overruns:0 frame:0
TX packets:1451 errors:0 dropped:0 overruns:0 carrier:0
Kollisionen:0 Sendewarteschlangenlänge:30
RX bytes:948219 (925.9 KiB) TX bytes:157994 (154.2 KiB)
Bei Problemen bitte Punkt 2. Dies und Jenes und Punkt 3. Bekannte Probleme beachten
2. Dies und Jenes:
Abfragen der Geräteinformation:
# isdnctrl list ippp0
Current setup of interface 'ippp0':
EAZ/MSN: 0
Phone number(s):
Outgoing: 0192195127
Incoming:
Dial mode: manual
Secure: on
Callback: off
Reject before Callback: on
Callback-delay: 5
Dialmax: 1
Hangup-Timeout: 600
Incoming-Hangup: off
ChargeHangup: off
Charge-Units: 0
Charge-Interval: 0
Layer-2-Protocol: hdlc
Layer-3-Protocol: trans
Encapsulation: syncppp
Slave Interface: None
Slave delay: 10
Master Interface: None
Pre-Bound to: Nothing
PPP-Bound to: 0
Trennen der Verbindung:
# isdnctrl hangup ippp0
3. Bekannte Probleme
devfs verhindert das Anlegen der benötigten /dev/isdn* /dev/ippp* Einträge:
falls sich unter /dev keine Einträge wie isdnctrl oder ippp0 befinden, müssen diese manuell angelegt werden:
# cp -a /dev/.static/dev/isdn* /dev
# cp -a /dev/.static/dev/ippp* /dev
# ln -s /dev/isdnctr0 /dev/isdnctrl
Die oben genannten Zeilen lassen sich automatisieren:
# vi /etc/init.d/isdndevs
Oben genannte Zeilen in die Datei eintragen und mit
:wq!
abspeichern. Anschliesend Die Datei ausführbar machen und in die Runlevels einbinden:
# chmod +x /etc/init.d/isdndevs
# update-rc.d isdndevs defaults
dialmode auto nicht möglich:
Zum Zeitpunkt als ich dieses Howto schrieb, lagen mir von mehreren
Seiten die Bestätigungen vor, dass die Einwahl mit ipppd nur
manuell zu machen sei. Aus Sicht der Kostenkontrolle auch das einzige
was zu begrüßen ist.
Keine Verbindung trotz korekter Einwahl:
Notfalls muss die Route für das Interface erneut gesetzt werden. Dies geschiet mit:
# route add default ippp0
4.
Verweise
und
Infos:
isdn4linux Hauptseite www.isdn4linux.de
Call by Call Provider Übersicht www.onlinekosten.de
Das Linux Kernel Archiv www.kernel.org
Das Debian Anwenderhandbuch www.debiananwenderhandbuch.de
Debian Paketübersicht http://www.debian.org/distrib/packages
Dieses HOWTO wurde mit groeßter Sorgfalt erstellt.
Trotzdem
koennen Fehler nicht vollstaendig ausgeschlossen werden. Ich
kann
für fehlerhafte Angaben und deren Folgen weder eine
juristische
Verantwortung noch irgendeine Haftung uebernehmen. Fuer
Verbesserungsvorschläge und Hinweise auf Fehler bin ich
dankbar.