Algo que me había quedado pendiente luego de instalar FreeBSD era hacer funcionar los auriculares en el jack del panel frontal de audio de mi gabinete. Algo que anteriormente funcionaba perfectamente en Linux. La solución es bastante simple y consiste en setear correctamente el dispositivo de salida por defecto en el kernel de FreeBSD.



El problema era que el sonido funcionaba perfectamente conectando los auriculares (headphones) en el jack posterior (salida de audio analógica por defecto), pero no al conectarlos en el jack frontal (salida para auriculares). Esta es la salida que traen muchas placas de sonido para conectar un jack en el frente del gabinete de las computadoras de escritorio, se utilizan típicamente para auriculares.

Al jugar con los niveles de KMix, logré hacer que el sonido funcione pero a un volumen extremadamente bajo y con ruido. Supongo que producido por ruido eléctrico en una entrada de micrófono. Sin embargo estaba lejos de ser la solución, sólo me sirvió para comprobar que se podía sacar algo por ese jack.

Además, en la cola de mensajes del kernel se observaba que el mismo detectaba correctamente tanto la placa de sonido como todos sus componentes:

root@hal9000:/usr/home/emi # dmesg | grep pcm
pcm0: <Realtek ALC892 (Rear Analog 5.1/2.0)> at nid 20,22,21 and 24,26 on hdaa0
pcm1: <Realtek ALC892 (Analog)> at nid 23 and 25 on hdaa0
pcm2: <Realtek ALC892 (Front Analog Headphones)> at nid 27 on hdaa0
pcm3: <Realtek ALC892 (Rear Digital)> at nid 30 on hdaa0
pcm4: <Realtek ALC892 (Onboard Digital)> at nid 17 on hdaa0

La solución a este inconveniente la encontré en el handbook, como de costumbre. El problema se debe a que no está seteada correctamente la salida de audio por defecto, algo que se debe hacer a nivel kernel. Para comprobar ésto se puede recurrir al pseudo-dispositivo /dev/sndstat, perteneciente al driver del dispositivo de audio PCM del kernel de FreeBSD:

root@hal9000:/usr/home/emi # cat /dev/sndstat
Installed devices:
pcm0: <Realtek ALC892 (Rear Analog 5.1/2.0)> (play/rec) default
pcm1: <Realtek ALC892 (Analog)> (play/rec)
pcm2: <Realtek ALC892 (Front Analog Headphones)> (play)
pcm3: <Realtek ALC892 (Rear Digital)> (play)
pcm4: <Realtek ALC892 (Onboard Digital)> (play)
No devices installed from userspace.

Este dispositivo presenta el estado actual de todos los controladores y canales PCM. Se observa que el dispositivo por defecto ("default") es la salida analógica trasera, por ello funciona el audio al conectar los auriculares en el jack posterior.

En este caso deseo que el sonido salga por defecto por el dispositivo pcm2, correspondiente al jack frontal.

Para cambiar el dispositivo por defecto se debe alterar la variable del kernel hw.snd.default_unit. El valor a setear corresponde al índice de dispositivo, en este caso 2:

root@hal9000:/usr/home/emi # sysctl hw.snd.default_unit=2
hw.snd.default_unit: 0 -> 2

Inmediatamente el sonido comienza a funcionar :D

Para establecer esta configuración por defecto, agregar la línea hw.snd.default_unit=2 dentro del archivo /etc/sysctl.conf.

Referencias


Tal vez pueda interesarte


Compartí este artículo