Soundkarten konfigurieren

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Ein Terminal öffnen

  2. Soundsystem unter Linux

  3. Einen Editor öffnen

  4. Kernelmodule laden

Inhaltsverzeichnis
  1. Soundtreiber
  2. Soundkarte einrichten
    1. Chipsatz
    2. Passenden Treiber finden
    3. Treiber ausprobieren
    4. Treiber beim Systemstart laden
  3. Soundkarte ist stumm, obwohl sie unter dem...
    1. Getestet unter Ubuntu 9.10
  4. Reihenfolge (Priorität) von Soundkarten Än...
  5. Links

Viele Soundkarten werden bereits bei der Installation von Ubuntu erkannt und eingerichtet. Sollte dies nicht der Fall sein, ist es möglich, diese von Hand einzurichten. Wie das geht, soll hier erklärt werden. Die Einrichtung von HDA-Soundchips, welche vor allem in neueren Mainboards und Notebooks verbaut sind, ist in einem eigenen Artikel beschrieben.

Soundtreiber

In der Datei /proc/asound/cards sind die von Linux erkannten Soundkarten aufgeführt. Hierunter fallen auch TV-Karten, da auch diese eine Sound-Ausgabe besitzen. Den Inhalt der Datei kann man mit diesem Befehl im Terminal[1] anzeigen lassen:

cat /proc/asound/cards 

Die Ausgabe sieht dann zum Beispiel so aus:

0 [V8235          ]: VIA8233 - VIA 8235
                     VIA 8235 at 0xdc00, irq 193
1 [Bt878          ]: Bt87x - Brooktree Bt878
                     Brooktree Bt878 at 0xdddff000, irq 177

In diesem Fall ist Nummer 0 (VIA8233) der auf dem Mainboard verbaute Soundchip und Nummer 1 (Bt878) die ebenfalls installierte TV-Karte, wobei hier jeweils nicht der Hersteller, sondern der Chipsatz angegeben ist.

Soundkarte einrichten

Wenn die Soundkarte nicht automatisch von ALSA erkannt wird, muss man wie im folgenden beschrieben den Treiber der Soundkarte manuell laden.

Chipsatz

Zunächst muss man den Chipsatz der Soundkarte ermitteln. Der entsprechende Befehl für das PCI-System lautet:

lspci | grep -i audio 

Falls man eine externe USB-Soundkarte bzw. ein USB-Headset hat, kann man den Chipsatz mit dem folgenden Befehl ermitteln.

lsusb 

Erhält man auch hier keine Ausgabe, die auf eine Soundkarte schließen lässt, besteht leider nur eine sehr geringe Chance, die Soundkarte nutzen zu können. Eine Möglichkeit besteht darin, diese Problemlösung zu probieren, ansonstens kann die Suche im Forum helfen.

Passenden Treiber finden

Nun muss man versuchen, das passende Kernelmodul für seine Soundkarte zu finden. Die Eingrenzung der Kernelmodule erfolgt mit dem Befehl grep in Kombination mit snd und den Informationen über den Chipsatz. zum Beispiel:

basename -s ".ko" $(find /lib/modules/$(uname -r) -type f -name "*.ko"  | grep snd | grep via) 

Man kann auch versuchen, über eine Suchmaschine die passenden Kernelmodule zu finden.

Treiber ausprobieren

Den gefundenen Treiber kann man jetzt (wie jeden anderen Treiber auch) mit dem Befehl modprobe laden:

sudo modprobe snd-via82xx 

Die Endung .ko nicht mit angeben. Bei einer Fehlermeldungen sollte ein anderes Modul probieren, ansonsten kann man im Forum um Hilfe bitten. Wenn keine Fehlermeldung erscheint, wurde das Modul geladen. Dies lässt sich mit dem Befehl[1]

cat /proc/asound/cards 

überprüfen. Jetzt sollte in /proc/asound/cards eine Karte aufgeführt sein.

Optionale Parameter

Einige Soundkarten benötigen optionale Parameter beim Laden des Modules, da die automatische Erkennung nicht funktioniert. Informationen hierzu findet man in der Dokumentation von ALSA. Mit dem Befehl

