Ubuntu Peronista@TTBP

Este es un espejo en el Tilde Blog Project del blog original Ubuntu Peronista. Se encuentra disponible en Tildeverso únicamente con fin histórico.



24 october 2022

¿Cómo corrijo el sonido del Realtek ALC892 en Ubuntu 20.04LTS?

¡Descamisados!

Siempre he dicho que llevo en mis oídos la más maravillosa música, que es para mí la palabra del Pueblo Argentino.

Pero esto es así porque uso auriculares y software para escuchar música liberaedo bajo Licencia GPLv3 .

El camino de la Liberación no es ajeno a los escollos y al barro. Quien no lo comprenda, tenderá a fracasar. Es un verdadero Conductor aquél que aprende a superar las lides y determinar con su acción luminosa el sendero que los demás habrán de seguir.

Pues bien señores, en Ubuntu Mate 20.04LTS Focal Fossa, un inconveniente nublaba mi día peronista. Al reproducir audio de cualquier tipo, y tras detener la reproducción, notaba que a los pocos instantes comenzaban a oírse a través de los cascos una serie de sonidos intermitentes o clics, similares a los que se obtienen cuando se conecta un audífono cuando los altavoces están encendidos. Al producirse aproximadamente cada medio segundo, se hacía algo extremadamente molesto.

Asimismo, podía notarse en repetidas ocasiones "saltos" en el control de volumen, sobre todo cuando se alcanzaba un "pico" en el sonido. Esto se producía ya sea en la terminal (ya sea con los controles de volúmen pulsemixer o el Alsamixer) o en el control gráfico de Ubuntu. Notablemente, se hizo totalmente inefectivo el control de "automute" de Alsamixer.

Un problema de este tipo requiere una acción decidida, y para solucionar estos "pop-pop-pops" no cardíacos habremos recurrir a una acción de conjunto, que es la manera en la cual deben hacerse las cosas.

En primer lugar es definir qué dispositivo de audio es el que tenemos instalado en nuestro sistema. Esto es así porque la mayoría de las veces, se utilizan meros "chipsets" integrados en la placa madre, en lugar de las añoradas plaquetas de sonido.

Para ello abrimos una terminal con Ctrl+Alt+t y nos informámos de qué módulo de audio está cargado en memoria. Ello lo haremos con:

cat /proc/asound/modules

En este caso, se nos informa que es el inefable snd_hda_intel, empleado por multitud de dispositivos de audio integrado diferentes. También podríamos chequear el nombre técnico del dispositivo para el sistema con:

lspci | grep Audio

00:1b.0 Audio device: Intel Corporation 5 Series/3400 Series Chipset High Definition Audio (rev 06)

En este caso he logrado rastrear al culpable de los "saltos" y "pops": se trata de la rutina de ahorro de energía del controlador de sonido snd_hda_intel, el cual parecería intentar apagar y reencender las salidas de audio, con el molesto resultado que os he descripto anteriormente.

Es posible modificar a mano la configuración de la funcionalidad de ahorro energético para que no haga el "latido intermitente", modificando el archivo /sys/module/snd_hda_intel/parameters/power_save. Siendo un fichero "binario", el mismo contiene un simple 1 si la funcionalidad de ahorro de energía está activada, o un 0 si la misma está apagada. Siguiendo este camino, bien podríamos resolver el problema ingresando en nuestra terminal el siguiente Comando de Organización:

sudo echo > 0 /sys/module/snd_hda_intel/parameters/power_save

...y tras ingresar nuestra contraseña de conductor, la función de ahorro de energía debería desactivarse.

Ahora bien, esto nos sirve para comprobar que esta es la causa del problema. La solución sólo funcionará hasta reiniciar el sistema, momento en el cual deberemos repetir esta acción. Nuestro Movimiento debe buscar soluciones permanentes a los problemas permanentes.

Existen varias maneras de hacerlo. La más sencilla para probar sería editar el fichero alsa-base.conf. Para ello debemos abrirlo con el editor Nano:

