viernes, 29 de noviembre de 2013

Instalación de XBMC sobre OpenSuse: optimización y personalización

En el post anterior, dejamos nuestro XBMC en u punto en el que ya era utilizable. Ahora ha llegado el momento de hacer unas cuantas pruebas y de realizar un ajuste fino para optimizar el arranque. Además le daremos un pequeño toque de personalización para que nos de más impresión de estar ante un equipo HTPC.

Sobre tiempos de arranque

Las comparaciones son odiosas, y esta no va a ser una excepción. Tiempo atrás había estado haciendo unas cuantas pruebas con el equipo original y OpenElec. Como dije, OpenElec está muy optimizado y eso se nota también a la hora de iniciar nuestra máquina.

La prueba inicial, antes de embarcarme en todo esto, fue comparar tiempos de arranque con diferentes medios. Realmente tenía OpenElec instalado en una tarjeta microSD y después la cloné a una memoria USB bastante más rápida. Luego, por tener una primera referencia, comparé esos tiempos con los de arranque de la OpenSuse, que tenía instalada en el disco SATA de 3,5" de la misma máquina.

 Quiero aclarar que el tiempo que quise medir se corresponde con lo que el usuario percibiría como arranque, o sea, desde que se inicia el ordenador hasta que el sistema acepta la interacción con el usuario por ratón, teclado o lo que sea. Así que en el caso de OpenElec era desde que le daba al botón de alimentación hasta que presenta el menú inicial, mientras que para openSuse también comenzaba a contar con el botón de alimentación, me saltaba la espera de Grub pulsando intro y paraba cuando KDE mostraba el escritorio.

Aclarado esto, antes de ponernos con la faena y para tener más información y poder deducir más cosas, podemos averiguar la velocidad de nuestros discos. Para ello, ejecutaremos como root lo siguiente:

hdparm -t /dev/xxxx

donde xxxx podrá ser hda, sda...

En mi caso me dio por comparar unos cuantos medios que tenía a mi alcance pero, para no marear, sólo pondré los que he mencionado antes. Las velocidades de lectura fueron las siguientes:

  1. Tarjeta MicroSD: 12MB/s
  2. USB Kigston DataTraveler G2: 20MB/s
  3. Disco duro SATA 3,5": 120MB/s
Y después me puse a arrancar el mismo PC desde cada uno de los soportes y a tomar tiempos crono en mano:
  1. Arranque de OpenElec desde MicroSD: 40 segundos
  2. Arranque de OpenElec desde la memoria USB: 30 segundos
  3. Arranque de OpenSuse desde el disco: 42 segundos
Viendo esto, y teniendo en cuenta que iba a comprar un disco SATA de 2.5" donde iba a instalar una openSuse que no cargaría KDE, esperaba tener unos tiempos menores de 40 segundos.

 Tras llegarme todo el material, montarlo e instalar el sistema operativo, el tiempo de inicio era de unos 35 segundos. Para mejorarlo busqué algún artículo en el que se hablaba de cómo optimizar este tiempo modificando los servicios arrancados durante el inicio de la máquina. Así pues, lo siguiente que se puede hacer para comprobar nuestros avances, será instalar el paquete systemd-analyze.

El primer resultado que obtuve al ejecutar dicho comando fue el siguiente:

En Yast, en Servicios del Sistema, se puede desactivar aquello que no necesitemos. Yo quité sólo Postfix y CUPS

Como se puede ver en la primera linea ejecutada en la imagen mostrada a continuación, sólo mejoró unas décimas de segundo. Tendremos más pistas de lo que está sucediendo gracias a la segunda orden que aparece:

systemd-analyze blame