zless /usr/share/doc/alsa-base/driver/ALSA-Configuration.txt.gz 

öffnet man diese Datei. Anschließend sucht man in der Datei nach dem passenden Modulnamen und prüft, ob eventuelle Parameter für die Soundkarte vorhanden sind. Den passenden Parameter übergibt man anschließend dem Modul beim Laden desselben. Um eine Karte als die erste zu ladende festzulegen, hängt man noch den Parameter "index=0" an. Eine zweite Karte hätte dann den Parameter "index=1".

Treiber beim Systemstart laden

Methode 1: Hierzu muss man das richtige Modul nur wie in [4] beschrieben in die /etc/modules eintragen. Optionale Parameter hängt man einfach hinten an. Beispiel:

snd-ice1724 model=aureon51 index=0

Methode 2: Man kann auch mit ALSA direkt kommunizieren, um die Parameter zu übergeben. Dies tut man in der Datei /etc/modprobe.d/alsa-base.conf. Die Parameter werden wie bei Methode 1 übergeben, jedoch wird ein "options" vorangestellt. Beispiel:

options snd-ice1724 model=aureon51 index=0

audio-einstellungen.png

Soundkarte ist stumm, obwohl sie unter dem Livesystem funktioniert und auch vom System erkannt wurde

Getestet unter Ubuntu 9.10

Wenn im Lautstärkeregler (rechte Maustaste rechte Maustaste -> "Audioeinstellungen -> Hardware -> Wählen Sie ein Gerät zum Konfigurieren") keine Soundkarte auftaucht, obwohl die Module ordnungsgemäß geladen wurden, könnte folgender Workaround helfen:

sudo alsa reload 

ergibt eventuell eine Ausgabe wie diese:

lsof: WARNING: can't stat() fuse.gvfs-fuse-daemon file system /home/frank/.gvfs
      Output information may be incomplete.
/sbin/alsa: Warning: Processes using sound devices: 1860(pulseaudio).  

Der betreffende Prozess muss beendet werden. Zum Beispiel mit:

kill -15 1860 

Wenn sudo alsa reload sauber durchläuft, sollte der Sound funktionieren. Nun können die gewünschten Lautstärken eingestellt werden. Mit dem Befehl

sudo alsactl store 

lassen sich die Einstellungen dauerhaft speichern.

Erhält man folgende Fehlermeldung: "Home directory /home/<user> not ours.", dann muss man die Zugriffsrechte anpassen:

sudo chmod 666 /var/lib/alsa/asound.state 

Nun kann man alsactl store ohne sudo ausführen:

alsactl store 

Reihenfolge (Priorität) von Soundkarten Ändern

Sowohl Gnome als auch KDE bieten in den Systemeinstellungen die Möglichkeit, die Reihenfolge der Soundkarten zu bestimmen. Das funktioniert jedoch nur für native Anwendungen, wie z.B. Amarok unter Kubuntu. Näher am System ist die Konfiguration über Alsa. Das ist dann nützlich, wenn man z.B. unter Kubuntu Musik-Streams am Headset hören möchte.

So erhält man eine menschenlesbare Liste der Soundkarten:

cat /proc/asound/cards 

 0 [Intel          ]: HDA-Intel - HDA Intel
                      HDA Intel at 0xf0500000 irq 22
 1 [Headset        ]: USB-Audio - Logitech USB Headset
                      Logitech Logitech USB Headset at usb-0000:00:1d.0-1, full speed

Und die Liste der entsprechenden Kernel-Module mit

cat /proc/asound/modules 

 0 snd_hda_intel
 1 snd_usb_audio

Die Reihenfolge lässt sich nun wie folgt ändern:

sudo bash
echo options snd_usb_audio index=0 >> /etc/modprobe.d/sound-cards-order
echo options snd_hda_intel index=1 >> /etc/modprobe.d/sound-cards-order
exit 

Jetzt noch ein Neustart und fertig.

sudo reboot 

Um diese Änderungen rückgängig zu machen, löscht man /etc/modprobe.d/sound-cards-order und startet neu.