SuSE Support-Datenbank

Titel: ISA-PnP: Konfiguration einer ISA-PnP Karte

---

Übersicht ---- Stichwortsuche ---- History ---- Versionen ---- Kategorien ---- Alle Artikel
English
---

ISA-PnP: Konfiguration einer ISA-PnP Karte

Bezieht sich auf

SuSE Linux: Versionen ab 5.1
Kernel: Versionen ab 2.0.32

ISA "Plug and Play"-Hardware unter S.u.S.E. Linux

Allgemeines :

Seit geraumer Zeit gibt es ISA-"PnP"-Karten. "PnP" ist die englische Abkürzung für Plug and Play (auch oft und nicht immer zu unrecht als Plug and Pray bezeichnet). Die Grundidee dieses Gerätetyps ist es, die vom Gerät benötigten Systemressourcen wie etwa den IRQ dynamisch zur Laufzeit festzulegen. Dies kann grundsätzlich entweder durch das Betriebssystem (bzw. dessen Dienstprogramme) erfolgen oder bei moderneren Mainboards während des Bootens durch das BIOS. So sollen anders als bei "alten" Karten mit festen Parametern Konflikte zwischen verschiedenen Hardwarekomponenten vermieden werden, da ja das Betriebssystem oder das BIOS selber dafür Sorge tragen kann, daß keine zwei Geräte etwa denselben Interrupt benutzen. Ein manuelles Konfigurieren z.B. über Jumper soll dann nicht mehr notwendig sein. Soweit die Theorie ...

Konfiguration :

Bei der Festlegung der Parameter von ISA-PnP Karten durch das BIOS steht man vor der folgenden Problematik : Im allgemeinen sind zwar die den Karten zugewiesenen Werte bei jedem Booten identisch, wird jedoch z.B. eine weitere ISA-PnP Karte in das System eingebaut, so sind die neuen Werte völlig unvorhersagbar. Da solche Parameter jedoch in manche Kernel- Module fest einkompiliert werden müssen, führt dies zunächst dazu, daß die Karte vom entsprechenden Treiber nicht mehr angesprochen werden kann. Auch ist es oft aufwendig, die zugewiesenen Werte überhaupt erst einmal in Erfahrung zu bringen. Zuguterletzt scheinen sich einige Karten nicht völlig an die ISA-PnP-Spezifikation zu halten und verursachen so Schwierigkeiten. Von der Verwendung der automatischen Zuweisung durch das BIOS sollte also unter Linux abgesehen werden. Deaktivieren Sie ggf. die automatische Konfiguration von ISA-PnP-Karten in Ihrem BIOS (Notieren Sie sich bitte vor Änderungen an den BIOS-Einstellungen die urspünglichen Werte, um Sie im Falle einer Fehleinstellung wiederherstellen zu können !).

Die Initialisierung von ISA-PnP Karten erfolgt unter S.u.S.E.-Linux mit Hilfe der beiden Programme

Bei den derzeit aktuellen 2.0er Kernel erfolgt die Zuweisung der Konfigurationsparameter noch nicht automatisch durch das Betriebssystem ohne Zutun des Benutzers, vielmehr muss dieser aus einer Liste möglicher Konfigurationen eine passende wählen. Dies hat den Vorteil, daß es immer vorhersagbar bleibt, welche Karte welche Werte zugewiesen bekommt. Man kann das im folgenden beschriebene Vorgehen vielleicht wie eine Art "Software Jumper" betrachten. Allerdings ist man nicht mehr gezwungen, den Rechner aufzuschrauben und mit spitzen Fingern einen Jumper von der Karte zu "pflücken", um etwas zu ändern.

Am Umgang mit ISA-PnP-Geräten wird sich mit dem Aufkommen der 2.2er Serie der Kernels einiges ändern. Wen der jetzige Zustand also stört, der wird nicht allzulange darauf warten müssen, daß sich etwas ändert.

Im folgenden wird Schritt für Schritt die Konfiguration von ISA-PnP Karten erklärt, wie Sie unter den 2.0er Kernels erfolgen muss. Alle beschriebenen Schritte müssen natürlich als Superuser (root) durchgeführt werden. Diese Beschreibung verwendet Informationen des ISA-PnP FAQs. Dieses ist z.B. unter der URL

