Inicio » Cómo reparar la pérdida de audio por HDMI en Linux usando PipeWire
Gaming Tech

Cómo reparar la pérdida de audio por HDMI en Linux usando PipeWire

✨ Respuesta Rápida

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

Causa
Perfil de audio HDMI/DisplayPort marcado como 'Off' o no detectado por WirePlumber
Solución
Cambiar el perfil de la tarjeta de sonido a Digital Stereo (HDMI) con pactl o pavucontrol
Causa
Daemon de PipeWire bloqueado o en conflicto con ALSA/PulseAudio heredado
Solución
Reiniciar los servicios de usuario: systemctl --user restart pipewire pipewire-pulse wireplumber

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.

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:

BASH
# 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:

BASH
# 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. 1

    Paso 1

    Ejecuta alsamixer en tu terminal.
  2. 2

    Paso 2

    Presiona F6 y selecciona tu tarjeta gráfica (HDA NVidia / HDA ATI / Intel HDMI).
  3. 3

    Paso 3

    Desplázate hasta las salidas S/PDIF o HDMI.
  4. 4

    Paso 4

    Si aparecen con las letras MM (Mute), presiona la tecla M para desmutearlas (cambiarán a 00).

Paso 4: Establecer el sink de salida HDMI como predeterminado

Asegura que las aplicaciones dirijan su flujo de audio al endpoint HDMI:

BASH
# 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.