Inhalt

4. Installation

Die Konfiguration der Soundunterstützung von Linux läuft in folgenden Schritten ab:

  1. Installation der Soundkarte
  2. Konfiguration und Compilierung des Kernels für Soundunterstützung
  3. Erstellung der Devicedateien
  4. Booten von Linux und Test der Installation

Die nächsten Abschnitte behandeln jeden dieser Schritte detailiert.

4.1 Installation der Soundkarte

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.

4.2 Konfiguration des Kernels

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.

Old configuration exists in /etc/soundconf. Use it [Y/n/?]

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.

ProAudioSpectrum 16 support [Y/n/?]

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.

SoundBlaster support [Y/n/?]

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.

Gravis Ultrasound support [Y/n/?]

Man antworte mit "y", wenn man eine GUS oder GUS MAX hat. Ansonsten unbedingt "n" antworten, die dieser Treiber viel Speicher verbraucht.

MPU-401 support (NOT for SB16) [Y/n/?]

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.

6850 UART Midi support [Y/n/?]

Es ist sicher, immer mit "n" zu antworten. Die 6850 UART-Schnittstelle wird sehr selten verwendet.

PSS (ECHO-ADI2111) support [Y/n/?]

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.

16 bit sampling option of GUS (not GUS MAX) [Y/n/?]

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.

GUS MAX support [Y/n/?]

Nur wenn man eine GUS MAX besitzt, sollte man mit "y" antworten.

Microsoft Sound System support [Y/n/?]

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.

Ensoniq Soundscape support [Y/n/?]

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.

MediaTriX AudioTriX Pro support [Y/n/?]

Man antworte mit "y", wenn man die AudioTriX Pro hat.

Support for MAD16 and/or Mozart based cards?

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

Support for Crystal CS4232 based (PnP) cards [Y/n/?]

Wenn man eine Karte mit dem Crystal CS4232-Chipsatz hat, sollte man hier mit "y" antworten.

Support for Turtle Beach Wave Front (Maui, Tropez) synthesizers [Y/n/?]

Hat man eine dieser Karten, so antworte man mit "y".

SoundBlaster Pro support [Y/n/?]

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.

SoundBlaster 16 support [Y/n/?]

Diese Option sollte man aktivieren, wenn man einen SoundBlaster 16 (auch AWE32) besitzt.

Audio Excel DSP 16 initialization support [Y/n/?]

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.

/dev/dsp and /dev/audio support (usually required) [Y/n/?]

"n" deaktiviert /dev/dsp und /dev/audio, die Devices zur A/D- und D/A-Wandlung.

MIDI interface support [Y/n/?]

"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.

FM synthesizer (YM3812/OPL-3) support [Y/n/?]

Hier sollte mit "y" geantwortet werden.

/dev/sequencer support [Y/n/?]

"n" deaktiviert /dev/sequencer und /dev/music.

Do you want support for the mixer of SG NX Pro ?

Hier antworte man mit "y", wenn man eine Sound Galaxy NX Pro besitzt und Unterstützung für ihre erweiterten Mixerfunktionen will.

Do you want support for the MV Jazz16 (ProSonic etc.) ?

Man antworte mit "y", wen man eine MV Jazz16 Soundkarte besitzt.

Do you have a Logitech SoundMan Games [Y/n/?]

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.

4.3 Erstellung der Devicedateien

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.

4.4 Booten von Linux und Testen der Installation

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.

4.5 Fehlerbehebung

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.

Schritt 1: Überprüfen, ob wirklich der compilierte Kernel verwendet 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?

Schritt 2: Überprüfen, ob die Soundtreiber eincompiliert wurden

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.

Schritt 3: Hat der Kernel die Soundkarte beim Booten erkannt?

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.

Schritt 4: Kann man Daten vom dsp-Device lesen?

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 alles andere fehlschlägt

Wenn immer noch Probleme vorliegen, sind hier einige letzte Ratschläge:


Inhalt