http://www.roestock.demon.co.uk/isapnptools/
erhältlich und eine sehr sinnvolle Lektüre.

Es wird davon ausgegangen, daß es sich um eine Erstkonfiguration handelt. Existiert im Verzeichnis /etc bereits eine Datei isapnp.conf, so stammt diese höchstwahrscheinlich von einem früheren Konfigurationsversuch. Erstellen Sie in diesem Fall ein Backup dieser Datei :

cp /etc/isapnp.conf /etc/isapnp.conf.bak.heutigesDatum
und folgen Sie dann unserer Anleitung. Rufen Sie das Programm pnpdump auf und leiten Sie seine Ausgabe in die Datei /etc/isapnp.conf um :
/sbin/pnpdump > /etc/isapnp.conf
Schauen Sie sich diese Datei mit einem Editor Ihrer Wahl an (Der Editor joe ist hierbei aufgrund seiner vglw. einfachen Bedienung eine gute Wahl. Hilfe erhalten Sie im laufenden Editor mit der Tastenkombination Ctrl-k-h), z.B.
joe /etc/isapnp.conf
Hintergrund : pnpdump scannt alle Isa-PnP Karten und schreibt mögliche Konfigurationen (Interrupts, Basisadressen, ...) nach stdout. Dies geschieht in einer Form, die für das Programm isapnp lesbar ist. Mit diesem werden später (manuell im laufenden System oder automatisch bei jedem Booten) die installierten ISA-PnP-Karten initialisiert.

Mögliche Fehlerquellen :

pnpdump liefert eine Ausgabe der Art : No boards found oder eine oder mehrere der installierten ISA-PnP Karten werden nicht erkannt. Mögliche Erklärungen :

Achtung : Die Tatsache, daß pnpdump die in Ihrem System installierten ISA-PnP Karten findet, bedeutet noch nicht, daß diese auch von Linux unterstützt werden.

Vorbereitungen :

Sie haben nun einen Editor gestartet und die Datei /etc/isapnp.conf geladen. Der nächste Schritt ist, die Kommentarzeichen # vor einigen Einträgen dieser Datei zu entfernen.

Haben Sie keine Angst davor, Änderungen an dem File zu machen. Geht etwas schief, so können Sie die Datei jederzeit neu mit pnpdump erzeugen. Wenn Sie beim Entfernen der Kommentarzeichen einen Fehler machen, so passiert beim nachfolgenden Aufruf von isapnp (s.u.) mit allergrösster Wahrscheinlichkeit nicht mehr, als daß die Karten nicht richtig initialisiert werden.

Geht wirklich etwas ernsthaft schief und das System stürzt ab (z.B. durch einen Interrupt-Konflikt), so können Sie immer mit dem Rettungssystem booten und dann die Datei /etc/isapnp.conf löschen. Booten Sie dann wie gewohnt. Da die Karten nicht mehr initialisiert werden, ist nicht mehr mit Schwierigkeiten zu rechnen. Versuchen Sie dann erneut, die Karten zu konfigurieren.

Ein Beispiel für /etc/isapnp.conf in einem System mit einer Soundkarte Creative Labs Soundblaster AWE64 finden Sie weiter unten. Natürlich sieht diese Datei von System zu System unterschiedlich aus, und Sie können Sie nicht ohne weiteres so in Ihrem System verwenden.

Für die Einträge in /etc/isapnp.conf gelten die folgenden Regeln :

pnpdump liefert für jede installierte ISA-PnP Karte eine oder mehrere Konfigurationsmöglichkeiten. Der Eintrag für eine Karte beginnt mit einer Zeile der Art

