25.2 Audio
Das erste praktische Multimedia-Thema, dem wir uns widmen wollen, ist das Thema »Audio«. Beginnen wollen wir mit der Konfiguration der Soundkarte. Um die Unterstützung des Kernels für diese Ressource zu aktivieren, muss man wissen, wie die Sound-Unterstützung des Kernels aussieht. [Fn. Bevor Sie weiterlesen: Testen Sie einfach einmal, ob Ihre Soundkarte nach der Installation nicht schon automatisch erkannt wurde. Auch wenn Sie keinen Ton hören, reicht es vielleicht aus, einfach die Lautstärkeregler aufzudrehen.]
25.2.1 Bis Kernel 2.6 – OSS
Open-Sound- System
Die Kernel der 2.4er-Entwicklungsreihe waren die letzten, die standardmäßig mit OSS, dem Open-Sound-System, als Unterstützung für Soundkarten ausgeliefert wurden; einige solcher Systeme sind nach wie vor im Einsatz. Man unterscheidet dabei zwischen der OSS-API, einem Interface zu Audiotreibern, das neben Linux auch noch von vielen anderen Unix-Varianten unterstützt wird, und den OSS-Treibern, die eben dieses Interface für den Kernel implementieren.
Der Grund, warum OSS heutzutage [Fn. Kernel 2.6!] immer noch ein Thema ist, besteht in der weiten Verbreitung der OSS-API. Diese wird beispielsweise auch von den FreeBSD- und OpenBSD-Soundtreibern unterstützt. OSS bildet damit den kleinsten gemeinsamen Nenner der Unix-Sound-APIs.
Treiber laden
[zB]Die Vorbereitungen bei der Kernel-Konfiguration sehen bei OSS so aus, dass zuerst die entsprechenden Treibermodule für den Kernel kompiliert werden müssen. Die Unterstützung für eine Karte wird dann durch Laden der entsprechenden Kernel-Module aktiviert. Nach einem Laden mit modprobe sieht man dann meist eine Ausgabe wie die folgende:
Listing 25.1 OSS im Kernel
# lsmod
...
es1370 30348 1
gameport 1388 0 [es1370]
soundcore 3428 4 [es1370]
...
In diesem Beispiel wurde eine Ensoniq-1370-kompatible Soundkarte benutzt, deren Modul noch das soundcore-Modul als Basis sowie die Gameport-Unterstützung nachgeladen hat.
Ist der Treiber erfolgreich geladen, wird das entsprechende Device /dev/dsp aktiviert. Wurde aber der falsche Treiber geladen, schlägt dies fehl und eine entsprechende Meldung wird ausgegeben:
Listing 25.2 Ein Treiber für die falsche Karte wird geladen.
# modprobe i810_audio
/lib/modules/2.4.22/kernel/drivers/sound/i810_audio.o:
init_module: No such device
...
Man kann auf diese Weise also auch eine einfache Form der Hardwareerkennung durchführen: einfach so lange alle Treibermodule laden, bis kein Fehler mehr auftritt. Eine Alternative zu dieser brutalen Methode bietet das Programm lspci:
Listing 25.3 Die gefundenen PCI-Karten
$ lspci
...
0000:00:06.0 Ethernet controller: Accton Technology
Corporation SMC2-1211TX (rev 10)
...
0000:00:11.5 Multimedia audio controller: VIA
Technologies, Inc. VT8233/A/8235/8237 AC97 Audio
Controller (rev 10)
0000:01:00.0 VGA compatible controller: nVidia
Corporation NV17 [GeForce4 MX 440] (rev a3)
Aus diesem Output kann man schon einen relativ guten Anhaltspunkt dafür gewinnen, welche Treiber benötigt werden. Eine Alternative bieten automatische Tools wie sndconfig (siehe Abbildung 25.1).
Alles automatisch
Dieses Tool stammt ursprünglich aus der Red-Hat-Distribution, ist aber mittlerweile auch für andere Distributionen wie Debian verfügbar.
Test der Konfiguration
Eine hübsche Spielerei zum Testen einer funktionierenden Soundinstallation ist die sogenannte voice of god:
Listing 25.4 voice of God
# cat /vmlinuz >/dev/dsp
Bei diesem Beispiel leiten wir einfach die binären Daten des Kernels per Ausgabeumleitung auf die Soundkarte – wenn Sie nun ein lautes Rauschen hören, funktioniert Ihre Soundkarte, – und Sie wissen, wie sich der Kernel anhört.
Abbildung 25.1 sndconfig
25.2.2 Ab Kernel 2.6 – ALSA
ALSA steht für Advanced Linux Sound Architecture, ist seit Kernel 2.6.0 standardmäßig enthalten und hat damit das Open-Sound-System ersetzt. ALSA bietet folgende Vorteile:
- guter Support für alle Arten von Audioschnittstellen wie normale Soundkarten oder professionelle Multichannel-Soundkarten
- modularisierte Soundtreiber
- ein multiprozessor- und threadsicheres Design
- eine Userspace-Bibliothek (alsa-lib), die die Anwendungsentwicklung vereinfacht und eine höhere Funktionalität bietet
- Unterstützung für das alte OSS-Interface zwecks Kompatibilität mit den meisten OSS-Programmen
Darüber hinaus klingen ALSA-Treiber oft auch besser als ihre entsprechenden OSS-Varianten.
Die Konfiguration von ALSA läuft dabei gar nicht so anders als die von OSS ab. Sie müssen auch hier die entsprechenden Module samt Parametern laden. Damit man sie von ihren entsprechenden OSS-Äquivalenten unterscheiden kann, haben alle ALSA-Module das Präfix snd- vor ihrem Namen.
Listing 25.5 ALSA im Kernel
# lsmod
Module Size Used by
...
snd_via82xx 25184 3
snd_seq_oss 34560 0
snd_seq_midi_event 7936 1 snd_seq_oss
...
snd 52516 17 ...
Ausführliche Hilfen
Die Module per Hand zu laden, ist recht umständlich. Bei den meisten Distributionen wird die entsprechende Hardware jedoch bereits bei der Installation erkannt und eingebunden. In jedem Fall hilft die Webseite des Projekts, http://www.alsa-project.org, bei Problemen weiter. Dort erfahren Sie, ob Ihre Karte unterstützt wird, und Sie finden zudem im Problemfall noch Installationshinweise speziell für Ihre Hardware und Distribution.
Ihr Kommentar
Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.