Cómo reparar la pérdida de audio por HDMI en Linux usando PipeWire
En distribuciones Linux modernas con PipeWire, es habitual que al conectar un monitor por HDMI o DisplayPort, el sistema no emita sonido o el dispositivo no aparezca en la lista de salidas de audio. Esto ocurre cuando el gestor de sesiones WirePlumber no activa automáticamente la salida digital de la tarjeta gráfica o el subsistema ALSA mantiene el endpoint en estado suspendido.
El Diagnóstico Rápido
pactl o pavucontrolsystemctl --user restart pipewire pipewire-pulse wireplumberEn distribuciones Linux modernas con PipeWire, es habitual que al conectar un monitor por HDMI o DisplayPort, el sistema no emita sonido o el dispositivo no aparezca en la lista de salidas de audio. Esto ocurre cuando el gestor de sesiones WirePlumber no activa automáticamente la salida digital de la tarjeta gráfica o el subsistema ALSA mantiene el endpoint en estado suspendido.
La Solución Paso a Paso
Paso 1: Reiniciar los servicios de usuario de PipeWire y WirePlumber
Reinicia los daemons de audio para forzar un re-escaneo de todos los dispositivos conectados por hardware:
# Reiniciar el stack de audio PipeWire para la sesión de usuario actual
systemctl --user restart pipewire pipewire-pulse wireplumber
# Verificar que todos los servicios estén activos (active/running)
systemctl --user status pipewire wireplumber --no-pager
Paso 2: Listar tarjetas de audio y activar el perfil HDMI correcto
Identifica el identificador de la tarjeta gráfica y cambia su perfil a estéreo digital:
# Listar todas las tarjetas de audio y sus perfiles disponibles
pactl list cards
# Forzar el perfil Digital Stereo HDMI (reemplaza <numero_tarjeta> y <perfil_hdmi>)
# Ejemplo: pactl set-card-profile alsa_card.pci-0000_01_00.1 output:hdmi-stereo
pactl set-card-profile 0 output:hdmi-stereo
Paso 3: Desmutear canales HDMI mediante ALSAmixer
En ocasiones, el driver del kernel ALSA silencia la salida digital por defecto:
-
1
Paso 1
Ejecutaalsamixeren tu terminal. -
2
Paso 2
PresionaF6y selecciona tu tarjeta gráfica (HDA NVidia / HDA ATI / Intel HDMI). -
3
Paso 3
Desplázate hasta las salidas S/PDIF o HDMI. -
4
Paso 4
Si aparecen con las letrasMM(Mute), presiona la teclaMpara desmutearlas (cambiarán a00).
Paso 4: Establecer el sink de salida HDMI como predeterminado
Asegura que las aplicaciones dirijan su flujo de audio al endpoint HDMI:
# Listar los sinks (salidas) disponibles
pactl list short sinks
# Establecer la salida HDMI como predeterminada
pactl set-default-sink alsa_output.pci-0000_01_00.1.hdmi-stereo
❓ Preguntas Frecuentes (FAQ)
¿Por qué mi televisor HDMI se desconecta al suspender el equipo?
Las pantallas HDMI suspenden su receptor de audio al entrar en reposo. Para forzar a PipeWire a mantener el enlace abierto, desactiva el autosuspend de ALSA en las configuraciones de WirePlumber.
¿Cómo pruebo el sonido desde la terminal?
Ejecuta: speaker-test -t wav -c 2 para comprobar la reproducción estéreo directa en los altavoces.
Consejo de Prevención
Prácticas de seguridad recomendadas:
- No instales pulseaudio junto con pipewire-pulse: Tener ambos paquetes instalados genera condiciones de carrera (race conditions) en el puerto de control de audio.
- Mantén actualizadas las reglas de WirePlumber: En
~/.config/wireplumber/puedes definir reglas personalizadas para fijar el perfil HDMI cada vez que se detecte una pantalla externa.