# Card 1: (serial identifier ec 00 01 04 d8 9d 00 8c 0e)
und endet mit dem Beginn des Eintrags für die nächste Karte. Eine Karte kann mehr als eine Funktion auf sich vereinigen. Zum Beispiel ist auf einer Soundkarte neben der reinen Soundfunktionalität meist auch ein Gameport, ein MPU401 sowie ein Synthesizer enthalten. Eine oder mehrere dieser Funktionalitäten bilden zusammen logische Geräte (engl. logical device). Diese logischen Geräte können als weitgehend unabhängig voneinander betrachtet werden. Physikalisch kann ein logisches Gerät auf einer Steckkarte z.B. durch einen einzelnen Chip realisiert sein, der mehrere Funktionen übernimmt. Innerhalb des Eintrages für eine Karte in der /etc/isapnp.conf ist deshalb für jedes logische Gerät ein Unterabschnitt zu finden.

Eine Untersektion für ein logisches Gerät beginnt mit einer Zeile der Art

(CONFIGURE CTL009d/66776 (LD 0
und endet mit dem Eintrag
(ACT Y)
))
Vor (ACT Y) befindet sich in der "rohen" (d.h. unbearbeiteten) Ausgabe von pnpdump noch ein Kommentarzeichen #. Entfernen Sie es. Soll die entsprechende Funktionalität der Karte später durch isapnp nicht initialisiert werden, so ändern Sie das Y in ein N um.

Innerhalb des Konfigurationsteils für ein logisches Gerät finden sich verschiedene Blöcke, die durch Leerzeilen getrennt sind. Diese stellen die alternativ verwendbaren Konfigurationsoptionen für ein logisches Device dar. Wählen Sie nur einen dieser Blöcke aus und entfernen Sie die Kommentarzeichen # vor allen Einträgen innerhalb des Blocks, die in Klammern gesetzt sind, z.B.

# (INT 0 (IRQ 5 (MODE +E)))
Im Zweifelsfall sollten Sie die öffnenden und schliessenden Klammern zählen. Nach (ACT Y))) dürfen keine Klammern mehr geöffnet sein. Die anderen Zeilen sind echte Kommentare. Sie können unverändert bleiben (oder - je nach Wunsch - auch ganz gelöscht werden). Lesen Sie diese Kommentare dennoch, sie enthalten evtl. wichtige Informationen. Achten Sie bei der Auswahl eines Blocks darauf, keine Interrupts, Basis-Adressen und DMA-Kanäle mehrfach zu vergeben. Vermeiden Sie die gleichzeitige Verwendung der Interrupts 2 und 9 . Informationen über die in Ihrem System bereits verwendeten Ressourcen erhalten Sie z.B. durch die Befehle

Z.T. sind verwendete Ressourcen dort allerdings erst sichtbar, wenn die dazugehörigen Geräte in Benutzung sind (Beispiel : gemountete Floppy). Ggf. müssen Sie auf noch nicht verwendete Interrupts etc. ausweichen und die /etc/isapnp.conf entsprechend abändern (z.B. den vorgeschlagenen IRQ 5 für ein Gerät umändern in IRQ 7). Dieser Fall ist allerdings eher selten. Speichern Sie die Datei ab und verlassen Sie den Editor (Befehl Ctrl-k-x im joe). Rufen Sie das Programm isapnp auf :

/sbin/isapnp /etc/isapnp.conf
Sie erhalten eine Ausgabe wie z.B.
Board 1 has Identity c6 ff ff ff ff 11 14 b2 50: TER1411 Serial No 4294967295 [checksum c6]
Wenn Sie keinen Fehler begangen haben, so sind Ihre ISA-PnP-Karten jetzt initialisiert. Allerdings sagt diese Ausgabe noch nichts darüber aus, ob alles glattgegangen ist. Sie zeigt lediglich, daß eine Karte überhaupt als ISA-PnP-Gerät erkannt wird. isapnp wird im übrigen automatisch bei jedem Booten ausgeführt, sobald sich im Verzeichnis /etc eine Datei mit Namen isapnp.conf befindet.

ISA-PnP und Module