En este caso levantar la red resulta ser un proceso muy pesado.
Para evitar lo que acabamos de ver podremos conectarnos a la red mediante NetworkManager en vez de hacerlo con ifup en el arranque. Para ello lo cambiaremos otra vez en Yast, en el apartado de Ajustes de Red tal como se ve aquí:
 Ahora nos avisará de que necesitamos tener una aplicación que nos gestione la conexión. Aceptaremos.
 Revisamos los tiempos y vemos que se obtiene una mejora sustancial (ver en la imagen siguiente). Es cierto que sigue siendo necesario conectarse a la red, pero esa operación se realizará una vez cargado XBMC y no nos percataremos de ello.

Para conseguir lo que se acaba de comentar, es necesario instalar un Addon de XBMC para NetworkManager. Lo encontraremos en el listado de addons de programas de XBMC



Tras la instalación lo encontraremos en el menú programas y solo tendremos que configurar nuestra red.



Ahora vuelvo a referirme al tiempo crono en mano. Tras todos estos cambios el nuevo tiempo de arranque era de 29 segundos frente a los 35 iniciales. Había mejorado unos 6 segundos, no está mal, aunque supongo que será mejorable, así que cualquier idea será bienvenida :) Me gustaría ver esto mismo en un disco SSD pero, como ya dije, sacrifiqué tiempo por espacio.

Ocultar Grub

Al tratarse de un equipo dedicado a arrancar sólamente nuestro XBMC ¿por qué mostrar el menú de Grub? ¿Por qué perder unso valiosos segundos esperando a que el usuario haga una elección en el menú de arranque? No nos hace falta: vamos a ocultarlo.

Para hacer esto acudiremos como siempre a Yast. En Configuración del cargador de Arranque haremos clic sobre el botón Opciones del cargador de arranque
 Ahora simplemente marcaremos la opción Ocultar el menú en el arranque
 Gracias a esto nuestro sistema iniciará sin pausas nuestro XBMC, con lo que nos habremos ahorrado 8 segundos más. Ojo, este tiempo no lo estaba contabilizando en las referencias que estaba dando antes, así que en el ejemplo siguen siendo los 29 segundos que comentaba antes.

Un arranque más XBMC

No tengo nada en contra de la mascota de openSuse pero no me apetece ver el camaleón verde en los 30-40 segundos en los que carga el sistema, en todo caso se debería mostrar una imagen algo más integrada en el espíritu de nuestro media center. Afortunadamente alguien ya ha pensado en esto y tenemos un paquete que sustituirá al fondo por defecto: plymouth-branding-xbmc

Para bajarlo acudiremos a la web de búsqueda de paquetes, ya que no lo tendremos en ningún repositorio de nuestra máquina y no podremos instalarlo directamente.

Buscaremos el término xbmc


Escogeremos el paquete que nos interesa y se nos desplegarán las opciones. Si no hay versión estable le diremos que nos muestre las que no lo son y finalmente seleccionaremos 1 click install
 Después de esto nos eliminará el paquete  por defecto y nos añadirá el nuevo.
 No hay nada más que hacer, en el próximo reinicio nos encontraremos con una pantalla similar a esta:


Mi guerra con la temperatura

Ya dije en el otro post que adquirí dos nuevos ventiladores. Lo que no conté es que fue una compra posterior, después de ver como funcionaba el equipo recién montado. Con el ventilador original de la placa Zotac, llegaba facilmente a los 65 grados e, incluso, a los 70 en determinadas condiciones. Cuando la tuve montada en la caja anterior no era así, seguramente porque había más espacio interior. Tras el montaje de los dos nuevos ventiladores más silenciosos, y con mejor circulación de aire, la situación mejoro bastante (de 5 a 10 grados).

En todo caso, esto fue un problema mío que tal vez no interese. Lo que sí que puede interesar es lo siguiente. Todos estos valores los veía en un monitor de sistema de KDE ya que mi XBMC no me los mostraba en las pantallas de información en las que debe aparecer.

Si os ocurre esto podéis consultar este enlace y después poneros manos a la obra con el archivo de configuración. Básicamente, necesitáis hacer un script que devuelva el valor de la temperatura que debe ser mostrar tanto para la CPU como para la GPU.

