Audio por HDMI en HTPC Linux

HTPC y Televisión

HTPC y Televisión

Desde que recibí mi flamante HTPC con Linux he pasado (y sigo pasando) un calvario para conseguir que funcione correctamente el Audio por la conexión HDMI con la televisión, tanto en el escritorio como en el XBMC y en el MythTV. Cuando pensaba que ya casi lo tenía ‘domesticado’ llegó una actualización de seguridad del Kernel Linux, y al instalarla todo se volvió a desconfigurar, así que ha llegado el momento de escribir este post que me sirva como recordatorio y si además le sirve a alguien más, mejor que mejor.

El HTPC viene con MythUbuntu instalado (una variación de Ubuntu especializada para multimedia) y escritorio XFCE, pero en otras distros el proceso será similar. Vamos allá:

Los drivers de audio:

En Linux los drivers de audio nos los proporciona ALSA, y en concreto, para que funcione la salida por HDMI, se necesita una versión 1.0.20 o superior. A día de hoy la versión que llega instalada en casi todas las distros es superior a la 1.0.20, así que lo más probables es que esta parte te la puedas saltar.  Para saber la versión que tenemos escribimos en un terminal:

$cat /proc/asound/version

Lo que en mi caso da una salida como esta:

Advanced Linux Sound Architecture Driver Version 1.0.20.
Compiled on Sep 6 2009 for kernel 2.6.28-15-generic (SMP).

Si no lo tienes instalado o tu versión es anterior conviene que actualices. Para actualizar en UbuntuForums han puesto a disposición de sus usuarios registrados (el registro es libre y gratuito) un script que se encarga de hacerlo todo por ti.
Descarga desde aquí el Script (está al final de la página), descomprímelo y ejecútalo. Para hacerlo, desde un terminal:

cd Directorio-donde-lo-has-descargado
tar xvf AlsaUpgrade-1.0.x-rev-1.17.tar
sudo ./AlsaUpgrade-1.0.x-rev-1.17.sh -di

15 minutos más tarde (aproximadamente) terminará y volverás a tener el control del terminal. Reinicia el PC y listo.

Importante: después de una actualización de Kernel, el Sistema Operativo no me detectaba ninguna tarjeta de sonido, y he conseguido que vuelva a funcionar reinstalado ALSA, así que ya sabes, si estás sin tarjeta de sonido después de actualizar el Kernel, te tocará reinstalar ALSA, al menos mientras necesitemos una versión de ALSA superior a la que está en los repositorios.

Configurando ALSA:

Lo siguiente que haremos es un poco de trabajo de configuración. Lo primero es saber dónde está nuestra salida HDMI de audio.
En un terminal teclea lo siguiente:

$aplay -l

Lo que nos dará una salida similar a esta:

**** List of PLAYBACK Hardware Devices ****
card 0: NVidia [HDA NVidia], device 0: ALC1200 Analog [ALC1200 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: NVidia [HDA NVidia], device 1: ALC1200 Digital [ALC1200 Digital]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: NVidia [HDA NVidia], device 3: NVIDIA HDMI [NVIDIA HDMI]
Subdevices: 1/1
Subdevice #0: subdevice #0

Si os fijáis, en mi caso, la salida HDMI se llama “NVIDIA HDMI”, y está en la tarjeta 0, device (dispositivo) = 3 y subdevice (subdispositivo) = 0. Recordad estos datos porque con ellos tendréis que ir configurando los programas que generan salidas de audio.

Lo siguiente es configurar la salida de audio por defecto cuando no se indique otra, esta será la que utilice, por ejemplo, el plugin flash en Firefox:
En un terminal:

$ sudo gedit /usr/share/alsa/alsa.conf

Y en el editor buscamos, por la parte del final, las opciones por defecto y las ponemos los valores que acabamos de sacar del aplay -l:

defaults.pcm.card 0
defaults.pcm.device 3
defaults.pcm.subdevice 0

Otra posibilidad para conseguir esto mismo (fijar la tarjeta de sonido por defecto) es crear o editar si existe un fichero llamada asound.conf en el directorio /etc

$sudo gedit /etc/asound.conf

Y pegar en el contenido lo siguiente:

pcm.!default {
type hw
card 0
device 3
}
pcm.!default {
type plug
slave.pcm "hw:0,3"
}

Ahora ejecuta alsamixer u otra aplicación gráfica que te permita configurar Alsa y asegúrate de que todos los controles están activos (que no están en mute) y que el volumen no está a cero. En concreto, presta especial atención a uno que se llama IEC958-1. En alsamixer, si algún control tiene la letra “M” por debajo quiere decir que está en mute, para reactivarlo pulsa en tu teclado la lera M cuando estés sobre él.

Por último repasa tus reproductores multimedia como cuentan en Digital Out, asegurándote de que están configurados para utilizar la salida de audio correcta:

  • Mplayer poner ‘-ao alsa:device=plughw=0.3’ (ojo, lo que hay entre el 0 y el 3 es un punto, no una coma)
  • XMMS: Preferences->Audio I/O Plugins->Output Plugin escoge ALSA, y después configura el dispositivo de audio a ‘plughw:0,3’
  • MythTV configúralo en Utilities/Setup->Setup->General, en la tercera página, teclea ‘ALSA:plughw:0,3’ en Dispositivo de salida de Audio
  • xine: en la pestaña de Audio en configuración pon todas las salida a ‘pcm.plughw:0,3’ y el devier de audio con ALSA.
  • XBMC. En la configuración de audio escoge “dispositivo personalizado” y escribe como dispositivo plughw:0,3 tanto en salida HDMI como en Passthrough.

Y con esto yo lo he conseguido, si voy haciendo más descubrimientos que aporten algo los iré dejando aquí, porque por ejemplo, ahora mismo hay vídeos, con determinada calidad de audio (los de la web de National Geographic por ejemplo) que me siguen dando problemas de configuración.

Enlaces interesantes sobre el tema:

Anuncios

21 comentarios en “Audio por HDMI en HTPC Linux

  1. Pingback: Bitacoras.com
  2. Gracias, esto es divertido todavía no he terminado yo la entrada que te prometí sobre el tema y tienes tu una mejor. Así que creo que no la publicaré, pondré un enlace a ésta.

    Ya tengo el Youtube oyéndose bien, al final he reinstalado todo, y e puesto los drivers de nVidia 1.9 y el alsa 1.0.20 y ya tengo el HDMI como salida estándar.

    Saludos

    • Está costando la verdad, un HTPC ahora mismo dista mucho de ser un electrodoméstico que es más o menos la idea que me había hecho yo antes de comprarlo, pero una vez conseguido recompensa, cambia totalmente la percepción que tenía sobre la televisión: de ser algo pasivo y aburrido a una nueva manera en la que yo elijo qué quiero ver cada día y lo hago con comodidad

  3. Hola gracias por dejar sus experiencias, yo deverdad que puse mi Ubunto en una PC que ya estaba por regalarla tiene una placa PC chip y sonido incorporado y la verdad que me he metido a Ubuntu porque casualidad, antes era un full windola pero me dí cuenta que por aca la cosa esta mejor aunque he tenido algunos problemas, debo reconocer que para usurios comunes y corrientes aun le vas a costar ya que aqui la mayoría de cosas aun se hacen via comando, scrip, sudos, root es todo nuevo. yo he instalado varias veces Ubunto y cuando uno quiere tenerlo como antes pues a buscar todo de nuevo. MI PROBLEMA: todo estaba de maravilla hasta que ahora no tengo sonido no escucho nada pero el sonido esta instalado porque me aparece habilitado, he reiniciado el sonido como el PC pero nada, antes recuerdo que tenía sonido porque cada vez que prendia el pc me aparecía el UBuntu leyendome todo lo que tocaba con el mouse como un robot OTRO PROBLEMA QUE NUNCA SUPE PORQUE SALÍA, y yo nunca le di al ubunto ese permiso y me parece que es por eso que por momentos se bloqueaba la PC y tenía que reiniciar hasta que me di cuenta que había un proceso bloqueado y lo mataba y el PC volvia a su normal.

  4. Pingback: ¿Como conseguiremos las series en el futuro? « Mente Poleo
  5. Pingback: Sonido por HDMI y Linux | Al otro lado del mostrador
  6. disculpad porque a lo mejor es totalmente offtopic, pero desde que he actualizado a Karmic cada vez que arranca el ordenador el sonido está en mute, tengo que ir a un dispositivo de control de volumen (alsamixer o uno gráfico) y desmarcar el mute y subir el volumen que siempre está al mínimo, ¿alguien sabe a que puede deberse?

  7. Hola Dondado,

    magnífico manual.

    Lo estuve probando ayer pero no he conseguido sacar el sonido por HDMI.

    Tengo una duda respecto al subdevice.
    En mi tarjeta ATI pone:

    card: 1
    device: 3
    subdevice: 0/1 ¿Cómo tengo que interpretar esto? ¿-1, 0 o 1?

    ¿Hay que reiniciar cada vez que cambia el alsa.conf o simplemente guardando debería coger bien la salida hdmi?

    Saludos.

    • En lo del subdevice no te sé ayudar, nunca me ha pasado, a ojo, y sin saber bien de lo que hablo, yo diría que puede ser que el subdevice exista pero no está activo, pero ya te digo que no sé bien qué es eso.
      En cuanto al segundo punto: no hay que reiniciar después de cada cambio de alsa.conf, los cambios los coge en caliente, y menos mal, con la cantidad de pruebas que hice en su día me habría hecho viejecito antes de tenerlo funcionando 😉

  8. muchas gracias tu post me ha servido para tener sonido en la tele :D, pero lo que no consigo es sacar el audio por flash (10.0), estoy usando karmic e hice tu segunda opción para ponerlos por defecto.

    Probé a reinstalar flash pero eso no me sirvió.

    • Yo ya actualicé a Karmic y me sigue funcionando. Flash en firefox utiliza el dispositivo por defecto, así que asegúrate de estar poniendo bien el card+device+subdevice. Si la opción del asound.conf no te ha funcionado prueba con el /usr/share/alsa/alsa.conf debería funcionarte igual de bien

      • @dondado, Gracias, también probé eso pero me quedé totalmente sin sonido, ya que aunque “aplay -l” me daba esto:
        **** Lista de PLAYBACK dispositivos hardware ****
        tarjeta 0: Intel [HDA Intel], dispositivo 0: ALC888 Analog [ALC888 Analog]
        Subdispositivos: 1/1
        Subdispositivo #0: subdevice #0
        tarjeta 0: Intel [HDA Intel], dispositivo 1: ALC888 Digital [ALC888 Digital]
        Subdispositivos: 0/1
        Subdispositivo #0: subdevice #0
        ——————
        Al final poniendo que la tarjeta era 1 me ha funcionado, sino llego a solucionar esto me hubiese obligado a tener que usar Windows :s (tengo más gente que usan el ordenador y esto era imprescindible)

      • @Netzah, según ese listado de aplay no tienes salida HDMI por lo que efectivamente tendrías que sacarlo por alguno de los otros dispositivos, el 0 o el 1 según si la salida es de audio digital o audio analógico.
        Si realmente tienes salida HDMI es que tienes un problema con los drivers de la tarjeta

  9. Tenemos un ordenador con una tarjeta de audio nVidia Corporation MCP73 High Definition Audio y la necesidad de utilizar la salida HDMI tanto para vídeo como para audio.

    Trabajamos con la Ubuntu 10.04 y nos era imposible hacer funcionar el audio con pulse, así dimos con esta página que nos abrió el camino de la solución.

    Efectivamente con la modificación de /etc/asound.conf en la manera que aquí se refiere teníamos audio y vídeo, pero el audio sólo podía ser de 48000 Hz. y sin embargo existen multitud películas o canciones a 44100 Hz u otras ratios.

    La solución definitiva la encontramos en la página

    http://wiki.xbmc.org/index.php?title=HOW-TO_set_up_audio_over_HDMI_on_nVidia_GeForce/nForce_controller

    Con las indicaciones que se indican y adecuándolas a nuestras necesidades construimos el /etc/asound.conf que sigue:

    pcm.!default {
    type hw
    card 0
    device 3
    }

    pcm.dmixer {
    type dmix
    ipc_key 1024
    ipc_key_add_uid false
    ipc_perm 0660
    slave {
    pcm “hw:0,3”
    rate 48000
    channels 2
    format S32_LE
    period_time 0
    period_size 1024
    buffer_time 0
    buffer_size 4096
    }
    }

    pcm.!default {
    type plug
    slave.pcm “dmixer”
    }

    Aquí lo pongo para seguir aportando.

    Saludos.

    • @marte, muchísimas gracias, en cuanto tenga un rato lo pruebo porque si es cierto que tengo problemas con algunos ratios de audio. Un saludo y gracias.

Los comentarios están cerrados.