Durch pnpdump und isapnp ist es möglich, ISA-PnP Karten zu initialisieren. Diese Fähigkeit ist unabhängig von der Frage, ob die entsprechende Karte von Linux unterstützt wird oder nicht. Die eigentliche Kommunikation zwischen Linux und der Karte erfolgt über die Treiber. Nun ist es zwingend erforderlich, daß eine Karte initialisiert wird, bevor ein Treiber sie anspricht. Da das Programm isapnp aber natürlich erst (automatisch) ausgeführt werden kann, nachdem der eigentliche Kernel geladen wurde, ist es zwingend erforderlich, Treiber für ISA-PnP als Kernel-Module zu generieren. Diese Module könnnen dann nach dem Aufruf von isapnp geladen werden. Der nächste logische Schritt nach dem Aufsetzen von /etc/isapnp.conf ist deshalb die Konfiguration, Übersetzung und Installation der zu den Karten gehörenden Module. Hierbei müssen Sie im Regelfall die in /etc/isapnp.conf ausgewählten Interrupts etc. angeben. Manche Module erlauben es auch, diese Ressourcen als Kommandozeilenargument anzugeben. Eine der Hauptschwierigkeiten bei der Konfiguration von ISA-PnP-Karten ist die Zuordnung der angebotenen Portadressen, Interrupts und DMA-Kanäle zu den einzelnen Funktionen einer Karte. Teilweise sind diesen zwar "beschreibende" Zeichenketten vorangestellt, diese sind jedoch manchmal nicht dazu geeignet, diese Identifizieruzng durchzuführen. In solchen Fällen ist etwas Experimentierfreude bei der Zuordnung gefragt, und es kann schon ein kleiner Kampf sein, bis die Karte in allen Einzelheiten vom Treiber unterstützt wird.

Beispiel für die /etc/isapnp.conf

Am Beispiel der Creative Labs Soundblaster AWE64 soll nun eine lauffähige /etc/isapnp.conf vorgeführt werden. Bitte beachten Sie, daß Sie diese Datei nicht ohne Weiteres in Ihr System übernehmen können. Nachträglich eingefügte Kommentare stehen hinter einem Kommentarzeichen # in eckigen Klammern : # [Dies ist ein Kommentar]

# $Id: rb_isapnp.sdb,v 1.8 1999/02/18 20:18:29 sbk Exp $
# 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 ec 00 01 04 d8 9d 00 8c 0e

# (DEBUG)
# [Durch diese drei Zeilen werden die installierten Karten identifiziert]
(READPORT 0x0203)
(ISOLATE)
(IDENTIFY *)

# [ Hier beginnt die Konfiguration der ersten im System installierten ]
# [ ISA-PnP-Karte ]
# Card 1: (serial identifier ec 00 01 04 d8 9d 00 8c 0e)
# CTL009d Serial No 66776 [checksum ec]
# Version 1.0, Vendor version 2.0
# ANSI string -->Creative SB AWE64 PnP<--
#
# Logical device id CTL0042
#
# 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 required
# Don't forget to uncomment the activate (ACT Y) when happy