Podéis ejecutar las pruebas que hagáis en un terminal de comandos hasta que os funcione adecuadamente:



después se debe crear el archivo XML que contenga la instrucción, que deberá estar en la ruta:

~./xbmc/userdata/advancedsettings.xml

Este es mi fichero, pero no tiene por qué ser válido para otros, como se puede ver, depende mucho del hardware que se tenga:

  

echo "$(nvidia-settings -c :0 -tq GPUCoreTemp | tail -n 1) C"
echo "$(sensors -u | tail -n64 | grep temp2_input | awk '{print $2 }' |awk '{printf("%d\n",$1 + 0.5);}') C"


Una vez hecho esto ya deberías ver la temperatura de la CPU (sólo mostrará un valor aunque tengáis varios cores)
 Y la temperatura del chip gráfico

Después de todo esto parece que nuestro equipo ya se está ganando un sitio en el salón de nuestra casa. En el próximo capítulo contaré como solucionar alguna de las carencias que sufriremos al no estar bajo la ayuda de KDE, por ejemplo, el manejo de dispositivos Bluetooth.

domingo, 17 de noviembre de 2013

Instalación de XBMC sobre OpenSuse

Como se puede ver por el título del post, he estado pegándome con la instalación de XBMC en un equipo con OpenSuse. No hay ningún misterio en ello, sólo elegir los paquetes a instalar y dejar que Yast haga todo el trabajo. Sin embargo quiero contar la experiencia porque hay unas particularidades que tal vez sean interesantes para otros, de hecho creo que lo haré en más de un artículo porque me parece que en uno sólo quedaría demasiado largo.

Antes de nada quiero decir que tal vez no debas seguir leyendo. Sí, te invito a que pares aquí. Si te gustan las soluciones fáciles te recomiendo que te compres un pincho HDMI Android, una Ouya o incluso que cojas un PC viejo o una Raspberry Pi y le pongas OpenElec. Realmente OpenELec es una de mis opciones favoritas por su simplicidad y su optimización. Si sólo quieres un equipo media center conectado a tu tele recomiendo decididamente esta opción.

El problema es que yo quiero pedirle algo más a este equipo, quiero instalarle OwnCloud para tener mi nube personal disponible allí donde esté, quiero administrarlo remotamente, encenderlo y apagarlo a distancia, descargar torrents, etc. Además, aprovechando que el equipo estará en el salón de la casa, le pondré un emulador de Amiga que, por supuesto, se manejará desde XBMC, Todo esto me hizo descartar la opción de usar cualquier dispositivo basado en Android e hizo que OpenElec no fuese lo más recomendable para mi.

Sobre el hardware


Por otro lado, habían una serie de factores que condicionaban cómo haría las cosas. En primer lugar quería reciclar un equipo que ya tenía, utilizando, cómo mínimo, la placa madre con su RAM. En cuando al disco duro hubiese sido muy recomendable usar un SSD pero el hecho de usar el equipo como servidor OwnCloud me hizo decantarme por una unidad convencional de 2,5" para tener más almacenamiento a un precio asequible.

Sin duda el mayor quebradero de cabeza fue la caja. Aclaro que en principio no me interesaba la típica caja HTPC grande, con aspecto de equipo de DVD. Quería algo pequeño que tuviese un aspecto similar a una consola Wii, algo que no cantase mucho cerca del televisor. Así que mi primera opción fue comprar una Morex T3320 pero fui victima de mi elección en cuanto al reciclaje. Hoy puedo decir que cuando compré la placa Zotac IONITX-D-E  no estuve muy acertado. El error fue que esa era una de las primera placas que incluían un Atom N330 que, si no recuerdo mal, fue el primer Atom con doble núcleo y 64 bits. El caso es que no ofrecía mucho más rendimiento que sus hermanos pequeños y, en cambio, obligaba a hacer uso de un ventilador sobre el disipador de la placa. Pues bien, esto eliminaba la mayoría de las cajas que me gustaban pues con unos 6 o 6,5 cm de altura y espacios tan reducidos no podía incluir el ventilador. Teniendo todo esto en cuenta, al final, me hice con una Intertech Mini ITX E-i5 con mayor altura y cuyo aspecto y acabado (todo aluminio) no estaba mal.