sudo nano /etc/modprobe.d/alsa-base.conf

...el sistema nos solicitará nuestra contraseña, la ingresamos, y se abrirá el fichero. Debemos ir al final del mismo y pegarle el siguiente par de líneas:

Comando para que no suene pops en los auriculares:

options snd-hda-intel probe_mask=1 model=auto power_save=0 power_save_controller=N Acto seguido guardamos con Ctrl+o y salimos del editor con Ctrl+x. Debemos reiniciar el equipo, y a la vuelta, evaluar si surtió efecto. En muchas versiones de sonido Realtek debería bastar con esto.

Si no fuese el caso, podríamos probar con quitarle permisos de ejecución a la rutina de ahorro de energía para el audio Intel HD. Esto es simple de hacer, sólo basta con ingresar en la terminal el siguiente Comando de Organización.:

sudo chmod -x /usr/lib/pm-utils/power.d/intel-audio-powersave

Acto seguido volvemos a reiniciar el sistema y evaluamos si surtió efecto. debería solucionarse el problema. Si no lo hiciese, podríamos volver a otorgarle permisos de ejecución para que quede como estaba originalmente con:

sudo chmod +x /usr/lib/pm-utils/power.d/intel-audio-powersave

La tercera manera es la forma más agresiva de hacerlo. Consiste en asegurarnos que se ejecute la anulación de la funcionalidad de ahorro de energía del conector de audio que evaluamos en un principio, toda vez que inicia Ubuntu 20.04LTS Focal Fossa. Para ello no tendremos más remedio que reactivar la olvidada funcionalidad del archivo /etc/rc.local. Este se trataba de un fichero de configuración que se autoejecutaba después de dar inicio al sistema, pero antes de que el o los usuarios ingresaran a su propia sesión de trabajo. En el Ubuntu actual el fichero rc.local ya no viene activado por defecto, pero podremos activarlo como os he explicado detalladamente aquí.

Conforme hayamos realizado lo allí indicado, y comprobado el funcionamiento, podremos editar el archivo /etc/rc.local por medio del siguiente comando:

sudo nano /etc/rc.local

Esto abrirá el editor peronista GNU Nano con fichero /etc/rc.local. Para agregar el comando que desactive el ahorro de energía del controlador snd_hda_intel toda vez que se inicie el sistema, agregamos antes de la última línea - la cual siempre debe contener "exit 0" - el consabido comando:

echo 0 > /sys/module/snd_hda_intel/parameters/power_save Una vez editado, podremos guardar el archivo /etc/rc.local con Ctrl+o y salir del editor GNU Nano con Ctrl+x.

Guardamos y salimos con Ctrl+o y Ctrl+x.

Luego modificaremos el archivo default.pa de pulseaudio, para modificar la conducta de reconocimiento de auriculares. Esto es necesario opcionalmente si al superar cierto nivel en la señal de salida, nuestra placa ALC892 conmuta automáticamente de entrada o salida de audio (falla en el reconocimiento de conectores por sobrevoltaje). En tal caso, ingresamos:

sudo nano /etc/pulse/default.pa

Se abrirá dicho fichero en el editor GNU Nano. Usamos el comando buscar con Ctrl+w y buscamos la línea:

load-module module-switch-on-port-available

...Y la modificamos comentándola, anteponiéndole un signo # de manera que quede:

load-module module-switch-on-port-available

Ya realizado esta modificación en el fichero default.pa, lo guardamos mediante Ctrl+o y salimos del editor con Ctrl+x.

Luego ingresamos:

mv ~/.config/pulse/ ~/.config/pulse.old systemctl --user restart pulseaudio

Naturalmente, para que todo lo realizado surta efecto, debemos reiniciar el equipo. Podremos hacerlo desde la terminal con:

sudo reboot

Y ya tendremos sonido Realtek ALC892 sin cortes en Ubuntu. Si no fuese la solución en su adaptador de sonido en particular, podrían revertir o modificar el cambio realizado en alsa-base.conf.