Audio por HDMI en HTPC Linux

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. 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:
1. cd Directorio-donde-lo-has-descargado
2. tar xvf AlsaUpgrade-1.0.x-rev-1.17.tar
3. 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.
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.
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:
Entradas relacionadas
Si te ha gustado el post, tal vez quieras dejar un comentario o subscribirte al feed RSS y recibir futuras actualizaciones en tu lector de feeds.


Información Bitacoras.com…
Valora en Bitacoras.com: No hay resumen disponible para esta anotación…
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
dondado, respondió el 10 septiembre 2009 @ 21:12 :
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
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.
[...] ¿Entonces? Bueno, me refería a comunidades restringidas de usuarios, grupos de amigos que siguen series comunes y que se organizan en un blog, por ejemplo, para distribuirse los links. Ocultar los blogs en los buscadores es relativamente sencillo y no habría problemas. Los usuarios pertenecerían a varios grupos, unos de acceso más privilegiado y otros de menor, a los que les trasladaría los enlaces: por ejemplo, en un blog de una serie concreta conseguiría el enlace y lo copiaría en el blog familiar. El “salto” de los enlaces entre los micrositios harían llegar, potencialmente, los enlaces a todos aquellos que los deseen, pero, con un cierto retraso frente al sistema actual en los que todos leen de fuentes “públicas”. Tiempo suficiente para que no te merezca la pena bajarte Flashforward, ya que en dos o tres semanas, la emiten en abierto: bien para las productoras y bien para los usuarios, que consiguen el producto por la vía tradicional en un tiempo justificado. Eh! que bajarse las series, comparado con verlas directamente en la tele, es un coñazo. Y los HTPC no son para “el público general” [...]
[...] Me quedé con las ganas de preparar un tuturial sobre el tema. Pero no lo llegué ha hacer, porque otro habitual del blog se nos adelantó y puso en limpio y bonito la solución del problema. Así que si alguien tiene problemas activando la salida del HDMI por Linux, que siga esta excelente guía de Dondado. [...]
Funcionó de maravilla!
dondado, respondió el 24 noviembre 2009 @ 19:29 :
Me alegro de que te haya servido. En Linux ya se sabe, compartir es aprender
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?
dondado, respondió el 24 noviembre 2009 @ 19:16 :
A mi también me pasa, pero pensé que era cosa mía por algunas cosas raras que tengo en la configuración de Audio. Si doy con ello ya te lo contaré y lo pongo por aquí o en otro post si es que merece la pena
dondado, respondió el 24 noviembre 2009 @ 19:21 :
No lo he probado, pero parece que aquí tienen la solución al problema del sonido silenciado al arrancar: http://ubuntu-ky.ubuntuforums.org/showthread.php?p=8309768
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.
dondado, respondió el 31 diciembre 2009 @ 8:33 :
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
muchas gracias tu post me ha servido para tener sonido en la tele
, 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ó.
dondado, respondió el 28 febrero 2010 @ 0:31 :
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
Netzah, respondió el 28 febrero 2010 @ 14:53 :
@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)
dondado, respondió el 4 marzo 2010 @ 0:16 :
@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
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.
dondado, respondió el 6 julio 2010 @ 20:17 :
@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.
Gracias, me funcionó a la perfección.