Otra de las compras fueron unos nuevos ventiladores. Ya que no podía librarme de la ventilación, el que venía de serie con la placa me parecía demasiado ruidoso. Tras las típicas búsquedas en foros, decidí comprar dos  Blacknoise uno de 60 mm para la placa y otro de 40 para la caja.



Resumiendo, los componentes son los siguientes:
  • Kingston ValueRAM 2GB DDR2 800 PC2-6400 (Reciclado)
  • Zotac IONITX-D-E ION mini-ITX Atom N330 WiFi (Reciclado)
  • Intertech Mini ITX E-i5 (69,60€)
  • Blacnoise BlackSilentFan XR1  (5,99€)
  • Blacnoise BlackSilentFan  XM1 (4,99€)
  • Toshiba MQ01ABD050 2.5" 500GB 5400RPM SATA  (43,99€)

Instalando OpenSuse y XBMC

Evidentemente, empezaremos por instalar OpenSuse. No voy a entrar mucho en detalles con esto ya que sólo hay que dejarse llevar por el asistente de instalación y todo es muy sencillo.

Seguiremos los pasos habituales de elección de idioma, zona horaria, etc. Llegado el momento aceptaremos que instale el escritorio KDE, ya que nos dará flexibilidad para instalar y configurar todos los paquetes que deseemos de un modo más agradable.


Después de esto, aceptaremos o modificaremos a nuestro antojo las particiones sugeridas, crearemos nuestro usuario y aceptaremos el resumen de la instalación, con lo que comenzará todo el proceso. Pues bien, ahora tenemos unos 30 o 40 minutos para hacer algo realmente maravilloso ¡¡¡como jugar en otro PC con un emulador de Amiga al Project X!!!



