Die Konfiguration der Soundunterstützung von Linux läuft in folgenden Schritten ab:
Die nächsten Abschnitte behandeln jeden dieser Schritte detailiert.
Man folge der Anleitung der Soundkarte oder lasse sie vom Händler einbauen.
Ältere Soundkarten besitzen üblicherweise Schalter oder Jumper, um IRQ, DMA-Kanal u.ä. einzustellen; man merke sich die verwendeten Einstellungen. Im Zweifelsfall sollten die Standardeinstellungen verwendet werden. Dabei sind Konflikte mit anderen Karten (z.B. Ethernetkarten, SCSI-Controller, serielle und parallele Schnittstellen) zu vermeiden.
Bei der ersten Installation von Linux wurde vermutlich ein vorcompilierter Kernel verwendet. Diese Kernel bieten normalerweise keine Soundunterstützung. Am besten compiliert man den Kernel selbst mit den benötigten Treibern neu. Es bietet sich auch an, den Kernel neu zu compilieren, wenn man auf eine neuere Version umsteigen will oder Speicher sparen will, indem die Größe des Kernels verringert wird.
Die Linux Kernel HOWTO liefert genauere Informationen, wie ein Kernel compiliert wird. Hier werden nur einige Punkte, die spezifisch für Soundkarten sind, erwähnt.
Wer noch nie einen Kernel mit Soundunterstützung compiliert hat, sollte
alle Readme-Dateien für die Kernel-Soundtreiber lesen, besonders
Informationen für die jeweilige Soundkarte. Die folgenden Dokumentationen
befinden sich im Verzeichnis der Kernel-Soundtreiber, meistens in
/usr/src/linux/drivers/sound
:
CHANGELOG - Beschreibung der Änderungen in jedem Release COPYING - Kopier- und Copyright-Einschränkungen Readme - aktuellste und wichtigste Neuigkeiten Readme.aedsp16 - Informationen über die Audio Excel DSP 16 Soundkarte Readme.cards - Hinweise für spezielle Soundkarten Readme.linux - Hinweise zur Installation separater Soundtreiber Readme.v30 - Neue Fähigkeiten des Soundtreibers Version 3.0 experimental.txt - Hinweise auf experimentelle Fähigkeiten
Nun folge man den üblichen Vorgehensweisen, um den Kernel zu compilieren.
Momentan gibt es drei Möglichkeiten der Konfiguration.
"make xconfig"
liefert eine grafische Benutzerschnittstelle unter
X11, ein Menüsystem im Textmodus ergibt "make menuconfig"
. Im
weiteren wird von der traditionellen Kommandozeilen-Konfiguration mit
"make config"
ausgegangen, der Prozeß ist aber in jedem Fall
gleich.
Es ist auch möglich, den Soundtreiber als ein ladbares Modul zu bauen. Es wird empfohlen, zuerst den Treiber fest in den Kernel zu compilieren. Sobald alles funktioniert kann er als Modul verwendet werden.
Wenn man make config
aufruft, wird die Soundunterstützung
aktiviert, indem mit "y"
auf die Frage
Sound card support (CONFIG_SOUND) [M/n/y/?]
geantwortet wird.
Am Ende der Konfigurationsfragen wird ein Soundkonfigurationsprogramm compiliert und ausgeführt, das dann nach den Soundoptionen fragt. Bei der Beantwortung dieser Fragen sollte man sehr vorsichtig sein, denn eine falsch beantwortete Frage kann dazu führen, daß spätere Fragen nicht gestellt werden. Zum Beispiel darf man nicht mit "y" auf die erste Frage (PAS16) antworten, wenn man keine PAS16 besitzt. Man sollte auch nicht mehr Treiber aktivieren, als man wirklich braucht, sie verschwenden nur Speicher. Außerdem können einige Treiber (wie MPU401) einen Konflikt mit dem SCSI-Controller verursachen, der das Booten des Kernels verhindern kann.
Im folgenden findet sich eine kurze Beschreibung jeder Dialogoption.
Man beantworte jede Frage mit "y"
(ja) oder "n"
(nein).
Die Standardvorgabe ist groß markiert, d.h. "[Y/n/?]"
bedeutet "y" als Standard und umgekehrt "[N/y/?]"
"n".
Um die Standardwerte zu verwenden, reicht es, einfach Enter zu drücken,
aber diese sind nicht unbedingt korrekt.
Die Eingabe von "?"
liefert eine kurze Beschreibung der Option.
Man beachte, daß evtl. nicht alle Fragen gestellt werden. Abhängig von früheren Einstellungen kann das Konfigurationsprogramm einige Fragen überspringen oder auch einige Einstellungen automatisch wählen.
Wenn man den Kernel schon einmal mit Soundunterstützung compiliert
hat, kann die vorherige Konfiguration gesichert werden. Wenn man
diese verwenden will, antworte man mit "y
. Will man eine
andere Konfiguration ausprobieren oder auf einen neuen Kernel
umgestiegen ist, sollte man "n"
antworten und den
Konfigurationsprozeß durchlaufen.
Man antworte "y"
nur dann, wenn man wirklich eine Pro
Audio Spectrum 16, ProAudio Studio 16 oder Logitech SoundMan
16 besitzt. Man darf nicht mit "y"
antworten, wenn man eine
andere Karte von Media Vision oder Logitech besitzt, denn diese
sind nicht PAS16-kompatible.
Wenn man eine original Soundblaster-Karte von Creative Labs oder
einen 100% hardwarekompatiblen Klon (wie die Thunderboard oder
SM Games) besitzt, sollte man hier "y"
antworten. Wenn die
Karte in der Liste der unterstützten Karten steht, sehe man in
die Readme.cards
, bevor man diese Frage beantwortet. Eine
unbekannte Karte könnte mit "y" funktionieren, wenn sie
SoundBlaster-kompatibel sein soll.
Man antworte mit "y"
, wenn man eine GUS oder GUS MAX hat.
Ansonsten unbedingt "n"
antworten, die dieser Treiber viel
Speicher verbraucht.
Mit dieser Frage muß man sehr vorsichtig sein. Die MPU-401
Schnittstelle wird von fast allen Soundkarten unterstützt.
Allerdings haben einige direkt unterstützte Soundkarten ihren
eigenen Treiber für MPU-401. Wenn man bei diese Karten die MPU-401
Unterstützung aktiviert, erzeugt man einen Konflikt.
Es kann auch Probleme bringen, wenn man MPU-401 aktiviert, obwohl
man überhaupt keine MPU-401 Schnittstelle im System hat. Wenn die
Karte in der Liste der unterstützten Karten steht, liefert
Readme.cards
weitere Informationen. Es gibt keine Probleme,
mit "y"
zu antworten, wenn man eine wirkliche MPU-401 MIDI
Schnittstellenkarte hat.
Es ist sicher, immer mit "n"
zu antworten. Die 6850
UART-Schnittstelle wird sehr selten verwendet.
Man antworte "y"
nur dann, wenn man eine Orchid SW32,
Cardinal DSP16 oder eine andere Karte besitzt, die auf dem
PSS-Chipsatz (AD1848 codec + ADSP-2115 DSP Chip + Echo ESC614
ASIC CHIP) basiert.
Hier sollte man mit "y"
antworten, wenn man die
16bit-Sampling-Tochterkarte für die GUS hat. Besitzt man eine GUS
MAX, antworte man mit "n"
, diese Option deaktiviert die GUS
MAX-Unterstützung.
Nur wenn man eine GUS MAX besitzt, sollte man mit "y"
antworten.
Man sollte wieder gründlich nachdenken, bevor man "y"
antwortet. Es ist sicher, mit "y"
zu antworten, wenn man
die original Microsoft Windows Sound System-Karte oder die
Aztech SG 16 Pro (oder NX16 Pro) verwendet. Man kann auch mit
"y"
antworten, wenn die Karte nicht weiter oben in dieser
Datei aufgeführt wurde. Für Karten, die VoxWare-Unterstützung
besitzen, lese man die Readme.cards
. Einige Treiber
haben ihre eigene MSS-Unterstützung, es gibt einen Konflikt,
wenn man dann diese Option aktiviert.
Man antworte mit "y"
, wenn man eine Soundkarte, die auf dem
Ensoniq SoundScape-Chipsatz basiert. Solche Karten werden zumindest
von Ensoniq, Spea und Reveal (Reveal stellt auch andere Karten
her) hergestellt.
Man antworte mit "y"
, wenn man die AudioTriX Pro hat.
Man antworte mit "y"
, wenn die Karte einen Mozart (OAK
OTI-601) oder MAD16 (OPTi 82C928 oder 82C929) Audiointerfacechip
besitzt. Diese Karten sind momentan ziemlich häufig, so daß viele
NoName-Karten einen dieser Chips haben. Außerdem wird der
MAD16-Chip in einigen Karten von bekannten Herstellern verwendet,
wie Turtle Beach (Tropez), Reveal (einige Modelle) und Diamond
(die aktuellsten).
Wenn man eine Karte mit dem Crystal CS4232-Chipsatz hat, sollte
man hier mit "y"
antworten.
Hat man eine dieser Karten, so antworte man mit "y"
.
Man aktiviere diese Option, wenn man eine SoundBlaster Pro oder
SoundBlaster 16 oder einen SoundBlaster Pro-Klon besitzt. "n"
spart etwas Speicher, aber "y"
ist die sichere Alternative.
Diese Option sollte man aktivieren, wenn man einen SoundBlaster 16 (auch AWE32) besitzt.
Man aktiviere dies, wenn man eine Audio Excel DSP16-Karte besitzt.
Siehe Readme.aedsp16
.
Das Konfigurationsprogramm stellt dann einige Fragen über Dienste auf
einer höheren Stufe. Es wird empfohlen, auf jede dieser Fragen mit
"y"
zu antworten.
"n"
deaktiviert /dev/dsp
und /dev/audio
, die
Devices zur A/D- und D/A-Wandlung.
"n"
deaktiviert die /dev/midixx
Devices und den
Zugriff auf alle MIDI-Ports mit /dev/sequencer
und
/dev/music
. Diese Option betrifft auch alle MPU401-
und/oder General MIDI-kompatiblen Devices.
Hier sollte mit "y"
geantwortet werden.
"n"
deaktiviert /dev/sequencer
und
/dev/music
.
Hier antworte man mit "y"
, wenn man eine Sound Galaxy NX Pro
besitzt und Unterstützung für ihre erweiterten Mixerfunktionen
will.
Man antworte mit "y"
, wen man eine MV Jazz16 Soundkarte
besitzt.
Man antworte mit "y"
, wenn man eine Logitech SoundMan Games
Soundkarte besitzt.
Nach diesen Fragen fragt das Konfigurationsprogramm nach den
kartenspezifischen Konfigurationsinformationen. Üblicherweise wird nur
nach I/O-Adresse, IRQ und DMA gefragt. Bei einigen Karten fragt das
Programm nach Dateien, die während der Initialisierung der Karte
verwendet werden. Diese werden von Karten verwendet, die einen DSP-Chip
oder Mikroprozessor haben, der initialisiert werden muß, indem ein
Programm (Microcode) in die Karte geladen wird. In einigen Fällen wird
dieses Programm vom Konfigurationsprogramm in eine .h-Datei geschrieben
und während der Compilierung in den Treiber eingefügt. Wiederum stehen
weitere Informationen in der Datei Readme.cards
.
Am Ende wird gefragt:
The sound driver is now configured.
Save copy of this configuration to /etc/soundconf [Y/n/?]
Normalerweise wird hier "y"
geantwortet, so daß man beim späteren
neuen Compilieren die gleiche Konfiguration verwendet werden kann.
Wenn man von einem älteren Soundtreiber aufsteigt, muß man darauf achten,
daß die Dateien /usr/include/sys/soundcard.h
und
/usr/include/sys/ultrasound.h
symbolische Links auf die
entsprechenden Dateien in /usr/include/linux
sind, oder
daß sie nur die Zeilen #include <linux/soundcard.h>
beziehungsweise #include <linux/ultrasound.h>
enthalten.
Jetzt ist alles zum Compilieren und Installieren des Kernels bereit.
Wenn der Kernelsoundtreiber zum ersten mal konfiguriert wird, müssen
noch die Sound-Devicedateien erstellt werden. Am einfachsten geschieht
dies, indem das kurze Shellscript am Ende von Readme.linux
in das
Verzeichnis /usr/src/linux/drivers/sound
ausgeschnitten wird
und als root
ausgeführt wird.
Wenn die Deviceeinträge schon existieren, kann das Script trotzdem ausgeführt werden, wenn man nicht sicher ist, daß sie korrekt sind.
Einige ältere Linux-Distributionen installieren Scripte, die falsche
Sound-Devicedateien erstellen. Es kann auch ein Script /dev/MAKEDEV
existieren, um Devicedateien zu erstellen. Es ist vorteilhafter,
das Script aus dem Kernel-Soundtreiber zu verwenden, da es immer
aktuell ist.
Nach der Ausführung des Scripts sollten die Sound-Devicedateien in etwa so aussehen:
lrwxrwxrwx 1 root 11 Aug 22 00:01 audio -> /dev/audio0 crw-rw-rw- 1 root 14, 4 Aug 22 00:01 audio0 crw-rw-rw- 1 root 14, 20 Aug 22 00:01 audio1 lrwxrwxrwx 1 root 9 Aug 22 00:01 dsp -> /dev/dsp0 crw-rw-rw- 1 root 14, 3 Aug 22 00:01 dsp0 crw-rw-rw- 1 root 14, 19 Aug 22 00:01 dsp1 crw-rw-rw- 1 root 14, 2 Aug 22 00:01 midi00 crw-rw-rw- 1 root 14, 18 Aug 22 00:01 midi01 crw-rw-rw- 1 root 14, 34 Aug 22 00:01 midi02 crw-rw-rw- 1 root 14, 50 Aug 22 00:01 midi03 crw-rw-rw- 1 root 14, 0 Aug 22 00:01 mixer crw-rw-rw- 1 root 14, 16 Aug 22 00:01 mixer1 crw-rw-rw- 1 root 14, 8 Aug 22 00:01 music crw-rw-rw- 1 root 14, 17 Aug 22 00:01 patmgr0 crw-rw-rw- 1 root 14, 33 Aug 22 00:01 patmgr1 crw-rw-rw- 1 root 14, 1 Aug 22 00:01 sequencer lrwxrwxrwx 1 root 10 Aug 22 00:01 sequencer2 -> /dev/music crw-rw-rw- 1 root 14, 6 Aug 22 00:01 sndstat
Besondere Aufmerksamkeit sollte den Devicenamen und den "major" und "minor" Devicenummern gelten, die in der 4. und 5. Spalte aufgeführt werden.
Wer den PC-Lautsprecher-Treiber verwendet, sollte die Dokumentation in diesem Paket lesen, um zu erfahren, welche Devicedateien erstellt werden müssen.
Normalerweise sollte die Konfiguration bei der Erstellung der Kernels
für den Soundkartentreiber geeignet sein. Es ist auch möglich, über
die Kernel-Kommandozeile (z.B. mit LILO) Parameter an den den
Soundtreiber zu übergeben. Diese werden in der Datei Readme.linux
definiert. Es ist nur selten notwendig, diese zu verwenden. Sie sind
hauptsächlich dafür gedacht, einen Kernel für Bootdisketten zu erstellen,
die viele verschiedenen Soundkarten unterstützen.
Jetzt sollte alles bereit sein, um den neuen Kernel zu booten und die Soundtreiber zu testen. Man folge der üblichen Vorgehensweise, um den Kernel zu installieren und neu zu booten (man sollte den alten Kernel aufheben, falls es Probleme gibt).
Während des Bootens sollte man auf eine ähnliche Nachricht wie die
folgende achten (wenn sie zu schnell vorbei scrollen, kann man sie
auch später mit dmesg
lesen):
snd2 <SoundBlaster Pro 3.2> at 0x220 irq 5 drq 1
snd1 <Yamaha OPL-3 FM> at 0x388 irq 0 drq 0
Das sollte mit der verwendeten Soundkarte und Jumpereinstellung übereinstimmen.
Der Treiber könnte auch einige Fehler oder Warnungen anzeigen. Darauf sollte man nach beim ersten Booten achten.
Als nächsten sollte man die Datei /dev/sndstat
überprüfen.
Die Soundtreiber-Statusdatei sollte weitere Informationen darüber
liefern, ob der Treiber richtig initialisiert wurde. Die Ausgabe
sollte in etwa so aussehen:
% cat /dev/sndstat
Sound Driver:3.5.2-960330 (Tue 4 16:31:10 EDT 1996 root,
Linux fizzbin 2.0.0 #1 Mon Jun 3 16:59:37 EDT 1996 i386)
Kernel: Linux fizzbin 2.0.0 #1 Tue Jun 4 16:57:55 EDT 1996 i386
Config options: a80002
Installed drivers:
Type 1: OPL-2/OPL-3 FM
Type 2: SoundBlaster
Type 6: SoundBlaster 16bit
Type 7: SB MPU
Card config:
SoundBlaster at 0x220 irq 5 drq 1,5
OPL-2/OPL-3 FM at 0x388 irq 0 drq 0
Audio devices:
0: SoundBlaster Pro 3.2
Synth devices:
0: Yamaha OPL-3
Midi devices:
0: SoundBlaster
Timers:
0: System clock
Mixers:
0: SoundBlaster
Jetzt ist alles bereit, um eine einfache Sounddatei abzuspielen. Man suche sich eine Beispielsdatei und sende sie zum Sounddevice als grundlegenden Test der Soundausgabe, z.B.
% cat endoftheworld >/dev/dsp
% cat crash.au >/dev/audio
(Man achte darauf, daß man nicht das ">" vergißt).
Einige Beispielsdateien sind bei
tsx-11.mit.edu:/pub/linux/packages/sound/snd-data-0.1.tar.Z
erhältlich.
Jetzt kann die Aufnahme überprüft werden. Wenn man die Möglichkeit zur Aufnahme hat, kann man einen schnellen Test machen, indem man folgendes eingibt:
# 4 Sekunden Audio vom Mikrofon aufnehmen
EDT% dd bs=8k count=4 </dev/audio >sample.au
4+0 records in
4+0 records out
# Sound wieder abspielen
% cat sample.au >/dev/audio
Natürlich braucht man hierfür ein Mikrofon, das an die Soundkarte angeschlossen sein muß und man sollte in es sprechen. Evtl. braucht man auch ein Mixerprogramm, um das Mikrofon als Eingabegerät einzustellen und die Verstärkung einzustellen.
Wenn diese Tests gelingen, ist es sehr wahrscheinlich, daß die Hardware und Software funktioniert. Bei Problemen lese man den nächsten Abschnitt.
Wenn es trotz der Anleitung immer noch Probleme gibt, sind hier einige Sachen zu überprüfen. Die Punkte sind in aufsteigender Komplexität aufgeführt. Wenn ein Test fehlschlägt, ist zuerst das Problem zu lösen, bevor mit dem nächsten Punkt fortgefahren wird.
Man kann den Datumsstempel des Kernels überprüfen, um zu sehen, ob man
den mit Soundunterstützung compilierten Kernel verwendet. Dafür gibt es
den uname
-Befehl:
% uname -a
Linux fizzbin 2.0.0 #1 Tue Jun 4 16:57:55 EDT 1996 i386
Die Information steht auch in der Datei /proc/version
:
% cat /proc/version
Linux version 2.0.0 (root@fizzbin) (gcc version 2.7.0)
#1 Tue Jun 4 16:57:55 EDT 1996
Wer der Datumsstempel nicht mit der Zeit, als der Kernel compiliert
wurde, übereinstimmt, verwendet man einen alten Kernel. Wurde wirklich
neu gebootet? Wenn LILO verwendet wird, wurde es neu installiert
(üblicherweise durch /etc/lilo/install
oder
/sbin/lilo
)? Wenn von einer Floppy gebootet wird, wurde eine
neue Bootdiskette erstellt und beim Booten verwendet? Wenn mit LOADLIN
von DOS aus gebootet wird, wurde der neue Kernel in das richtige
DOS-Verzeichnis kopiert?
Man kann sehen, welche Treiber eincompiliert sind, indem man
/proc/devices
betrachtet:
% cat /proc/devices
Character devices:
1 mem
4 tty
5 cua
6 lp
14 sound
15 Joystick
Block devices:
2 fd
3 hd
25 sbpcd
Hier sollte das "character device" 14 aufgeführt sein, genannt "sound". Wenn das Sounddevice hier nicht steht, ging etwas bei der Kernelkonfiguration oder Erstellung schief. Man sollte den Installationsprozeß neu starten, mit der Konfiguration und Erstellung des Kernels beginnend.
Man überprüfe, ob die Soundkarte beim Booten des Kernels erkannt wurde.
Man sollte beim Booten eine Nachricht sehen. Wenn die Nachrichten
schon vom Bildschirm gescrollt sind, kann man sie mit dem dmesg
-
Befehl betrachten:
% dmesg
oder
% tail /var/adm/messages
Wenn die Soundkarte nicht gefunden wurde, ist etwas falsch. Als erstes sollte man überprüfen, ob sie wirklich installiert ist. Wenn die Soundkarte unter DOS funktioniert, ist es vermutlich ein Problem mit der Kernelkonfiguration. Entweder die Soundkarte wurde als falscher Typ oder mit den falschen Parametern konfiguriert oder die Soundkarte ist nicht mit einem der Soundkartentreiber kompatibel.
Eine Möglichkeit besteht darin, daß die Soundkarte eine der "kompatiblen"
ist, die durch einen DOS-Treiber initialisiert werden müssen. Man kann
versuchen, DOS zu booten und den vom Hersteller gelieferten Treiber zu
laden. Dann sollte Linux weich gebootet werden (mit Strg-Alt-Entf
).
Man achte darauf, daß die I/O-Adresse, DMA- und IRQ-Einstellungen die
gleichen für Linux wie für DOS sind. Siehe auch Readme.cards
.
Wenn die Soundkarte nicht in diesem Dokument aufgeführt ist, ist es möglich, daß die Linuxtreiber sie nicht unterstützen. Man kann einige der Referenzen am Ende dieses Dokuments nach Hilfe absuchen.
Man versuche, vom /dev/audio
-Device mittels dd
zu lesen
(siehe oben). Der Befehl sollte ohne Fehler ablaufen.
Wenn das nicht funktioniert, ist eine mögliche Fehlerursache die
Devicedatei. Die Devicedateien im /dev
-Verzeichnis müssen
die richtigen major und minor Nummern haben (wie weiter oben
aufgeführt). Die Permissions müssen Lesen und Schreiben erlauben.
Eine seltene Fehlerursache ist ein Hardware-Problem. Wenn möglich, sollte die Karte unter DOS getestet werden.
Wenn immer noch Probleme vorliegen, sind hier einige letzte Ratschläge:
de.comp.os.linux.*
oder andere Usenet-Newsgroup
oder in das Fidoecho LINUX.GER
posten.Esc-x doctor
eingeben