sábado, 6 de febrero de 2016

Volumio en Raspberry Pi: solucionando los problemas de reproducción por HDMI

Tras la reciente llegada a casa de una Raspberry Pi 2, mi equipo principal ha quedado configurado definitivamente (bueno, todo lo definitivas que son estas cosas, que ya nos conocemos) por lo que hace a fuentes digitales del siguiente modo:
  • Oppo 93 para la reproducción cada vez más ocasional de discos físicos y Netflix, configurado este último para acceder al catálogo americano del servicio dejando el cliente de Netflix de la TV para la programación disponible localmente.
  • Squeezebox Touch como reproductor de audio de cabecera.
  • Raspberry Pi 2 con OSMC para ver pelis desmaterializadas, los podcasts de Radio 3 (fundamentalmente) y el audio multicanal.
Más o menos algo así como lo que se puede ver en la imagen justo aquí a la derecha.

Sin embargo algo fallaba. Aunque es posible escuchar Spotify usando el Squeezebox Touch, lo cierto es que resulta mucho más cómodo utilizar la app en la tableta. Hasta iOS 9 esto estaba chupado con Kodi / OpenELEC / OSMC, que aparecían en el conocido panel inferior presente en todo dispositivo iOS como altavoces Airplay. Un par de movimientos del dedito y la cosa estaba resuelta. Sin embargo, desde esta actualización del sistema operativo de las i-cosas portátiles, Airplay está roto.

Tras varios intentos infructuosos de hacerme con un AppleTV 3 a precios razonables, finalmente he optado por buscar una solución temporal poniendo en servicio de nuevo una Raspberry Pi que, con la llegada de su hermana mayor, había quedado sin uso.

En concreto he valorado 3 reproductores para Raspberry: Pi Music Box, Rune Audio y Volumio. Todos ellos son capaces de recibir audio a través de Airplay y ¡sorpresa! todos ellos parecen haberse adaptado a las diabluras de Apple puesto que en todos sigue funcionando esta característica aunque la i-cosa empleada corra ya iOS 9.x. Estupendo.

Puesto que Volumio parece el proyecto más activo me he decantado por él, aunque como digo de entrada solo estaba interesado en montar un receptor Airplay no-Apple.


Las instrucciones de descarga e instalación de Volumio están perfectamente documentadas en su web:


Como mi receptor AV tiene activada toda la artillería de procesado de señales, para mi el modo natural de conectarle cosas es por vía digital. En el caso de las Raspberries lo más inmediato es utilizar la conexión HDMI 1.3, capaz de transportar audio 7.1 en 192/24. No obstante, una vez alojada ya la RPi 1 junto a su hermana en el cajón de los trastos me he encontrado con 2 problemas. Uno de ellos, además, importante. Veamos cuáles son.
  1. El audio por HDMI está amplificado digitalmente unos 4dB. Esto hace que si se reproduce alguna pista pasada de loudness(relativamente frecuente en Spotify), los altavoces saturen. Muy feo.
  2. Animado por lo chulo que es Volumio, he probado también a reproducir audio desde un NAS. Sorpresa. Todo se remuestrea a 44 o 48 Khz (no he tenido la paciencia de determinarlo con exactitud).
Inicialmente he pensado que el problema debía proceder del mezclador de Volumio, pero su desactivación no ha causado el menor efecto en mi caso.



El segundo problema (remuestreo a la baja) tenía peor pinta. Es cierto que si se utiliza Volumio exclusivamente como destino Airplay esto no tiene importancia dado que este último remuestrea incondicionalmente a 48 Khz todo flujo de audio que transporta, pero ya metidos en harina había que investigar un poquito más.

La solución definitiva la he hallado en los foros de Volumio. Un aguerrido usuario ha encontrado el modo de resolver nuestro segundo problema y, de propina, el primero. La estrategia de choque pasa básicamente por instalar un kernel modificado sobre el que viene de serie con Volumio. Aunque las instrucciones están más o menos desparramadas en este hilo, me permito resumirlas aquí en román paladín con alguna que otra aportación de mi cosecha para facilitar el proceso.


1. Descargar los archivos modificados:



2. Transferir los archivos a la Raspberry

Esto tiene que hacerse empleando el protocolo SSH.

Si usamos un PC con Linux o un Mac bastará con abrir la interfaz de comandos, situarnos en la carpeta donde hemos descargado los archivos anteriores y teclear el comando:

scp boot-3.18.11+.tgz modules-3.18.11+.tgz root@volumio.local:/

El nombre de anfitrión volumio.local puede ser sustituido por la IP de la RPi que corre Volumio en caso de problemas, aunque en condiciones normales el primero debería resolverse correctamente. La contraseña que se nos solicitará para establecer la conexión es volumio.

Si empleamos un PC con Windows, mejor será que nos procuremos cuanto antes dos estupendas aplicaciones que nos vendrán de perlas para completar el proceso, WinSCP y PuTTY. WinSCP ofrece una interfaz gráfica similar a la de cualquier cliente de transferencia de archivos mediante FTP pero realmente funciona sobre SSH. PuTTY lo emplearemos más adelante para instalar los archivos descargados en nuestra Raspberry.


