8.2. Soundkarten einrichten

Von Moses Moore. Aktualisiert von Marc Fonvieille. Übersetzt von Benedikt Köhler und Uwe Pierau.

8.2.1. Den Soundtreiber einrichten

Zunächst sollten Sie in Erfahrung bringen, welches Soundkartenmodell Sie besitzen, welchen Chip die Karte benutzt und ob es sich um eine PCI- oder ISA-Karte handelt. FreeBSD unterstützt eine Reihe von PCI- als auch von ISA-Karten. Die Hardware-Notes zählen alle unterstützten Karten und deren Treiber auf.

Um Ihre Soundkarte benutzen zu können, müssen Sie den richtigen Gerätetreiber laden. Sie haben zwei Möglichkeiten, den Treiber zu laden: Am einfachsten ist es, das Modul mit kldload(8) zu laden. Sie können dazu die Kommandozeile verwenden:

# kldload snd_emu10k1

Alternativ können Sie auch einen Eintrag in der Datei /boot/loader.conf erstellen:

snd_emu10k1_load="YES"

Beide Beispiele gelten für eine Creative SoundBlaster® Live! Soundkarte. Weitere ladbare Soundmodule sind in der Datei /boot/defaults/loader.conf aufgeführt. Wenn Sie nicht sicher sind, welchen Gerätetreiber Sie laden müssen, laden Sie den Treiber snd_driver:

# kldload snd_driver

Der Treiber snd_driver ist ein Meta-Treiber, der alle gebräuchlichen Treiber lädt und die Suche nach dem richtigen Treiber vereinfacht. Weiterhin können alle Treiber über /boot/loader.conf geladen werden.

Wollen Sie feststellen, welcher Treiber für Ihre Soundkarte vom Metatreiber snd_driver geladen wurde, sollten Sie sich mit cat /dev/sndstat den Inhalt der Datei /dev/sndstat ansehen.

Alternativ können Sie die Unterstützung für die Soundkarte direkt in den Kernel einkompilieren. Diese Methode im nächsten Abschnitt beschrieben. Weiteres über den Bau eines Kernels erfahren Sie im Kapitel Kernelkonfiguration.

8.2.1.1. Soundkarten in der Kernelkonfiguration einrichten

Zuerst müssen Sie sound(4), den Treiber für das Audio-Framework in die Kernelkonfiguration aufnehmen. Fügen Sie dazu die folgende Zeile in die Kernelkonfigurationsdatei ein:

device sound

Als Nächstes müssen Sie den richtigen Treiber in die Kernelkonfiguration einfügen. Den Treiber entnehmen Sie bitte der Liste der unterstützen Soundkarten aus den Hardware-Notes. Zum Beispiel wird die Creative SoundBlaster Live! Soundkarte vom Treiber snd_emu10k1(4) unterstützt. Für diese Karte verwenden Sie die nachstehende Zeile:

device snd_emu10k1

Die richtige Syntax für die Zeile lesen Sie bitte in der Hilfeseite des entsprechenden Treibers nach. Die korrekte Syntax für alle unterstützten Treiber finden Sie außerdem in der Datei /usr/src/sys/conf/NOTES.

Nicht PnP-fähige ISA-Soundkarten benötigen (wie alle anderen ISA-Karten auch) weiterhin Angaben zu den Karteneinstellungen (wie IRQ und I/O-Port). Die Karteneinstellungen tragen Sie in die Datei /boot/device.hints ein. Während des Systemstarts liest der loader(8) diese Datei und reicht die Einstellungen an den Kernel weiter. Für eine alte Creative SoundBlaster 16 ISA-Karte, die sowohl den snd_sbc(4)- als auch den snd_sb16-Treiber benötigt, fügen Sie folgende Zeilen in die Kernelkonfigurationsdatei ein:

device snd_sbc
device snd_sb16

In die Datei /boot/device.hints tragen Sie für diese Karte zusätzlich die folgenden Einstellungen ein:

hint.sbc.0.at="isa"
hint.sbc.0.port="0x220"
hint.sbc.0.irq="5"
hint.sbc.0.drq="1"
hint.sbc.0.flags="0x15"

In diesem Beispiel benutzt die Karte den I/O-Port 0x220 und den IRQ 5.

Die Manualpage sound(4) sowie des jeweiligen Treibers beschreiben die Syntax der Einträge in der Datei /boot/device.hints.

