Bevor Sie die Konfiguration beginnen, sollten Sie in Erfahrung bringen welches Soundkartenmodell und welcher Chip benutzt wird. FreeBSD unterstützt eine Reihe Soundkarten. Die Hardware-Notes zählen alle unterstützten Karten und deren Treiber für FreeBSD auf.
Um die Soundkarte benutzen zu können, muss der richtige Gerätetreiber geladen werden. Am einfachsten ist es, das Kernelmodul für die Soundkarte mit kldload(8) zu laden. Dieses Beispiel lädt den Treiber für einen integrierten Chipsatz, basierend auf der Intel Spezifikation:
#
kldload snd_hda
Um den Treiber automatisch beim Systemstart zu laden,
fügen Sie folgende Zeile in
/boot/loader.conf
ein:
snd_hda_load="YES"
Weitere ladbare Soundmodule sind in
/boot/defaults/loader.conf
aufgeführt.
Wenn Sie nicht sicher sind, welchen Gerätetreiber Sie laden
müssen, laden Sie das Modul
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.
Durch Hinzufügen des Meta-Treibers in
/boot/loader.conf
können alternativ alle
Audio-Treiber geladen werden.
Um zu ermitteln, welcher Treiber für die
Soundkarte vom Metatreiber snd_driver
geladen wurde, geben Sie cat /dev/sndstat
ein.
Die Unterstützung für die Soundkarte kann auch direkt in den Kernel kompiliert werden. Weitere Informationen über den Bau eines Kernels finden Sie im Kapitel 9, Konfiguration des FreeBSD-Kernels.
Bei der Verwendung eines eigenen Kernels müssen Sie sicherstellen, dass der Treiber für das Audio-Framework in der Kernelkonfigurationsdatei vorhanden ist:
device sound
Als Nächstes muss die Unterstützung für die Soundkarte hinzugefügt werden. Um das Beispiel mit dem integrierten Intel Audio-Chipsatz aus dem vorherigen Abschnitt fortzusetzen, verwenden Sie die folgende Zeile in der Kernelkonfigurationsdatei:
device snd_hda
Lesen Sie die Manualpage des Treibers, um den entsprechenden Gerätenamen herauszufinden.
Nicht PnP-fähige ISA-Soundkarten benötigen eventuell
Einstellungen, wie IRQ und I/O-Port in
/boot/device.hints
. 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, müssen die folgenden Zeilen in die
Kernelkonfigurationsdatei eingetragen werden:
device snd_sbc device snd_sb16
Wenn die Karte den I/O-Port 0x220
und
IRQ 5
benutzt, müssen folgende Zeilen
zusätzlich in /boot/device.hints
hinzugefügt werden:
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"
Die Syntax für /boot/device.hints
wird in sound(4), sowie in der Manualpage des
jeweiligen Treibers beschrieben.
Das Beispiel verwendet die vorgegebenen Werte. Falls die Karteneinstellungen andere Werte vorgeben, müssen die Werte in der Kernelkonfiguration angepasst werden. Weitere Informationen zu dieser Soundkarte finden Sie in snd_sbc(4).
Nachdem Sie den neuen Kernel gestartet oder das
erforderliche Modul geladen haben, sollte die
Soundkarte erkannt werden. Führen Sie
dmesg | grep pcm
aus, um dies zu
überprüfen. Diese Ausgabe stammt von einem System mit
einem integrierten Conexant CX20590 Chipsatz:
pcm0: <NVIDIA (0x001c) (HDMI/DP 8ch)> at nid 5 on hdaa0 pcm1: <NVIDIA (0x001c) (HDMI/DP 8ch)> at nid 6 on hdaa0 pcm2: <Conexant CX20590 (Analog 2.0+HP/2.0)> at nid 31,25 and 35,27 on hdaa1
Der Status der Karte kann auch mit diesem Kommando geprüft werden:
#
cat /dev/sndstat
FreeBSD Audio Driver (newpcm: 64bit 2009061500/amd64) Installed devices: pcm0: <NVIDIA (0x001c) (HDMI/DP 8ch)> (play) pcm1: <NVIDIA (0x001c) (HDMI/DP 8ch)> (play) pcm2: <Conexant CX20590 (Analog 2.0+HP/2.0)> (play/rec) default
Die Ausgabe kann für jede Soundkarte anders aussehen.
Wenn das Gerät pcm
nicht erscheint,
prüfen Sie die Kernelkonfigurationsdatei und stellen Sie
sicher, dass der richtige Treiber geladen oder in den Kernel
kompiliert wurde. Im nächsten Abschnitt werden häufig
auftretende Probleme sowie deren Lösungen besprochen.
Wenn alles glatt lief, sollte die Soundkarte jetzt unter FreeBSD funktionieren. Wenn ein CD- oder DVD-Laufwerk an die Soundkarte angeschlossen ist, können Sie jetzt mit cdcontrol(1) eine CD abspielen:
%
cdcontrol -f /dev/acd0 play 1
Audio CDs besitzen eine spezielle Kodierung. Daher sollten sie nicht mit mount(8) in das Dateisystem eingehangen werden.
Es gibt viele Anwendungen, wie audio/workman, die eine bessere Benutzerschnittstelle besitzen. Zur Wiedergabe von MP3-Audiodateien kann audio/mpg123 installiert werden.
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
kann
eine beliebige Datei verwendet werden. Wenn Sie einige
Geräusche hören, funktioniert die Soundkarte.Datei
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 folgende Tabelle zeigt typische Fehlermeldungen sowie deren Lösungen:
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 |
Moderne Grafikkarten beinhalten oft auch ihre eigenen
Soundtreiber, um HDMI 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 der Fall ist, führen Sie
dmesg aus und suchen Sie nach der
Zeichenfolge pcm
. Die Ausgabe sieht in
etwa so aus:
... 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 ...
In diesem Beispiel wurde die Grafikkarte (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:
#
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 /etc/sysctl.conf
hinzufügen:
hw.snd.default_unit=4
Oft sollen mehrere Tonquellen gleichzeitig abgespielt werden. FreeBSD verwendet dazu virtuelle Tonkanäle. Virtuelle Kanäle mischen die Tonquellen im Kernel, sodass mehrere Kanäle benutzt werden können, als von der Hardware unterstützt werden.
Drei sysctl(8) Optionen stehen zur Konfiguration der virtuellen Kanäle zur Verfügung:
#
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. 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 Audiogeräte
erhalten. Lesen Sie pcm(4) für weitere
Informationen.
Die Anzahl der virtuellen Kanäle kann nicht geändert werden, solange das Gerät genutzt wird. Schließen Sie daher zuerst alle Programme wie 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.
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 mit den
entsprechenden Werten in
/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
<de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an
<de-bsd-translators@de.FreeBSD.org>.