Tras instalar WinSCP solo hay que ejecutarlo e introducir los datos de conexión hacia Volumio en nuestra RPi. Nuevamente, se puede emplear la IP o el nombre de anfitrión. La contraseña que nos pedirá el sistema será también, lógicamente, la indicada unas líneas más arriba (volumio).


La primera vez que conectemos será necesario autorizar explícitamente la comunicación entre nuestro ordenador y Volumio en la RPi.


...para, tras conectar, copiar los archivos a (por ejemplo) la carpeta raíz de la SD de Volumio.



3. Desempaquetar el nuevo kernel y archivos relacionados

Otra vez echaremos mano de SSH, pero en esta ocasión personificado en una terminal de comandos remota.

Linux & Mac: invocaremos nuevamente la línea de comandos y teclearemos la siguiente instrucción:

ssh -l root volumio.local

Windows: Aquí emplearemos PuTTY, en el que de un modo análogo a como hicimos con WinSCP estableceremos una conexión de tipo SSH con Volumio.



En ambos casos (Linux / Mac o Windows), introduciremos la clave que se nos solicita para completar la conexión (volumio), con lo que tendremos bajo las órdenes de nuestros dedos el entorno Linux de Volumio en la Raspberry...


...para a continuación teclear los comandos:

cd /
tar xvzf boot-3.18.11+.tgz
tar xvzf modules-3.18.11+.tgz

Los 2 últimos probablemente se tomarán su tiempo, especialmente si hacéis esto en una RPi 1. Ambos comandos tar descomprimirán los paquetes descargados y sobreescribirán los archivos de Volumio que deban ser sustituidos para mejorar las prestaciones de la salida de audio a través de HDMI.

Cuando aparezca nuevamente el cursor parpadeante reiniciaremos Volumio tecleando:

reboot

Y con esto queda completado el proceso.

Tengo que decir que Volumio es un reproductor extremadamente parco, ni tan siquiera se muestran las carátulas al navegar utilizando la interfaz de control, que es de tipo web. No obstante funciona extremadamente bien, máxime si se tiene en cuenta el hardware sobre el que corre, y ofrece prestaciones interesantes tales como un modo de reproducción desde RAM, compatibilidad con Spotify, reproducción de DSD vía DoP, exploración en modo biblioteca o por carpetas, un modo muy práctico de acceder a los recursos de audio que gestiona a través de la red, Airplay (como ya sabemos), UPnP, etc. etc. No conviene olvidar que su corazón no es otro que un peso pesado como es el conocido Music Player Daemon (MPD).

Confío en que esto de usar 2 Raspberries sea algo temporal puesto que eventualmente Airplay volverá a ser operativo en Kodi y sus derivados en cuanto los desarrolladores apliquen los parches correspondientes. Por el momento ambas frambuesas comparten cajón bajo televisión y amplificador.



 





5 comentarios :

Unknown dijo...

Hola amigo. Soy el abuelo (76 años) tecnólogo familiar. Mis aficiones son la montaña, la música y la lectura.
Últimamente he tenido que dejar la montaña (solo doy paseos) y estoy dedicando más tiempo a la música. He conseguido instalar Volumio en RPi y oigo radios y archivos de música ubicados en un USB conectado Rpi.
Sin embargo no consigo añadir (Mi música>Unidades de red) archivos de mi PC local (estoy gestionando volumio desde este PC conectado al router por cable ethernet), tampoco de mi NAS (conectado al PC por cable ethernet). He repasado tus dos artículos sobre el tema, pero soy incapaz de encontrar la solución.
Perdona mi atrevimiento y, en cualquier caso, gracias.
FJE

Pablo Felip dijo...

Hola, Javier.

Volumio puede explorar unidades de almacenamiento compartidas en tu red local a través de dos protocolos: smb y nfs. El primero es ampliamente utilizado tanto en sistemas Windows, Mac, Linux como dispositivos de tipo NAS. No sé muy bien lo familiarizado que estás con estas cuestiones, pero doy por sentado que si tienes un NAS en casa sí es el caso. ¿En qué punto te encuentras? ¿Has compartido recursos en red desde tu PC o NAS y Volumio no los ve? ¿O la dificultad te surge al compartir precisamente las carpetas con los archivos de audio? ¿Qué sistema operativo y modelo de NAS empleas?

Si lo prefieres podemos seguir comentado al respecto en privado. Puedes acceder a mi perfil de Google+ (en el panel lateral del blog) y enviarme una invitación para conversar a través de Hangouts; de ahí podemos pasar fácilmente al email.

Un saludo.

Unknown dijo...

Gracias. He ido a tu perfil y te he enviado un mensaje por Hangoutus (pero no estoy seguro de haberlo hecho bien). Utilizo un NAS Synology, pero lo que intento es acceder a mis archivos de música en el PC principal (conectado por cable Ethernet). Este PC lo utilizo con JRiver conectado vía USB a un DAC DENON PMA-50.
Lo que pretendo es escuchar música sin el ruido de fondo del ventilador del PC. También pretendo aprender cosas nuevas (me da alergia el hogar de jubilados de mi pueblo)

Pablo Felip dijo...

Hola, Javier. Recibido. Seguimos por privado.

Ivan Bolancer Turrillo dijo...

Vaya!! Es justo mi problema... Si podéis poner la solusolu final?