Das Beispiel verwendet die vorgegebenen Werte. Falls Ihre Karteneinstellungen andere Werte vorgeben, müssen Sie die Werte in der Kernelkonfiguration anpassen. Weitere Informationen zu dieser Soundkarte entnehmen Sie bitte der Manualpage snd_sbc(4).

8.2.2. Die Soundkarte testen

Nachdem Sie den neuen Kernel gestartet oder das erforderliche Modul geladen haben, sollte Ihre Soundkarte in den Systemmeldungen (dmesg(8)) auftauchen. Zum Beispiel:

pcm0: <Intel ICH3 (82801CA)> port 0xdc80-0xdcbf,0xd800-0xd8ff irq 5 at device 31.5 on pci0
pcm0: [GIANT-LOCKED]
pcm0: <Cirrus Logic CS4205 AC97 Codec>

Den Status der Karte können Sie über die Datei /dev/sndstat prüfen:

# cat /dev/sndstat
FreeBSD Audio Driver (newpcm)
Installed devices:
pcm0: <Intel ICH3 (82801CA)> at io 0xd800, 0xdc80 irq 5 bufsz
16384
kld snd_ich (1p/2r/0v channels duplex default)

Die Ausgaben können auf Ihrem System anders aussehen. Wenn das Gerät pcm nicht erscheint, prüfen Sie bitte Ihre Konfiguration. Stellen sie sicher, dass Sie den richtigen Treiber gewählt haben. Abschnitt 8.2.2.1 beschreibt häufig auftretende Probleme.

Wenn alles glatt lief, haben Sie nun eine funktionierende Soundkarte. Wenn ein CD-ROM oder DVD-ROM-Laufwerk an Ihrer Soundkarte angeschlossen ist, können Sie jetzt mit cdcontrol(1) eine CD abspielen:

% cdcontrol -f /dev/acd0 play 1

Es gibt viele Anwendungen, wie audio/workman, die eine bessere Benutzerschnittstelle besitzen. Um sich MP3-Audiodateien anzuhören, können Sie eine Anwendung wie audio/mpg123 installieren.

Eine weitere schnelle Möglichkeit die Karte zu prüfen, ist es, Daten an das Gerät /dev/dsp zu senden:

% cat Datei > /dev/dsp

Für Datei können Sie eine beliebige Datei verwenden. Wenn Sie einige Geräusche hören, funktioniert die Soundkarte.

Anmerkung: Die Gerätedateien /dev/dsp* werden automatisch erzeugt, wenn sie das erste Mal benötigt werden. Werden sie nicht verwendet, sind sie hingegen nicht vorhanden und tauchen daher auch nicht in der Ausgabe von ls(1) auf.

Die Einstellungen des Mixers können Sie mit dem Kommando mixer(8) verändern. Weiteres lesen Sie bitte in der Hilfeseite mixer(8) nach.

8.2.2.1. Häufige Probleme

Fehler Lösung
sb_dspwr(XX) timed out

Der I/O Port ist nicht korrekt angegeben.

bad irq XX

Der IRQ ist falsch angegeben. Stellen Sie sicher, dass der angegebene IRQ mit dem Sound IRQ übereinstimmt.

xxx: gus pcm not attached, out of memory

Es ist nicht genug Speicher verfügbar, um das Gerät zu betreiben.

xxx: can't open /dev/dsp!

Überprüfen Sie mit fstat | grep dsp ob eine andere Anwendung das Gerät geöffnet hat. Häufige Störenfriede sind esound oder die Sound-Unterstützung von KDE.

Ein weiterer Fall ist der, dass moderne Graphikkarten oft auch ihre eigenen Soundtreiber mit sich führen, um HDMI oder ähnliches zu verwenden. Diese Audiogeräte werden manchmal vor der eigentlichen, separaten Soundkarte aufgeführt und dadurch nicht als das Standardgerät zum Abspielen von Tönen benutzt. Um zu prüfen, ob das bei Ihnen der Fall ist, führen Sie dmesg aus und suchen Sie nach der Zeichenfolge pcm. Die Ausgabe sieht in etwa so aus wie folgt:

...
hdac0: HDA Driver Revision: 20100226_0142
hdac1: HDA Driver Revision: 20100226_0142
hdac0: HDA Codec #0: NVidia (Unknown)
hdac0: HDA Codec #1: NVidia (Unknown)
hdac0: HDA Codec #2: NVidia (Unknown)
hdac0: HDA Codec #3: NVidia (Unknown)
pcm0: <HDA NVidia (Unknown) PCM #0 DisplayPort> at cad 0 nid 1 on hdac0
pcm1: <HDA NVidia (Unknown) PCM #0 DisplayPort> at cad 1 nid 1 on hdac0
pcm2: <HDA NVidia (Unknown) PCM #0 DisplayPort> at cad 2 nid 1 on hdac0
pcm3: <HDA NVidia (Unknown) PCM #0 DisplayPort> at cad 3 nid 1 on hdac0
hdac1: HDA Codec #2: Realtek ALC889
pcm4: <HDA Realtek ALC889 PCM #0 Analog> at cad 2 nid 1 on hdac1
pcm5: <HDA Realtek ALC889 PCM #1 Analog> at cad 2 nid 1 on hdac1
pcm6: <HDA Realtek ALC889 PCM #2 Digital> at cad 2 nid 1 on hdac1
pcm7: <HDA Realtek ALC889 PCM #3 Digital> at cad 2 nid 1 on hdac1
...

Hier wurde die Graphikkarte (NVidia) vor der Soundkarte (Realtek ALC889) aufgeführt. Um die Soundkarte als Standardabspielgerät einzusetzen, ändern Sie hw.snd.default_unit auf die Einheit, welche für das Abspielen benutzt werden soll, wie folgt:

# sysctl hw.snd.default_unit=n

Hier repräsentiert n die Nummer der Soundkarte, die verwendet werden soll, in diesem Beispiel also 4. Sie können diese Änderung dauerhaft machen, indem Sie die folgende Zeile zu der /etc/sysctl.conf Datei hinzufügen:

hw.snd.default_unit=4

8.2.3. Mehrere Tonquellen abspielen

Beigetragen von Munish Chopra.

Oft sollen mehrere Tonquellen gleichzeitig abgespielt werden, auch wenn beispielsweise esound oder artsd das Audiogerät nicht mit einer anderen Anwendung teilen können.

Unter FreeBSD können mit sysctl(8) virtuelle Tonkanäle eingerichtet werden. Virtuelle Kanäle mischen die Tonquellen im Kernel (so können mehr Kanäle als von der Hardware unterstützt benutzt werden).

Die Anzahl der virtuellen Kanäle können Sie als Benutzer root wie folgt einstellen:

# sysctl dev.pcm.0.play.vchans=4
# sysctl dev.pcm.0.rec.vchans=4
# sysctl hw.snd.maxautovchans=4

Im Beispiel werden vier virtuelle Kanäle eingerichtet, eine im Normalfall ausreichende Anzahl. Sowohl dev.pcm.0.play.vchans=4 und dev.pcm.0.rec.vchans=4 sind die Anzahl der virtuellen Kanäle des Geräts pcm0, die fürs Abspielen und Aufnehmen verwendet werden und sie können konfiguriert werden, sobald das Gerät existiert. hw.snd.maxautovchans ist die Anzahl der virtuellen Kanäle, die einem Gerät zugewiesen werden, wenn es durch kldload(8) eingerichtet wird. Da das Modul pcm unabhängig von den Hardware-Treibern geladen werden kann, gibt hw.snd.maxautovchans die Anzahl der virtuellen Kanäle an, die später eingerichtete Geräte erhalten. Lesen Sie dazu pcm(4) für weitere Informationen.

Anmerkung: Sie können die Anzahl der virtuellen Kanäle nur ändern, wenn das Gerät nicht genutzt wird. Schließen Sie daher zuerst alle Programme (etwa Musikabspielprogramme oder Sound-Daemonen), die auf dieses Gerät zugreifen.

Die korrekte pcm-Gerätedatei wird automatisch zugeteilt, wenn ein Programm das Gerät /dev/dsp0 anfordert.

8.2.4. Den Mixer einstellen

Beigetragen von Josef El-Rayes.

Die Voreinstellungen des Mixers sind im Treiber pcm(4) fest kodiert. Es gibt zwar viele Anwendungen und Dienste, die den Mixer einstellen können und die eingestellten Werte bei jedem Start wieder setzen, am einfachsten ist es allerdings, die Standardwerte für den Mixer direkt im Treiber einzustellen. Der Mixer kann in der Datei /boot/device.hints eingestellt werden:

hint.pcm.0.vol="50"

Die Zeile setzt die Lautstärke des Mixers beim Laden des Moduls pcm(4) auf den Wert 50.

Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an <[email protected]>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an <[email protected]>.