# [ Der Beginn der Konfiguration des 1. log. Geraets der 1. ISA-PnP-Karte ]
(CONFIGURE CTL009d/66776 (LD 0
#     ANSI string -->Audio<--

# Multiple choice time, choose one only !
# [ Es werden nun verschiedene Konfigurationsmöglichkeiten für das LD 0 angeboten]
# [ Jede Konfigurationsmöglichkeit ist durch eine Leerzeile von der nachfolgenden ]
# [ getrennt. Sie dürfen für jedes logische Gerät nur eine der alternativen ]
# [ Möglichkeiten auswählen ! ]

# [ 1. Konfigurationsmöglichkeit für das 1. logische Gertät der 1. ISA-PnP-Karte ]
#     Start dependent functions: priority preferred
#       IRQ 5.
#             High true, edge sensitive interrupt (by default)
(INT 0 (IRQ 5 (MODE +E)))
#       First DMA channel 1.
#             8 bit DMA only
#             Logical device is not a bus master
#             DMA may execute in count by byte mode
#             DMA may not execute in count by word mode
#             DMA channel speed in compatible mode
(DMA 0 (CHANNEL 1))
#       Next DMA channel 5.
#             16 bit DMA only
#             Logical device is not a bus master
#             DMA may not execute in count by byte mode
#             DMA may execute in count by word mode
#             DMA channel speed in compatible mode
(DMA 1 (CHANNEL 5))
#       Logical device decodes 16 bit IO address lines
#             Minimum IO base address 0x0220
#             Maximum IO base address 0x0220
#             IO base alignment 1 bytes
#             Number of IO addresses required: 16
(IO 0 (BASE 0x0220)) 
#       Logical device decodes 16 bit IO address lines
#             Minimum IO base address 0x0330
#             Maximum IO base address 0x0330
#             IO base alignment 1 bytes
#             Number of IO addresses required: 2
(IO 1 (BASE 0x0330))
#       Logical device decodes 16 bit IO address lines
#             Minimum IO base address 0x0388
#             Maximum IO base address 0x0388
#             IO base alignment 1 bytes
#             Number of IO addresses required: 4
(IO 2 (BASE 0x0388))

# [ 2. (alternative !!) Konfigurationsmöglichkeit für das 1. logische ]
# [ Gerät der 1. ISA-PnP-Karte; Durch eine Leerzeile von der vorhergehenden ]
# [ getrennt. Da bereits der vorhergehende Block akzeptiert wurde, muß in diesem ]
# [ Block nichts getan werden ]
#       Start dependent functions: priority acceptable
#       IRQ 5, 7, 9 or 10.
#             High true, edge sensitive interrupt (by default)
# (INT 0 (IRQ 5 (MODE +E)))
#       First DMA channel 0, 1 or 3.
#             8 bit DMA only
#             Logical device is not a bus master
#             DMA may execute in count by byte mode
#             DMA may not execute in count by word mode
#             DMA channel speed in compatible mode
# (DMA 0 (CHANNEL 0))
#       Next DMA channel 5, 6 or 7.
#             16 bit DMA only
#             Logical device is not a bus master
#             DMA may not execute in count by byte mode
#             DMA may execute in count by word mode
#             DMA channel speed in compatible mode
# (DMA 1 (CHANNEL 5))
#       Logical device decodes 16 bit IO address lines
#             Minimum IO base address 0x0220
#             Maximum IO base address 0x0280
#             IO base alignment 32 bytes
#             Number of IO addresses required: 16
# (IO 0 (BASE 0x0220))
#       Logical device decodes 16 bit IO address lines
#             Minimum IO base address 0x0300
#             Maximum IO base address 0x0330
#             IO base alignment 48 bytes
#             Number of IO addresses required: 2
# (IO 1 (BASE 0x0300))
#       Logical device decodes 16 bit IO address lines
#             Minimum IO base address 0x0388
#             Maximum IO base address 0x0388
#             IO base alignment 1 bytes
#             Number of IO addresses required: 4
# (IO 2 (BASE 0x0388))

#       Start dependent functions: priority acceptable
#       IRQ 5, 7, 9 or 10.
# [...]
# [ Weitere Konfigurationsmöglichkeiten für dieses LD gelöscht ]

#     End dependent functions
# [Vor (ACT Y) darf kein Kommentarzeichen mehr stehen, sonst wird das LD]
# [nicht initialisiert]
(ACT Y)
))
#
# Logical device id CTL7002
#
# 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 required
# Don't forget to uncomment the activate (ACT Y) when happy

# [ Der Beginn der Konfiguration des 2. log. Geraets der 1. ISA-PnP-Karte ]
(CONFIGURE CTL009d/66776 (LD 1
#     Compatible device id PNPb02f
#     ANSI string -->Game<--

# Multiple choice time, choose one only !

# [ 1. Konfigurationsmöglichkeit für das 2. logische Gertät der 1. ISA-PnP-Karte ]
#     Start dependent functions: priority preferred
#       Logical device decodes 16 bit IO address lines
#             Minimum IO base address 0x0200
#             Maximum IO base address 0x0200
#             IO base alignment 1 bytes
#             Number of IO addresses required: 8
(IO 0 (BASE 0x0200))

# [ 2. Konfigurationsmöglichkeit für das 2. logische Gertät der 1. ISA-PnP-Karte ]
#       Start dependent functions: priority acceptable
#       Logical device decodes 16 bit IO address lines
#             Minimum IO base address 0x0200
#             Maximum IO base address 0x0208
#             IO base alignment 8 bytes
#             Number of IO addresses required: 8
# (IO 0 (BASE 0x0200))

#     End dependent functions
(ACT Y)
))
#
# Logical device id CTL0022
#
# 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 required
# Don't forget to uncomment the activate (ACT Y) when happy

