Betriebssysteme müssen sich nicht nur an Ihrer Stabilität, sondern auch an der Unterstützung von Hardware messen lassen. Es ist hinlänglich bekannt, dass die meisten Hardware-Hersteller leider keine eigenen Linux-Treiber für ihre Produkte zur Verfügung stellen. Wir zeigen Auswege.
Ein häufig auftretendes Argument gegen den Einsatz von Linux war und ist die fehlende Treiber-Unterstützung für die unterschiedlichsten Hardware-Komponenten. Aus diesem Grund haben sich zahlreiche Projekte entwickelt, die genau dieses Manko beseitigt haben bzw. es noch beseitigen wollen.
Im Soundkartenbereich existieren im Wesentlichen drei Möglichkeiten, die Hardware zur Kooperation mit Linux zu überzeugen: Dies sind die in den Kernelquellen enthaltenen OSS/Lite-Treiber, das ALSA-Projekt und die kommerziell vertriebenen OSS-Treiber der Firma 4Front. Um Missverständnissen gleich im Vorfeld vorzubeugen, sei erwähnt, dass der vorliegende Artikel auf der aktuellen ALSA-Version 0.5.12a und der aktuellen OSS-Version 3.9.6b basiert. Die Betrachtungen zu Kernel-internen Treibern basieren auf Kernelversion 2.4.16. Um den Seitenbedarf dieses Artikel nicht unnötig in die Höhe zu treiben, wird von einer expliziten Diskussion der jeweils unterstützten Soundkarten abgesehen. Vielmehr wird auf die entsprechenden Web-Seiten [1], [2], [3] verwiesen.
ALSA
Ins Leben gerufen wurde das ALSA-Projekt [4] Anfang 1998 durch Jaroslav Kysela. Seit Dezember 1999 wird die Entwicklung durch die SuSE AG unterstützt [5]. Heutzutage hilft jede halbwegs aktuelle Distribution bei der Installation von Soundkarten mit eigenen Konfigurationsprogrammen. In der Regel wird hierbei auf die ALSA-Treiber zurückgegriffen, da diese unter der GPL bzw. LGPL stehen und zahlreiche Soundkarten ansprechen können (siehe [1]).
Installation
Wie bereits erwähnt, werden ALSA-Treiber in den meisten gängigen Distributionen als Standard-Soundkartentreiber verwendet. Da hier nicht auf alle Distributionen eingegangen werden kann, wollen wir am Beispiel von SuSE Linux 7.3 erläutern, wie ALSA eingerichtet wird. Neben dieser YaST2-basierten Lösung besteht auch die Möglichkeit, das ALSA-interne Konfigurationsprogramm alsaconf zu verwenden. Eine genaue Beschreibung der distributions-unabhängigen Installation ist unter [7] zu finden.
Man muss generell Root-Rechte besitzen, wenn man Hardware einrichten will. Das geht wie folgt:
- Einloggen als normaler Nutzer
- Freigeben der Ausgabe des X-Servers (im Terminal): xhost + localhost
- “Aneignen” von Root-Rechten in einem Terminal: su – (Bei der nun folgenden Abfrage das Root-Passwort eingeben)
- Umlenken des Displays: export DISPLAY=0:0 (Wenn sie eine andere Shell als die bash verwenden, kann auch setenv DISPLAY 0:0 zum Erfolg führen.)Alle Programme, die ab jetzt aus diesem Terminal-Fenster gestartet werden, werden von Root ausgeführt und auf dem Display des normalen Nutzers dargestellt. Nun aber zu Installation der Soundkarte:
- Starten von YaST2 durch Eingeben von yast2 im Root-Terminal.
- Im Untermenü Hardware die Soundkartenkonfiguration anklicken (Abbildung 1).
- Die Soundkarte sollte nun automatisch erkannt werden (Abbildung 2).
- Jetzt einfach nur immer weiter drücken.
Das war es eigentlich schon. Wir überprüfen nun, ob die Soundkarte auch richtig eingerichtet wurde: Dazu wird einfach im Root-Terminal der Befehl
cat /proc/asound/sndstat
eingegeben, und Linux sagt uns, welche Soundkanäle eingerichtet worden sind. Um nicht einer einzelnen Soundkarte den Vorrang zu geben, soll an dieser Stelle nicht auf alle weiteren möglichen Einstellungen und Funktionen von ALSA eingegangen werden. Für SBLive-Karten ist es beispielsweise möglich, die SoundFont-Dateien, die den Windows-Treiber-CDs beiliegen, zu installieren und zu verwenden. Starten Sie dazu einfach noch einmal das Soundkarten-Konfigurationsprogramm in YaST2. Sie werden überrascht sein, wieviel Finetuning noch möglich ist.
OSS/Lite
Kommen wir nun zu den Treibern, die vielleicht schon etwas angestaubt sind, aber ebenso zu Linux gehören, wie der niedliche Pinguin Tux. Wer schon einmal seinen eigenen Kernel übersetzt hat, weiß, dass man dabei bereits die Soundkarte einrichten kann. Nicht, dass wir jetzt einen eigenen Kernel übersetzen wollten, aber eine kurze Betrachtung der Kernel-Treiber ist durchaus interessant. Geben Sie doch einfach mal im Root-Terminal, welches nach der ALSA-Installation noch offen ist, den Befehl
ls /lib/modules/2.4.16-4GB/kernel/drivers/sound/
ein (2.4.16-4GB ist die aktuelle Kernelnummer und muss gegebenenfalls angepasst werden). Die angezeigten Dateien sind Kernelmodule, die den Einsatz von Soundkarten unterstützen. Schalten Sie doch einfach mal den bereits konfigurierten ALSA-Treiber aus und verwenden ein Kernelmodul:
- Ausschalten der ALSA-Treiber (zuerst müssen alle Programme, die die Soundkarte verwenden, beendet werden): /etc/init.d/alsasound stop
- Laden des passenden Kernelmoduls (im Beispiel das für die SBLive): modprobe emu10k1Das war’s schon, oder? Nein – zumindest die im Test verwendete SuSE-Distribution 7.3 installiert standardmäßig nur die ALSA-Treiber. Der folglich jetzt geladene Treiber ist wieder der ALSA-Treiber, den wir im vorherigen Abschnitt erwähnt haben. Im Übrigen basiert dieser auf dem von Creative Labs selbst entwickelten OSS/Lite-Treiber, der den gleichen Namen hat. Um die Diskussion an dieser Stelle abzukürzen, sei erwähnt, dass auf Pro-Linux [6] erst vor kurzem eine Verlautbarung von Linus Torvalds diskutiert wurde, die im Wesentlichen aussagt, dass die ALSA-Treiber die alten OSS/Lite-Treiber vollständig ersetzen und somit direkt in den Kernel einfließen werden.
Open Sound System (OSS)
Warum sollten sich Linux-Anwender mit kommerzieller Software auseinandersetzen, wenn es doch kostenfreie Alternativen gibt? Diese Frage lässt sich nicht pauschal beantworten, da die unterschiedlichsten Fragen wie
- Wird die Soundkarte unterstützt?
- Welche Funktionen der Soundkarte werden unterstützt?
- Welche Software soll eingesetzt werden? eine Rolle spielen. Da ALSA so konfiguriert werden kann, dass OSS-Treiber emuliert werden, ist der letzte angesprochene Aspekt für den Normalanwender nicht mehr so relevant. Bei Tests mit spezieller Audio-Software (z. B. SLAB, ecasound) hat sich aber herausgestellt, dass der Einsatz von original OSS-Treibern der emulierten Variante vorzuziehen ist. Der wohl entscheidendste Vorteil ist die Tatsache, dass OSS neben dem standardmäßigen Audiokanal /dev/dsp0 einen (z. B. bei der SB 128) oder mehrere (z. B. bei der SB Live) zusätzliche Ausgangskanäle (Abbildung 3) bereitstellt. Es ist somit beispielsweise möglich, den KDE-Sound-Daemon (ARTS) an /dev/dsp1 zu binden. Somit können Programme, die ihre Ausgabe nicht über Arts leiten (etwa RealPlayer), ungestört über /dev/dsp0 tönen. Wem das nicht reicht, der kann durch Erwerb einer Lizenz für den virtuellen Mixer weitere acht virtuelle Kanäle nutzen.
Lizenzmodell
Wie bereits angedeutet, handelt es sich bei 4Fronts OSS [8] um ein kommerzielles Produkt, welches nicht der GPL unterliegt. Der zu bezahlende Betrag basiert auf einer Basislizenz, welche unbedingt erworben werden muss und für Linux 20 US-Dollar kostet. Für den Einsatz neuerer PCI-Karten, spezieller Funktionen älterer ISA-Soundkarten und professioneller Soundkarten sind zusätzlich spezielle Lizenzen notwendig (vgl. hierzu Tabelle 1). Nähere Informationen zu den einzelnen Lizenzen sind unter [9] zu finden. Ich empfehle vor dem Kauf, die kostenlose Demoversion von OSS von [10] herunterzuladen und zu installieren. Ist man mit den Testergebnissen zufrieden, kann eine Lizenzdatei bestellt werden. Hierbei handelt es sich um eine Textdatei, in der ein Lizenzschlüssel enthalten ist, der die entsprechenden Treiber freischaltet (siehe Installationsabschnitt). Die Bestellung der Lizenzen kann entweder direkt auf der 4Front-Web-Seite oder über die SuSE AG erledigt werden. Ich empfehle den Kauf bei SuSE, da man somit von vornherein mögliche Probleme eines Auslandsgeschäftes vermeidet.
Tabelle 1: OSS-Lizenzen
| PCI-Soundkarten | ISA-Soundkarten | professionelle Soundkarten |
|---|---|---|
| Avance Logic PCI (AVANCE) | All ISA BUS Soundcards (ISA) | Virtual Mixer (MIX) |
| Aureal Vortex (VORTEX) | SB-AWE64 Wave Table (AWE) | Input Multiplexer (IMUX) |
| C-Media CMI873x (CMEDIA) | Dream SAM9704 (DREAM) | Envy24/MIDIMan (ENVY24) |
| Conexant Riptide (RIPTIDE) | Ensoniq-VIVO Wave Table (VIVO) | LynxONE (LYNXONE) |
| Cirrus Logic CS428x/CS46xx (CRYSTAL) | RME Digi32/Digi96 (DIGI32) | |
| ESS Maestro (MAESTRO) | Sonorus Studi/o (STUDIO) | |
| ESS Solo-1 (SOLO) | ||
| Forte Media (FMEDIA) | ||
| Intel8xx/SiS7012 (INTELPCI) | ||
| NeoMagic NM2200 (NEOMAGIC) | ||
| Sound Blaster SBPCI128/Ensoniq AudioPCI (APCI) | ||
| Sound Blaster Live!/Audigy (SBLIVE) | ||
| S3 SonicVibes (S3VIBES) | ||
| Trident 4DWave/SiS7018 (TRIDENT) | ||
| VIA97/Geode (VIA97) | ||
| Yamaha DS-XG (YMH) |
Installation
Wie bereits erwähnt, sollte man die Demo-Version von OSS vom Web-Server herunterladen und installieren, bevor man entsprechende Lizenzen kauft. Die Installation, für die wieder Root-Rechte notwendig sind, läuft folgendermaßen ab:
- Erstellen des Quellverzeichnisses: mkdir ~/oss
- Download der Treiber von [10] in das Quellverzeichnis
- Wechseln in das Quellverzeichnis: cd ~/oss
- Entpacken des Archives, z. B.: tar xvfz osslinux396b-2x.tar.gz
- Starten der Installation: ./oss-install Das so gestartete Installationsprogramm versucht nach dem Akzeptieren der Lizenzbedingungen, die Treiber, die für die aktuelle Kernel-Version benötigt werden, zu installieren. Werden keine vorkompilierten Treiber gefunden, wird versucht, diese zu kompilieren. Dazu müssen die Kernel-Quellen installiert sein, und die Version der Kernel-Quellen muss genau (!) mit der des installierten Kernels übereinstimmen. Bei einigen Distributionen kann es vorkommen, dass dies nicht der Fall ist. Beispielsweise ist bei meiner Mandrake-Distribution die Versionsnummer des laufenden Kernels linux-2.4.17-10mdk, die der Kernelquellen aber linux-2.4.17-15mdk. Da wir nun aber keinen Kernel übersetzen wollen, wird ein wenig getrickst: Wir editieren einfach die Datei /usr/src/linux/include/linux/version.h und tragen dort die Versionsnummer des laufenden Kernels ein. Und, siehe da – die Installationsroutine von OSS ist zufrieden.
Für den Fall, dass Sie eine Lizenz von OSS gekauft haben, wird die entsprechende Datei license.dat einfach in das OSS-Verzeichnis, welches bei der Erstinstallation mit angegeben wurde, kopiert und im Programm oss-install über den entsprechenden Menüpunkt aktiviert.
Im Übrigen kann man ähnlich zu ALSA die vorhandenen bzw. eingerichteten Soundkanäle durch cat /dev/sndstat anzeigen lassen.
Fazit
Um den Artikel mit einem zusammenfassenden Fazit zu schließen, sei kurz Folgendes gesagt: Die OSS/Lite-Treiber werden wohl über kurz oder lang von der Bildfläche verschwinden, während ALSA zunehmend an Bedeutung gewinnt. Für den normalen Desktop-Betrieb sind diese Treiber bereits jetzt vollkommen aureichend. Wenn Sie sich jedoch mit Spezial-Software auseinandersetzen müssen, kommen Sie im Moment noch nicht an OSS vorbei. Da aber die Entwickler der ALSA-Treiber auch OSS-Kompatibilität anstreben, wird sich wohl erst mit der Zeit zeigen, ob die Emulation die kommerziellen Treiber gänzlich ersetzen kann. Der Installation einer Soundkarte unter Linux steht folglich nichts mehr im Wege, wenn man eine der zahlreichen unterstützten Karten verwendet.
Infos
[1] Die ALSA-Soundkarten-Matrix: http://www.alsa-project.org/~goemon/
[2] Von OSS unterstützte Soundkarten: http://www.opensound.com/osshw.html
[3] Die Kernel-Sound-Module http://www.linux.uni-bayreuth.de/howtos/html/DE-Sound-HOWTO-3.html
[4] Homepage des ALSA-Projektes: http://www.alsa-project.org
[5] ALSA und SuSE: http://www.alsa-project.org/announce/profi.php3
[6] Distributionsunabhängige Installation von ALSA: http://www.alsa-project.org/~valentyn/Alsa-sound-mini-HOWTO.html
[7] Pro-Linux-Diskussion OSS/Lite vs. ALSA: http://www.pro-linux.de/news/2002/3990.html
[8] Homepage der Firma 4Front: http://www.opensound.com
[9] Infos zu den OSS-Lizenzen: http://www.opensound.com/license.html
[10] OSS-Download-Seite: http://www.opensound.com/download.cgi







