Audioausgang umschalten

Betreibt man FreeBSD minimalistisch, das heißt ohne PulseAudio & Co., dann scheint ein Helferlein zu fehlen, welches es erlaubt den Audioausgang umzuschalten. Denn, wenngleich der Rechner problemlos Sound abspielt, das Wählen des richtigen Ausioausgangs kann kompliziert wirken.

In dieser Anleitung geht es um das manuelle Umschalten des Audiokanals bzw. des Audiogeräts.

Problem

FreeBSD spielt zwar Sound ab, jedoch nur über den Standardausgang und nicht z.B. über den Kopfhörerausgang.

Beschreibung

Die Ausgabe des Gerätes “sndstat” zeigt, welche “Soundkarten” im System verbaut und aktiv sind.

cat /dev/sndstat
Installed devices:
pcm0: <Intel Haswell (HDMI/DP 8ch)> (play)
pcm1: <Intel Haswell (HDMI/DP 8ch)> (play)
pcm2: <Intel Haswell (HDMI/DP 8ch)> (play)
pcm3: <Realtek ALC282 (Internal Analog)> (play/rec) default
pcm4: <Realtek ALC282 (Front Analog)> (play/rec)
No devices installed from userspace.

Ein Blick in “sysctl” verrät, welches Gerät zur Zeit für die Ausgabe verwandt wird.

sysctl hw.snd.default_unit
hw.snd.default_unit: 3

Wie man sieht, ist das dritte Gerät (pcm3) für die Standardausgabe zuständig.

Lösung

Mittels “sysctl” lässt sich nun der Wert einfach neu setzen.

sysctl hw.snd.default_unit=4
hw.snd.default_unit: 3 -> 4

Nun ist “pcm4” und somit (in meinem Fall) der Kopfhörer aktiv.

Einschränkung

Mit dieser Lösung erkennt FreeBSD nicht automatisch, wenn Kopfhörer eingesteckt wird; hierfür muss man dann die “Device Hints” bemühen (/boot/device.hints).

Ferner werden Anwendungen, wie Firefox zum Beispiel, nicht erkennen, dass nun ein anderes Gerät zur Ausgabe verwendet werden soll. Das könnte man als “Fehler” werten; aber auch nur, wenn man nicht weiß, warum. ;-) Jedes Gerät hat andere Eigenschaften. Schaltet man nun im Hintergrund das Gerät um, so weiß die Anwendung davon oftmals nichts; die Einstellungen wird bei Start der Anwendung eben einmalig ermittelt und dann genutzt. Verwendet man Hilfsmittel wie “PulseAudio”, so stellt diese eine “Zwischenscheit” dar, die ein einheitlich Schnittstelle abbilden. Das hat Vorteile, aber für Puristen geht das natürlich nicht; da zieht ohnehin eher das Hintergrundwissen, als die Bequemlichkeit. :-D

Tipp

Sollte man sich nicht ganz sicher sein, bei der Wahl des richtigen Audiogerätes, so kann über /dev/sndstat durchaus etwas mehr Information eingeholt werden.

sudo sysctl hw.snd.verbose=3

Der Wert kann zwischen “0” und “4” variieren und zeigt jeweils auf die Detailtiefe.