|
Die Treiber für die Hardware werden durch Module bereitgestellt. Man könnte die notwendigen Treiber auch direkt in den Kernel einkompilieren, aber davon ist abzuraten.
Für das I4L-Subsystem ist das Modul isdn
zuständig,
das je nach Kompilierung noch das Modul slhc
benötigt.
Diese Module sind für den eigentlichen Hardwaretreiber
Voraussetzung und müssen vorher geladen sein.
Wenn man die Module über das Tool modprobe
lädt,
braucht man sich darum aber nicht zu kümmern, da dadurch
die Abhängigkeiten selbständig geprüft werden.
Merke: Benutze nur modprobe
zum Laden
der Module.
Je nach verwendeter Hardware sind unterschiedliche
Module notwendig. Für passive ISDN-Karten ist das
Modul HiSax
notwendig. Für aktive Karten werden
herstellerspezifische Module benötigt.
Der isdnlog
horcht ständig auf dem D-Kanal und liefert
uns sowohl zur Diagnose, als auch später zur Auswertung
wichtige Daten. Der isdnlog
wird kurz nach dem Laden
des HiSax-Treibers gestartet; bei aktiven Karten siehe weiter unten.
Wir gehen später auf die Funktionen und den Start des
isdnlog
ein, hier nur kurz die wichtigsten Punkte zur
Konfiguration:
Es werden einige Daten über die Umgebung mitgeteilt, z.B. den Areacode (Vorwahl), den i4l nicht automatisch ermitteln kann.
Passe in dem Beispiel zumindest den Areacode an:
# Beispiel für /etc/isdn/isdn.conf
# Kopiere diese Datei nach /etc/isdn/isdn.conf und
# editiere sie
#
# Mehr Informationen:
# /usr/doc/packages/i4l/isdnlog/README
[GLOBAL]
COUNTRYPREFIX = +
COUNTRYCODE = 49
AREAPREFIX = 0
# Editiere diese Zeile:
AREACODE = 911
# Beispiel:
#AREACODE = 911 # Nürnberg
[VARIABLES]
[ISDNLOG]
LOGFILE = /var/log/isdn.log
ILABEL = %b %e %T %ICall to tei %t from %N2 on %n2
OLABEL = %b %e %T %Itei %t calling %N2 with %n2
REPFMTWWW = "%X %D %17.17H %T %-17.17F %-20.20l SI: %S %9u %U %I %O"
REPFMTSHORT = "%X%D %8.8H %T %-14.14F%U%I %O"
REPFMT = " %X %D %15.15H %T %-15.15F %7u %U %I %O"
isdnlog
verträgt eine Menge Optionen, die man entweder als
Kommandozeilenparameter, oder über eine Konfigdatei
mitgeben kann.
Bei SuSE wird die Datei
/etc/isdn/isdnlog.isdnctrl0.options
verwendet (0: erste Karte, 2: zweite Karte, 4: dritte Karte),
und beim Start des isdnlog
mit dem Parameter -f
übergeben. Diese Datei ist kommentiert und enthält die
wichtigsten Parameter.
Mehr Infos gibt es in der README-Datei zu isdnlog
, die in dem
Quellpaket dabei ist. Bei SuSE ist die Datei unter
/usr/doc/packages/i4l/isdnlog/README
zu finden.
Von Hand sollte isdnlog
mit mindestens folgenden
Optionen gestartet werden:
isdnlog -D -l1015 -x4087 -M -n -W80 /dev/isdnctrl0 &
isdnlog
kann den ein- und ausgehenden Nummern automatisch
einen Aliasnamen zuweisen, der statt der Telefonnummer
angezeigt wird.
Diese Daten stehen in:
/etc/isdn/callerid.conf
. Beispiel:
[NUMBER]
NUMBER = +4991152145922
ALIAS = Eunet-N
ZONE = 1
Darüber lassen sich auch weitere Aktionen definieren, z.B. das Starten eines bestimmten Programmes beim Klingeln.
PnP-Karten müssen im 2.0er Kernel noch manuell konfiguriert werden. Das ist etwas mühsam, muß aber zum Glück nur einmal gemacht werden.
Zum Konfigurieren unter Linux dient das Paket isapnp, das zwei Programme enthält:
Dieses Programm scannt den ISA-Bus nach Karten und erstellt eine Vorlage für die Konfigurationsdatei.
Mit diesem Tool werden die PnP-Karten entsprechend der Konfigurationsdatei initialisiert.
Zuerst suchen wir nach PnP-Karten, aber Vorsicht:
pnpdump
kann den Rechner zum Stillstand bringen.
Starte das Programm nicht unter X und möglichst nur im
Single-User-Mode.
Die Ausgabe von pnpdump
leiten wir gleich in die
Konfigurationsdatei um:
pnpdump > /etc/isapnp.conf
Hier ein Beispiel für eine Elsa QS3000:
# This is free software, see the sources for details.
# This software has NO WARRANTY, use at your OWN RISK
#
# For details of this file format, see isapnp.conf(5)
#
# For latest information on isapnp and pnpdump see:
# http://www.roestock.demon.co.uk/isapnptools/
#
# Compiler flags: -DREALTIME -DNEEDSETSCHEDULER
#
# Trying port address 0203
# Board 1 has serial identifier e5 00 00 00 00 34 01 93 15
# (DEBUG)
(READPORT 0x0203)
(ISOLATE)
(IDENTIFY *)
# Card 1: (serial identifier e5 00 00 00 00 34 01 93 15)
# ELS0134 Serial No 0 [checksum e5]
# Version 1.0, Vendor version 0.0
# ANSI string -->ELSA QuickStep 3000<--
#
# Logical device id ELS0134
#
# Edit the entries below to uncomment out the configuration required.
# Note that only the first value of any range is given, this may be changed if r
equired
# Don't forget to uncomment the activate (ACT Y) when happy
(CONFIGURE ELS0134/0 (LD 0
# Multiple choice time, choose one only !
# Start dependent functions: priority acceptable
# Logical device decodes 16 bit IO address lines
# Minimum IO base address 0x0160
# Maximum IO base address 0x0360
# IO base alignment 16 bytes
# Number of IO addresses required: 16
#(IO 0 (BASE 0x0160))
# IRQ 3, 4, 5, 7, 10, 11, 12 or 15.
# High true, edge sensitive interrupt (by default)
#(INT 0 (IRQ 3 (MODE +E)))
# End dependent functions
#(ACT Y)
))
# End tag... Checksum 0x00 (OK)
# Returns all cards to the "Wait for Key" state
(WAITFORKEY)
Anhand der ausgegebenen Identifier kann man erkennen, welche Karten erkannt wurden und ob es überhaupt PnP-Karten gibt. Diese Datei wird editiert; die Kommentarzeichen müssen entfernt werden und ggf. passende Werte eingesetzt werden. In den Kommentaren werden gültige Werte angegeben.
(IO 0 (BASE 0x0160))
(INT 0 (IRQ 3 (MODE +E)))
(ACT Y)
Man beachte, daß auch (ACT Y)
gesetzt werden muß.
Ansonsten passiert gar nichts.
Diese Konfiguration kann nun auf die PnP-Karte
heruntergeladen werden:
isapnp /etc/isapnp.conf
Board 1 has Identity e5 00 00 00 00 34 01 93 15: ELS0134 Serial No 0 [checksum e5]
Die Ausgabe ist leider nicht sehr aufschlußreich, aber man sollte zumindest den Identifier der Karte erkennen.
Bei SuSE wird das isapnp
Kommando automatisch in
den Init-Skripten ausgeführt. Ansonsten muß man selbst für
diesen Aufruf sorgen.
Dem HiSax-Treiber wird durch Parameter beim Laden mitgeteilt, nach welcher Karte bzw. welchen Karten an welchen Adressen zu suchen ist.
Bei SuSE kann die Konfiguration der ISDN-Hardware
mittels YaST in der Maske
Administration des Systems, Hardware in System
integrieren, ISDN-Hardware konfigurieren
vorgenommen werden. Neben der Auswahl der Karte und
dem Setzen der Parameter kann hier auch sofort das Modul
geladen werden, und zwar durch Starten. Bei Problemen
kann man sofort andere Werte probieren.
Bei Erfolg werden die Parameter mittels
Speichern in rc.config
abgelegt, so daß
die Module beim nächsten Systemstart wieder
geladen werden.
Die Syntax ist in
/usr/src/linux/Documentation/isdn/README.HiSaX
beschrieben.
Die ISDN-Hardware kann direkt in der
/etc/rc.config
eingetragen und/oder
kontrolliert werden. Die Variablen sind kommentiert.
Hier ein Beispiel für eine Elsa QS-3000:
#
# i4l starten? ("yes" oder "no")
# siehe: /usr/doc/packages/i4l/README.SuSE
#
I4L_START="yes"
#
# Treiber-ID für HiSax-Treiber
# - auf "HiSax" setzen
# - oder auf das, was immer Du beim Laden des Treibers
# ins Kernel definiert hast
# - auf "" setzen, falls keine HiSax-Karte installiert
# ist
#
I4L_TELES_ID="hisax1"
#
# D-Kanal Protokoll 1=1TR6, 2=EDSS1(Euro-ISDN) für HiSax
#
I4L_PROTOCOL="2"
# Typ ISDN-Karte Benötigte Parameter
--- ---------- -------------------
# 1 Teles 16.0 irq, mem, io
# 2 Teles 8.0 irq, mem
# 3 Teles 16.3 (nicht PnP) irq, io
# 4 Creatix/Teles PnP irq, io0 (ISAC),
# io1 (HSCX)
# 5 AVM A1 (Fritz) irq, io
# 6 ELSA PCC/PCF cards io oder nichts für eine
# automatische Erkennung
# (die iobase ist nur not-
# wendig, falls Du mehr als
# eine ELSA-Karte im PC
# hast)
# 7 ELSA Quickstep 1000 irq, io (vom isapnp
# Setup)
# 8 Teles 16.3 PCMCIA irq, io
# 9 ITK ix1-micro Rev.2 irq, io
# seit: HiSax 2.5:
# 10 ELSA PCMCIA irq, io (mit dem Card
# Manager setzen)
# 11 Eicon.Diehl Diva ISA PnP irq, io
# 11 Eicon.Diehl Diva PCI keine Parameter
# 12 ASUS COM ISDNLink irq, io (vom isapnp
# Setup)
# 13 HFC-2BS0 basierte Karten irq, io
# 15 Sedlbauer Speed Karte irq, io
# (= Teledat 100)
# 16 USR Sportster intern irq, io
# 17 MIC Karte irq, io
# 18 ELSA Quickstep 1000PCI keine Parameter
#
I4L_TELES_TYPE="7"
#
# IRQ für Teles Karte
# z.B. 12 oder 15 wenn als Modul geladen
# auf "" setzen, wenn der Treiber fest im Kernel ist
#
I4L_TELES_IRQ="3"
#
# Portadresse der Teles Karte (z.B. 0xd80, "0" für S0/8)
#
I4L_TELES_PORT="0x0160"
Der String TELES
hat hier nur historische
Gründe.
Mit diesen Angaben wird die Parameterzeile für den HiSax-Treiber selbständig generiert. Zusätzlich kann man auch die Parameterzeile komplett selbst vorgeben, was z.B. bei neuen Karten notwendig ist, oder wenn man mehrere Karten einbinden will (s.u.).
Beispiel für eine AVM-Fritz und eine ELSA PCF-Karte:
I4L_TELES_MODUL_OPTIONS="type=5,6 protocol=2,2 io=0x340 \
irq=10 id=Fritz%Elsa"
Zum Laden der Module benutzt man dann ein Init-Skript:
# /sbin/init.d/i4l_hardware start
Loading ISDN drivers ...
Loading HiSax driver ...
/sbin/insmod /lib/modules/2.0.33/misc/hisax.o id=hisax1 \
type=7 protocol=2 irq=3 io=0x0160
Verbose-level set to 3.
Starting isdnlog with /etc/isdn/isdnlog.isdnctrl0.options for isdnctrl0...
Man beachte, daß hiermit automatisch der
isdnlog
gestartet wird. Zum Entladen benutze man dasselbe
Skript:
# /sbin/init.d/i4l_hardware stop
Unloading ISDN drivers ...
Die Syntax ist in
/usr/src/linux/Documentation/isdn/README.HiSax
beschrieben. Für eine ELSA-QS3000 gebe man z.B. ein:
modprobe -v hisax id=hisax1 type=7 protocol=2 irq=3 \
io=0x0160
Weiterhin sollten nach dem erfolgreichen Laden folgende Kommandos ausgeführt werden:
/sbin/hisaxctrl hisax1 1 4
/sbin/isdnctrl verbose 3
/sbin/isdnlog /dev/isdnctrl0
Erklärt werden diese Kommandos in den entsprechenden
Manual Pages und der mitgelieferten Dokumentation. Mit den
SuSE-Skripts ist es halt einfacher ;-).
Während des Ladens des HiSax-Moduls bekommt man im Fehlerfall
auf der
Konsole keine aussagekräftigen Meldungen, sondern meist nur ein
Device or resource busy
. Die echten Fehlermeldungen
werden via Syslog zumeist in
/var/log/messages
gespeichert.
Beispiel für einen Mißerfolg beim Laden des Treibers für eine AVM-Fritz-Karte:
Feb 6 22:45:05 glen kernel: HiSax: Driver for Siemens chip set ISDN cards
Feb 6 22:45:05 glen kernel: HiSax: Version 2.1
Feb 6 22:45:05 glen kernel: HiSax: Revisions 1.15/1.10/1.10/1.30/1.8
Feb 6 22:45:05 glen kernel: HiSax: Total 1 card defined
Feb 6 22:45:05 glen kernel: HiSax: Card 1 Protocol EDSS1 Id=HiSax (0)
Feb 6 22:45:05 glen kernel: HiSax: AVM driver Rev. 1.6
Feb 6 22:45:05 glen kernel: AVM A1: Byte at 1b00 is ff
Feb 6 22:45:05 glen kernel: AVM A1: Byte at 1b03 is ff
Feb 6 22:45:05 glen kernel: AVM A1: Byte at 1b02 is ff
Feb 6 22:45:05 glen kernel: AVM A1: Byte at 1b00 is ff
Feb 6 22:45:05 glen kernel: HiSax: AVM A1 config irq:12 cfg:1b00
Feb 6 22:45:05 glen kernel: HiSax: isac:1700/1300
Feb 6 22:45:05 glen kernel: HiSax: hscx A:700/300 hscx B:f00/b00
Feb 6 22:45:05 glen kernel: AVM A1: HSCX version A: ??? B: ???
Feb 6 22:45:05 glen kernel: AVM A1: ISAC 2085 V2.3
Feb 6 22:45:05 glen kernel: AVM A1: wrong HSCX versions check IO address
Feb 6 22:45:05 glen kernel: HiSax: Card AVM A1 not installed !
Hier wurde an der angegebenen Portadresse keine Fritz-Karte gefunden. Es war auch keine vorhanden ;-). Anhand dieser Meldungen sollte man leicht erkennen können, was die genaue Ursache ist. Weitere häufige Fehler sind:
could not get interrupt
: mit dem angegebenen
IRQ kann nicht gearbeitet werden. Probiere einfach einen
anderen. Nicht belegte IRQs kann man durch
cat /proc/interrupts
ermitteln.isapnp
wurde vergessen; siehe hierzu Abschnitt
Plug&Play-Karten.Bei hartnäckigem Mißerfolg wende Dich an einen guten
Bekannten oder an die Mailingliste.
Es sollte unbedingt ein Ausschnitt aus /var/log/messages
angegeben werden.
Der beste und einfachste Test ist, sich selber anzurufen.
Es spielt hierbei keine Rolle,
ob man von einem internen oder externen Analog- oder ISDN-Telefon
anruft. Es wird auch keine Verbindung zustande kommen. Wichtig
ist nur, daß man in
/var/log/messages
eine Meldung über den Anruf finden kann.
Beispiel für einen Voice-Call auf der MSN 123459:
Apr 6 22:15:20 glen kernel: isdn_net: call from 911123458,1,0 -> 123459
Apr 6 22:15:20 glen kernel: isdn_net: Service-Indicator not 7, ignored
Bei diesem Beispiel handelt es sich um einen Voice-Call
(Service-Indicator: 0) von einem Anschluß mit
Rufnummernübermittlung von der MSN 123458 aus dem Ortsnetz
0911 an die eigene MSN 123459. Nein, das ist nicht meine
echte Nummer ;-).
Wichtig ist hier vor allem die Angabe der Zielrufnummer hinter dem Pfeil, hier 123459. Man sollte hier alle eigenen Nummern durchprobieren. So wie es dort angegeben ist, ist auch später die eigene MSN zu setzen.
Ziel dieser Übung ist: die ISDN-Karte soll angesprochen und geprüft werden.
Notiere Dir:
Schlimmstenfalls mußt Du Deinen Rechner aufschrauben, das falsche Betriebssystem booten und/oder den Administrator nerven.
Nur in /var/log/messages
steht die Wahrheit,
sie ist für die
gesamte Konfigurationsarbeit (und später) zu verfolgen.
Öffne mindestens zwei virtuelle Linux-Konsolen
oder unter X zwei xterm
s.
Auf einer Konsole starte entweder:
tail -f /var/log/messages
less /var/log/messages
, im Programm
dann F
(follow) drücken, um immer die
neuesten Zeilen zu bekommen. Diesen Modus
beendet man durch Ctrl-C
, und less
selbst
wird mit q
beendet.
Falls es sich um eine Plug&Play-Karte handelt, konfiguriere
sie; wenn Du es nicht weißt, starte pnpdump
.
Siehe hierzu Abschnitt
Plug&Play-Karten.
Lade das entsprechende Modul nach Deiner bevorzugten Methode, also YaST ;-). Stelle sicher, daß die Einstellungen notiert sind und beim Systemstart automatisch das Modul wieder geladen wird.
Prüfe mit lsmod
, ob das Modul geladen ist.
Prüfe mit ps ax | grep isdnlog
, ob der isdnlog
läuft. Prüfe, ob /var/log/messages
normal
aussieht.
Siehe auch Abschnitt HiSax-Treiber laden.
Rufe Dich selbst an und notiere alle MSNs, unter denen Du angerufen werden kannst. Siehe Abschnitt Hardware testen.
Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 17:56:56