Die Treiber für die Hardware werden durch Module bereitgestellt. Man könnte die notwendigen Treiber auch direkt in den Kernel laden, aber davon ist abzuraten.
Für das I4L-Subsystem ist das Modul isdn
zuständig,
das (je nach Compilierung) noch slhc
benötigt.
Diese Module sind für den eigentlichen Hardwaretreiber
Voraussetzung und müssen vorher geladen sein.
Wenn die Module über das Tool modprobe
lädt,
braucht man sich darum aber nicht zu kümmern, da dadurch
die Abhängigkeiten selbststä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 zur später zur Auswertung wichtige Daten. Der isdnlog wird kurz nach dem Laden des HiSax-Treibers gestartet (bei aktiven Karten siehe unten).
Wir gehen später auf die Funktionen und den Start des isdnlog ein, hier nur kurz die wichtigsten Punkte zur Konfiguration:
/etc/isdn/isdn.conf
Es werden einige Daten über die Umgebung mitgeteilt, z.B. den Areacode (Vorwahl), den i4l nicht automatisch ermitteln kann.
Passe in dem Bsp. zumindest den Areacode an:
# exapmle of /etc/isdn/isdn.conf
# copy this file to /etc/isdn/isdn.conf and edit
#
# More information: /usr/doc/packages/i4l/isdnlog/README
[GLOBAL]
COUNTRYPREFIX = +
COUNTRYCODE = 49
AREAPREFIX = 0
# EDIT THIS LINE:
AREACODE = 911
# Example:
#AREACODE = 911 # Nuernberg
[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 S.u.S.E. 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 S.u.S.E. auch unter
/usr/doc/packages/i4l/isdnlog/README
eingepackt.
Von Hand sollte isdnlog mit mindestens folgenden Option gestartet werden:
isdnlog -D -l1015 -x4087 -M -n -W80 /dev/isdnctrl0 &
isdnlog kann die ein- und ausgehenden Nummern automatisch
einem 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. Starten eines bestimmten Programmes beim Ring.
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 bietet:
Zuerst scannen 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: Auch (ACT Y)
muß gesetzt werden.
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 S.u.S.E. wird das isapnp
Kommando automatisch in
den Init-Scripten ausgeführt. Ansonsten muß man selbst für
diesen Aufruf sorgen.
Dem HiSax-Treiber wird durch Parameter beim Laden mitgeteilt, nach welcher Karte (oder auch Karten) an welchen Adressen zu suchen ist.
Bei S.u.S.E. 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
setzen der Parameter kann hier auch sofort das Modul
geladen werden 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.
/etc/rc.config
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:
#
# start i4l? ("yes" or "no")
# see: /usr/doc/packages/i4l/README.SuSE
#
I4L_START="yes"
#
# driver-id for HiSax-driver
# set to "HiSax"
# or whatever you defined when loading driver within kernel
# set to "" if you don't have a hisax-card
#
I4L_TELES_ID="hisax1"
#
# D-channel protocol 1=1TR6, 2=EDSS1(Euro-ISDN) for HiSax
#
I4L_PROTOCOL="2"
# Type ISDN-card Required parameters
# ---- --------------------- -------------------------------------------
# 1 Teles 16.0 irq, mem, io
# 2 Teles 8.0 irq, mem
# 3 Teles 16.3 (non PnP) irq, io
# 4 Creatix/Teles PnP irq, io0 (ISAC), io1 (HSCX)
# 5 AVM A1 (Fritz) irq, io
# 6 ELSA PCC/PCF cards io or nothing for autodetect (the iobase is
# only required, if you have more than one ELSA
# card in your PC)
# 7 ELSA Quickstep 1000 irq, io (from isapnp setup)
# 8 Teles 16.3 PCMCIA irq, io
# 9 ITK ix1-micro Rev.2 irq, io
# since: HiSax 2.5:
# 10 ELSA PCMCIA irq, io (set with card manager)
# 11 Eicon.Diehl Diva ISA PnP irq, io
# 11 Eicon.Diehl Diva PCI no parameter
# 12 ASUS COM ISDNLink irq, io (from isapnp setup)
# 13 HFC-2BS0 based cards irq, io
# 15 Sedlbauer Speed Card irq, io
# (= Teledat 100)
# 16 USR Sportster internal irq, io
# 17 MIC card irq, io
# 18 ELSA Quickstep 1000PCI no parameter
#
I4L_TELES_TYPE="7"
#
# IRQ of Teles Card
# eg. 12 or 15 when loading as module
# set to "" when driver is loaded within kernel
#
I4L_TELES_IRQ="3"
#
# Portaddress of Teles card (e.g. 0xd80, "0" for 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 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 anbinden 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 Init-Script:
glen:/root # /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 Script:
glen:/root # /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
man-pages und mitgelieferter Doku, mit dem
S.u.S.E. Scripts 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
Device or resource busy
. Die echten Fehlermeldungen
werden via Syslog (zumeist) in
/var/log/messages
gespeichert.
Beispiel für einen Mißerfolg beim Laden einer AVM-Fritz:
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 IRQ kann man durch
cat /proc/interrupts
ermitteln.
Bei hartnäckigem Mißerfolg, wende Dich an einen guten
Bekannten oder an die Mailingliste.
Unbedingt den Ausschnitt aus /var/log/messages
angeben!
Der beste und einfachste Test, ist sich selber anzurufen.
Es spielt hierbei keine Rolle, ob man ISDN-Daten- oder Voice-Call,
ob von einem internen oder externen Analog- oder ISDN-Telefon
anruft. Es wird auch keine Verbindung zu Stande kommen. Wichtig
ist nur, daß man unter
/var/log/messages
eine Meldung über den Anruf erkennt.
Beispiel für einen Analog-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 ein Voice-Call
(Service-Indicator: 0) von einem Anschluß mit
Rufnummerübermittlung von der MSN 123458 aus dem Ortsnetz
0911 an die eigene MSN 123459. (Nein, das ist nicht meine
echte Nummer ;-)
Wichtig ist vor allem hier 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: 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 Konsolen (virtuelle Linux-Konsole
oder unter X zwei xterm
).
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
, beenden
von less mit q
.
Falls es eine Plug&Pray-Karte ist, konfiguriere
sie, wenn Du es nicht weißt, starte pnpdump
.
Siehe
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, ob das Modul geladen ist mit lsmod
.
Prüfe, ob der isdnlog
läuft mit
/ps ax|grep isdnlog
Prüfe, ob /var/log/messages
normal
aussieht.
Siehe HiSax-Treiber laden
Rufe Dich selbst an und notiere alle MSN unter denen Du angerufen werden kannst.
Siehe Hardware testen