# [ Der Beginn der Konfiguration des 3. log. Geraets der 1. ISA-PnP-Karte ]
(CONFIGURE CTL009d/66776 (LD 2
#     ANSI string -->WaveTable<--

# Multiple choice time, choose one only !

# [ 1. Konfigurationsmöglichkeit für das 3. logische Gertät der 1. ISA-PnP-Karte ]
#     Start dependent functions: priority preferred
#       Logical device decodes 16 bit IO address lines
#             Minimum IO base address 0x0620
#             Maximum IO base address 0x0620
#             IO base alignment 1 bytes
#             Number of IO addresses required: 4
(IO 0 (BASE 0x0620))
(IO 1 (BASE 0x0a20))
(IO 2 (BASE 0x0e20)) 

# [...]
# [ Weitere Konfigurationsmöglichkeiten für dieses LD gelöscht ]

#     End dependent functions
(ACT Y)
))

#
# Logical device id CTL2011
#
# 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 required
# Don't forget to uncomment the activate (ACT Y) when happy
# [ Der Beginn der Konfiguration des 4. log. Geraets der 1. ISA-PnP-Karte ]

(CONFIGURE CTL009d/66776 (LD 3
#     Compatible device id PNP0600
#     ANSI string -->IDE<--

# Multiple choice time, choose one only !

# [ 1. Konfigurationsmöglichkeit für das 4. logische Gertät der 1. ISA-PnP-Karte ]
#     Start dependent functions: priority preferred
#       IRQ 10.
#             High true, edge sensitive interrupt (by default)
(INT 0 (IRQ 10 (MODE +E)))
#       Logical device decodes 16 bit IO address lines
#             Minimum IO base address 0x0168
#             Maximum IO base address 0x0168
#             IO base alignment 1 bytes
#             Number of IO addresses required: 8
(IO 0 (BASE 0x0168))
#       Logical device decodes 16 bit IO address lines
#             Minimum IO base address 0x036e
#             Maximum IO base address 0x036e
#             IO base alignment 1 bytes
#             Number of IO addresses required: 2
(IO 1 (BASE 0x036e))

# [ 2. Konfigurationsmöglichkeit für das 4. logische Gertät der 1. ISA-PnP-Karte ]
#       Start dependent functions: priority acceptable
#       IRQ 11.
#             High true, edge sensitive interrupt (by default)
# (INT 0 (IRQ 11 (MODE +E)))
#       Logical device decodes 16 bit IO address lines
#             Minimum IO base address 0x01e8
#             Maximum IO base address 0x01e8
#             IO base alignment 1 bytes
#             Number of IO addresses required: 8
# (IO 0 (BASE 0x01e8))
#       Logical device decodes 16 bit IO address lines
#             Minimum IO base address 0x03ee
#             Maximum IO base address 0x03ee
#             IO base alignment 1 bytes
#             Number of IO addresses required: 2
# (IO 1 (BASE 0x03ee))

#       Start dependent functions: priority acceptable
#       IRQ 10, 11, 12 or 15.
# [...]
# [ Weitere Konfigurationsmöglichkeiten für dieses LD gelöscht ]

#     End dependent functions
(ACT Y)
))
# End tag... Checksum 0x00 (OK)

# Returns all cards to the "Wait for Key" state
(WAITFORKEY)

Fehlerbehebung :

---

Siehe auch:

---

Stichwörter: ISAPNP, PLUG, PLAY, SOUND

---

Kategorien: Hardware , Hardware , Sound

---

Übersicht ---- Stichwortsuche ---- History ---- Versionen ---- Kategorien ---- Alle Artikel
English
---

SDB-rb_isapnp, Copyright SuSE GmbH, Nuremberg, Germany - Version: 02. Jun 1998
Impressum - Zuletzt generiert: 24. Feb 1999 12:47:48 by maddin with sdb_gen 1.00.0