Bueno... en realidad lo que hice fue vaciar el lavavajillas y colocar vasos, platos y cubiertos en sus lugares correspondientes :(

En fin, después de este lapso tan enriquecedor, el sistema se reiniciará y vermos por primera vez nuestro escritorio.


Ahora tendremos que configurar la red, así que introduciremos las opciones que necesitemos respecto a DCHP, etc. Si usamos configuración inalámbrica es posible que quiera instalar el paquete iw, simplemente hay que decir que sí.



Una vez comprobado que tenemos conectividad y podemos salir al mundo exterior, es un buen momento para actualizar los paquetes instalados. Como se ha usado una imagen de DVD, una gran cantidad de rpms contarán con nuevas versiones con correcciones de fallos etc. Para forzar su renovación en el apartado Maquina del lanzador KDE elegiremos Añadir / quitar programas. Una vez cargada la aplicación, iremos al menú Paquete y en el submenú Todos los paquetes escogeremos Actualizar si hay una versión disponible.


En mi caso me avisó de que se instalarían casi 400 paquetes ¡con lo cuál era una gran oportunidad para jugar al Project X!



Pero... en realidad me puse a fregar todo aquello que no había cabido en el lavavajillas :(

Ahora añadiremos dos repositorios de paquetes rpm que nos serán muy útiles: el de los drivers de la tarjeta gráfica (Nvidia en mi caso) y el repositorio Packman donde encontraremos el software XBMC además de los codecs de vídeo que necesitaremos. Para hacer esto iremos al lanzador de KDE y en el apartado Máquina escogeremos Yast. Tras autenticarnos como root seleccionaremos la aplicación Repositorios de software y veremos lo siguiente:



Haremos clic sobre el botón añadir, después en la opción Repositiorios de la comunidad y por último añadiremos los correspondientes a Packman y Nvidia:


Tras hacer esto estaremos en disposición de empezar a instalar lo que nos sea necesario. Iremos de nuevo al instalador de software y buscaremos los paquetes xbmc y w32codec-all (este último son todos los codecs propietarios que no vienen por defecto en OpenSuse)

Haremos clic sobre Aceptar y probablemente nos  avise de un conflicto respecto a xbmc lo que haremos será de proveedor de la librería afectada:


Con ello empezará el proceso, que también incluirá más rpms por cuestiones de dependencias.

Primeros pasos con XBMC


Ya estamos en disposición de probar XBMC, podremos hacerlo desde el lanzador KDE en Aplicaciones, Multimedia, TV, XBMC. Si todo va bien se puede aprovechar este primer arranque para establecer el idioma y uso horario. Para ello ir a Ajustes y después a Apariencia.



Cómo hacer que nuestro ordenador arranque directamente el XBMC

Para hacer que nuestro equipo arranque con el gestor de ventanas de XBMC y por tanto que no se cargue KDE, cerraríamos sesión y en la pantalla de login de OpenSuse, haríamos clic en la rueda dentada y escogeríamos el tipo de sesión XBMC. Desde ese momento nuestro ordenador arrancará siempre directamente el XBMC. Mi consejo es dejar esto para más tarde ya que ahora nos será util disponer del escritorio KDE para poner a prueba las cosas antes. Me explico: cuando más adelante queramos disponer de un emulador en XBMC lo más lógico será tenerlo probado todo antes sobre KDE, una vez configurado todo correctamente, será la hora de pegarnos con la configuración del addon correspondiente en XBMC.




Para volver a cambiar el tipo de sesión cuando se está en XBMC sólo hay que pulsar la tecla s del teclado, opción Salir y estaremos otra vez en la pantalla de login con lo que podremos elegir el tipo sesión KDE.

Ventana o pantalla completa


De nuevo mi consejo, mientras se esté preparando todo, es trabajar en modo ventana y, como he dicho antes, sobre el escritorio KDE. Este valor se puede cambiar en Ajustes, Sistema, Hardware de vídeo.


Si te conectas a la TV por HDMI y no tienes sonido


Si vas a usar un cable HDMI entre la tele y tu HTPC, lo normal es que lo probases ahora. Una de las cosas que puede ocurrirte, como a mí, es que no tengas sonido. Si te ocurre esto, comprueba que la salida de audio es la correcta en OpenSuse

Aún así probablemente la cosa siga sin funcionar así que en un terminal ejecuta Alsamix y comprueba si tienes enmudecidos los canales denomindados s-pif, en ese caso actívalos todos.

Ahora ya deberías tener sonido en tu escritorio, pero deberías asegurarte de que en XBMC también, así que debes configurar su salida de audio en Ajustes, Sistema, Salida de Audio.




Si esperas poder manejar XBMC con el mando de tu TV y no te va


XBMC está preparado para recibir comandos CEC a través del cable HDMI, lo que permite controlarlo con el mando de la TV a la que se conecta. Yo lo comprobé tiempo atrás con mi teléfono Android, un Sony Xperia P con salida micro HDMI en el que tengo instalada la beta de XBMC (de momento no está en Google Play). Por esta razón asumí que mi PC también las recibiría ¡Error! Mi placa Zotac ignora completamente las señales CEC. Si estáis en el mismo caso podéis solucionarlo con el adpatador usb Pulse Eight (no lo he probado).

En resumen para disponer de CEC tanto la TV, como el PC deben soportarlo. En caso contrario no debemos desesperarnos, podremos usar una app de control remoto en nuestro móvil:

 

Hasta aquí, de momento

Creo que es un buen punto para dejarlo por ahora. Si todo ha ido bien, tendréis una instalación básica de XBMC con la que podréis empezar a disfrutar de un equipo multimedia en vuestra TV. Más adelante escribiré sobre como optimizar el arranque y como añadir mis addons favoritos (rom collection browser, transmission...). ¡Ah! También pienso contar como incluir Owncloud.