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.