20.2 Audio
Das erste praktische Multimedia-Thema, dem wir uns widmen wollen, ist das Thema »Audio«. Beginnen wollen wir dabei selbstverständlich mit der Konfiguration der Soundkarte. Um die Unterstützung des Kernels für diese Ressource zu aktivieren, muss man wissen, wie die Soundunterstützung des Kernels aussieht. <Bevor Sie weiterlesen: Probieren Sie einfach mal, ob Ihre Soundkarte nach der Installation nicht schon automatisch erkannt wurde. Eventuell müssen Sie erst die Lautstärkeregler aufdrehen.>
20.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. 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 <Kernel 2.6!> immer noch ein Thema ist, besteht in der weiten Verbreitung dieser API.
Treiber laden
Die Vorbereitungen bei der Kernel-Konfiguration sahen dann so aus, dass zuerst die entsprechenden Treibermodule mit dem Kernel kompiliert werden mussten. Die Unterstützung für eine Karte wurde dann durch das Laden der entsprechenden Kernel-Module aktiviert. Nach einem Laden mit modprobe sah man dann meist so etwas:
# lsmod … es1370 30348 1 gameport 1388 0 [es1370] soundcore 3428 4 [es1370] …
Listing 20.1 OSS im Kernel
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.
Wenn der Treiber erfolgreich geladen wurde, wurde das entsprechende Device /dev/dsp aktiviert. Wurde aber der falsche Treiber geladen, schlug dies fehl und eine entsprechende Meldung wurde ausgegeben:
# modprobe i810_audio /lib/modules/2.4.22/kernel/drivers/sound/i810_audio.o: init_module: No such device …
Listing 20.2 Ein Treiber für die falsche Karte wird geladen.
Man konnte so also auch eine einfache Art der Hardwareerkennung durchführen: einfach so lange alle Treibermodule laden, bis es mal keinen Fehler gibt. Eine Alternative zu dieser brutalen Methode bietet – auch heute noch :-) – das Programm lspci:
$ 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)
Listing 20.3 Die gefundenen PCI-Karten
Abbildung 20.1 sndconfig
Aus diesem Output kann man schon einen relativ guten Anhaltspunkt für alle benötigten Treiber gewinnen. Eine Alternative bieten automatische Tools wie sndconfig (s. Abbildung 20.1).
Alles automatisch
Dieses Tool stammt ursprünglich aus der RedHat-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:
# cat /vmlinuz > /dev/dsp
Listing 20.4 voice of god
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.
20.2.2 Ab Kernel 2.6 – ALSA
ALSA steht für »Advanced Linux Sound Architecture«, ist seit Kernel 2.6.0 standardmäßig dabei 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 noch besser als ihre entsprechenden OSS-Varianten.
Die Konfiguration von ALSA läuft dabei gar nicht so anders wie die von OSS ab. Sie müssen auch die entsprechenden Module samt Parametern laden. Damit man die ALSA-Module von ihren entsprechenden OSS-Äquivalenten unterscheiden kann, haben diese alle ein snd- vor ihrem Namen.
# 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 …
Listing 20.5 ALSA im Kernel
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 jedoch die Webseite des Projekts, http://www.alsa-project.org, bei eventuellen Problemen weiter. Dort erfahren Sie, ob Ihre Karte unterstützt wird, und Sie finden zudem für den Problemfall noch Installationshinweise speziell für Ihre Hardware und Distribution!