Plug and Play ist eine feine Sache... Dem Slogan Karte einbauen, Computer starten, fertig glauben ohnehin nur noch die größten Optimisten. Auch wenn für Otto Normalverbraucher mit seiner einen Plug-and-Play-Karte tatsächlich der Administrationsaufwand schwindet, erweist sich die vom BIOS vorgenommene Initialisierung schnell als Falle, wenn sich in einem Rechner gleich mehrere solcher Karten um die Zuweisung der wenigen freien Interrupts und Adressen bewerben. Während für Windows, DOS und Co. die Treiber für solche Karten noch mitgeliefert werden, müssen dieselben von Freaks in ihrer Freizeit erst noch für Linux entwickelt werden. Und während der Hersteller einer Karte noch weiß (wissen sollte), für welche Adressen und Interrupts er seine Treiber zurechtbastelt, beschränken sich die Linux-Treiber meist nur auf ausgewählte ("die normalen") Bereiche. Weist das BIOS einer Karte jetzt Ressourcen zu, die der Treiber nicht vorsieht, wird dieser die Hardware nicht entdecken...
Nun bleiben einem als Linux-Guru drei Offerten übrig:
Anhand der Installation einer Vibra 16 PnP Karte sollen die Schritte zur Einbindung demonstriert werden.
Die verwendeten Interrupts bereits benutzter (!) Geräte erfährt man mittels
user@sonne> cat /proc/interrupts
|
Vorsicht: Wurde z.B. der Drucker noch nicht angesprochen, wird der von ihm verwendete Interrupt nicht erscheinen.
Die Belegung der I/O-Ports vermittelt
user@sonne> cat /proc/ioports
|
Die Konfigurationsdatei /etc/isapnp.conf ist zu erzeugen:
root@sonne> pnpdump >/etc/isapnp.conf
|
pnpdump testet die Hardware und schreibt alle ermittelten Daten in die Datei. Diese muss nun bearbeitet werden und die Zeilen, die mit den Einstellungen im Modul korrespondieren, sind zu entkommentieren. Für eine Vibra16 PnP mit den Einstellungen IRQ=5, DMA 0 auf Kanal 1, DMA 1 auf Kanal 5, IO-Port 0x0220 sieht der entsprechende Ausschnitt wie folgt aus:
# ***** GEKUERZTE DATEI ****
|
Die Karte muss nun initialisiert und das Modul geladen werden:
root@sonne> isapnp /etc/isapnp.conf
|
Test: Ob die Karte korrekt erkannt wurde, verrät z.B. der belegte Interrupt (Alternativ zeigt lsmod, ob das Modul geladen wurde):
user@sonne> cat /proc/interrupts
|
Ist der Interrupt nicht aufgeführt, stimmt vermutlich die Ressourcenzuteilung
im Modul und/oder im Konfigurationsfile nicht.
Die obige Beschreibung gleicht eher einer komplizierten Bastelanleitung...
Speziell zur Administration von Plug&Play-Soundkarten hat RedHat ein Frontend geschaffen, das automatisch die
korrekten Einstellungen in der Datei /etc/isapnp.conf
vornimmt.
Den auf RedHat basierenden Distributionen liegt das Tool sndconfig
ohnehin bei; wer eine andere
Distribution verwendet, kann sich die Sourcen von einem der zahlreichen FTP-Server besorgen und das Programm
übersetzen.
Nach dem Start des Programmes versucht sndconfig
die Soundkarte automatisch zu erkennen. Ist die
Suche erfolgreich, werden kurze Klangdateien abgespielt und die Konfiguration getestet.
Scheitern obige Versuche, fordert das Tool zur Angabe der im System befindlichen Soundkarte auf.
Mit "OK" gelangt man in einen Dialog, der zur Angabe der Parameter Interrupts, DMA-Kanäle und IO-Ports auffordert. Die voreingestellten Werte entsprechen den Standardwerten des jeweiligen Kartentyps.
Mit "OK" werden die Einstellungen übernommen und die Konfiguration wiederum anhand von Klangbeispielen verifiziert. Geht etwas schief, deutet die Ausschrift meist auf das Problem hin, z.B. dass der Interrupt von einem anderen Gerät benutzt wird. Hier hilft nur, die Einstellungen durchzuprobieren, bis eine Konstellation konfliktfrei funktioniert. Viele Soundkartenchips lassen sich als unterschiedliche Typen konfigurieren (z.B. als Sb16 und/oder WSS), somit ist der Test eines anderen Kartentyps ein weiterer Versuch, seinem System die Töne beizubringen.