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
Meta-Treiber 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 8, 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.
Jetzt sollte die Soundkarte 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 Verbindung zu einem Bluetooth-Gerät wird in diesem Abschnitt nicht erläutert. Dazu finden Sie weitere Informationen in Abschnitt 31.5, „Bluetooth“.
Damit Bluetooth zusammen mit dem Soundsystem von FreeBSD funktioniert, müssen Benutzer zuerst audio/virtual_oss installieren:
#
pkg install virtual_oss
audio/virtual_oss setzt voraus, dass
cuse
in den Kernel geladen wird:
#
kldload cuse
Führen Sie folgenden Befehl aus, damit
cuse
beim Systemstart automatisch geladen
wird:
#
sysrc -f /boot/loader.conf cuse_load=yes
Um Kopfhörer mit audio/virtual_oss zu benutzten, muss nach der Verbindung mit einem Bluetooth-Audiogerät ein virtuelles Gerät erstellt werden:
#
virtual_oss -C 2 -c 2 -r 48000 -b 16 -s 768 -R /dev/null -P /dev/bluetooth/
headphones
-d dsp
headphones
ist in diesem
Beispiel ein Hostname aus
/etc/bluetooth/hosts
. Stattdessen
kann auch BT_ADDR
verwendet werden.
Weitere Informationen finden Sie in virtual_oss(8).
Tabelle 7.1, „Typische Fehlermeldungen“ 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 in
/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>.