Inhalt

3. Hardware-Modul laden

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.

3.1 isdnlog konfigurieren

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:

3.2 Plug&Play-Karten

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:

  1. pnpdump: scannt den ISA-Bus nach Karten und erstellt eine Vorlage für die Konfigurationsdatei
  2. isapnp: initialisiert die PnP-Karten entsprechend der Konfigurationsdatei.
Erst nachdem die Karte(n) hiermit konfiguriert wurde(n), kann durch Treiber auf die Hardware zugegriffen werden. PnP-Karten können also nur durch Modul - nicht durch Treiber im Kernel - benutzt werden.

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.

3.3 HiSax-Treiber laden

Dem HiSax-Treiber wird durch Parameter beim Laden mitgeteilt, nach welcher Karte (oder auch Karten) an welchen Adressen zu suchen ist.

Laden mit YaST

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.

Laden über /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 ...
            

Laden von Hand

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 ;-)

Troubleshooting

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:

  1. 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.
  2. Portadresse wird nicht erkannt, obwohl alles richtig scheint: Es ist eine PnP-Karte, isapnp wurde vergessen. Siehe Plug&Play-Karten.
  3. Portadresse wird nicht erkannt, obwohl alles richtig scheint: es ist eine Teleskarte, man kann also nicht wissen, um welchen Typ es ist wirklich handelt. Abhilfe: neuesten HiSax besorgen und alles ausprobieren. Siehe Installation.

Bei hartnäckigem Mißerfolg, wende Dich an einen guten Bekannten oder an die Mailingliste. Unbedingt den Ausschnitt aus /var/log/messages angeben!

3.4 Hardware testen

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.

3.5 Übung: Hardware ansprechen.

Ziel: Die ISDN-Karte soll angesprochen und geprüft werden.

  1. Welche Hardware / Umgebung hab ich?

    Notiere Dir:

    1. Welche Karte hab ich (Hersteller, Typ, etc.)?
    2. Wie ist die Karte gejumpert (Port)?
    3. Mit welchen Werten kann die Karte unter anderen System angesprochen werden?
    4. Welches Protokoll wird auf dem S0-Bus benutzt (1TR6, DSS1)?
    5. Wo ist die ISDN-Karte angeschlossen (NTBA, TK-Anlage)?
    6. Welche MSN's kann ich auf diesem S0-Bus benutzen?

    Schlimmstenfalls mußt Du Deinen Rechner aufschrauben, das falsche Betriebssystem booten und/oder den Administrator nerven.

  2. Betrachte messages

    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:

  3. PnP Karte?

    Falls es eine Plug&Pray-Karte ist, konfiguriere sie, wenn Du es nicht weißt, starte pnpdump. Siehe Plug&Play-Karten.

  4. Modul laden

    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

  5. ISDN testen

    Rufe Dich selbst an und notiere alle MSN unter denen Du angerufen werden kannst.

    Siehe Hardware testen


Inhalt