Raspberry Pi: Montando algo más que un media center.

Índice de contenidos:

  1. Esquema de conexiones
  2. Instalación del sistema operativo, XBian.
  3. Primer arranque de XBian y configuración inicial.
  4. Configuración del sistema operativo desde XBMC.
  5. Accediendo vía SSH.
  6. Instalación del cliente bittorrent: Transmission.

Introducción:

He instalado una serie de programas en una memória SD que usará la placa Raspberry Pi como sistema operativo y me permite usarlo como un estupendo Media Center (XBMC) en red, un cliente de descargas bittorrent (transmission) y un servidor Web (Apache) y quiero compartirlo detallando los pasos que he seguido para conseguirlo y algunos consejos para sacarle más partido a este estupendo cacharro.

Raspberry Pi:

Placa Raspberry Pi (Click para ampliar)

 

El famoso Raspberry Pi fue diseñado con fines educati… bla bla bla… es el mejor y más barato juguete que he podido trastear últimamente. Si aún no lo conoces, échale un ojo al artículo de la Wikipedia antes de continuar: http://es.wikipedia.org/wiki/Raspberry_Pi

Ventajas:

Una vez acabado nos permitirá:

  • Reproducir en la TV cualquier contenido (1080p incluido) almacenado en red (en un PC, Mac, Linux, en un NAS) o  conectando directamente un disco USB al RPi, también música y fotos.
  • Utilizar el mando a distancia nativo de la TV para controlar el XBMC.
  • Acceder a la biblioteca del XBMC a través de la Web o desde una App para Android / iOS.
  • Conectarnos mediante SSH para ejecutar comandos SHELL en el RPi.
  • Gestionar descargas bittorrent con el cliente Transmission mediante una interfaz Web y desde XBMC.
  • Almacenar las descargas de transmission en un disco USB o en una unidad de red Windows mediante Samba.
  • Automatizar las descargas de series y películas en base a un detallado archivo de configuración mediante Flexget y envio de informes mediante correo o whatsapp.
  • Gestionar el estado de los servicios (xbmc, transmission, ssh, apache2,..), reiniciar o apagar el RPi y otras utilidades mediante un panel de control creado en php.
  • Acceder a todos los servicios de configuración a través de internet configurando los puertos en el router.

 Nivel de dificultad:

Realmente puedes adaptar el proyecto a tus conocimientos, si no quieres complicarte la vida y únicamente quieres un media center en una RPi puedes plantarte en la instalación de del sistema operativo en la SD.

Si por otro lado quieres configurarlo para que sea algo más, sería conveniente que tuvieras algunos conocimientos básicos de como funciona la consola de linux, que es una conexión SSH y el funcionamiento básico de un servidor Web, aunque no es un requisito para seguir esta guía ya que voy a detallar todos los pasos.

Requisitos de Hardware:

Listo lo que yo he usado, puede variar según necesidades:

  • Una placa Raspberry Pi (yo he comprado la de 500mb de RAM por 32,88€ en http://raspberrypi.rsdelivers.com/), no necesitamos el transformador.
  • Una tarjeta de memória SD de 16Gb, la compré por 7€ en un comercio local (puede ser de 2Gb, 4Gb,  8Gb o 16Gb).
  • Un Hub USB (!importante: con alimentación externa!), lo compré por 15€ en un comercio local.
  • Un disco duro USB.
  • Teclado inalámbrico (no necesario).
  • Un cable HDMI.
  • Un cable de red.
  • Un ordenador (PC, Linux o Mac) con lector de tarjetas.

 

1.- Esquema de conexiones.

Aunque aún no lo encenderemos puesto que primero tenemos que instalar el sistema operativo en la SD, muestro el esquema que me ha quedado a mi en caso para que sirva de ejemplo para el vuestro, que debería ser bastante similar:

¿Porqué un HUB USB si el Raspberry Pi tiene ya dos entradas USB?


Pues es meramente una cuestión económica, me explico, el HUB no sería necesario si almacenamos nuestras descargas en una ubicación de red, pero  en mi caso no quiero dejar 24h el NAS encendido ya que apenas lo usamos unas horas al día, es una tontería pagar el consumo eléctrico todo el día (consume bastante y cada día es más caro). Me decanté por adherirle un disco USB y almacenar ahí las descargas que posteriormente moveré al NAS vía Samba o automágicamente con Flexget (lo veremos más adelante).
Raspberry Pi no tiene suficiente “potencia eléctrica” para poder usar un disco USB sin alimentación externa, simplemente no arrancará. De ahí el HUB con alimentación externa, para conectar el disco duro USB y para alimentar de corriente al Raspberry Pi de forma que no necesitamos usar el puerto microUSB ni ningún transformador aparte, únicamente el del HUB USB.

2.- Instalación del sistema operativo, XBian.

El caso es instalar una distribución linux (la mayoría basadas en Debian) enfocada a ejecutar un software Media Center llamado XBMC, yo llevo muchos años usando XBMC en mi PC y nunca lo he disfrutado tanto.

He probado:

  • Raspbian, enfocado más a programación en general, XBMC funciona mal ya que esta distribución posee un entorno gráfico que no necesitamos y otros servicios que consumen nuestros recursos y empeoran la experiencia de XBMC.
  • Raspbmc, una buena distribución para usar XBMC pero me ha dado más problemas para instalar otros paquetes como apache2 y demás, según he leido es un proyecto de una sola persona, bien por él pero inmaduro comparado con otros.
  • OpenELEC (Open Embedded Linux Entertainment Center), genial si únicamente buscamos un media center, más cerrado.
  • XBiansin duda me quedo con XBian por su estabilidad y porque es un proyecto más maduro que el resto en muchos aspectos, menos problemas, casi perfecto.

La gente de XBian se han currado un instalador capaz de correr en Windows, Mac y Linux, he incluso se puede realizar la instalación manual mediante ficheros RAW.

Instrucciones de instalación de XBian (manual según XBian en inglés):

  1. Descargamos el instalador adecuado a nuestro S.O. desde http://xbian.org/download/
  2. Insertar la tarjeta SD en el lector de tarjetas
  3. Lanzar el instalador descargado previamente.
  4. Seguir las instrucciones por pantalla.

El installer en mi MacBook Pro no me detectaba la tarjeta de memória, así que lo hice con un PC con Windows 7.

Esto nos deja el sistema operativo listo para iniciar en nuestro RPi.

 

3.- Primer arranque de XBian y configuración inicial.

Nota: Es importante conectar el cable de red antes de arrancar XBian por primera vez, nos facilitará las cosas aunque no es imprescindible.

Después de instalar XBian en la SD usando nuestro ordenador personal, insertamos la SD en la Raspberry Pi y  arrancamos el sistema. Raspberry Pi no tiene botón de encendido ni de reinicio, por lo que con el simple hecho de proporcionarle alimentación eléctrica se iniciará.

XBMC arranca a la primera, sin preguntas salvo un mensaje de bienvenida, ya podemos utilizar el mando a distancia siempre y cuando sea compatible tu TV con el sistema CEC, si no es así podemos utilizar un teclado USB, sii aún no lo has conectado, cuando lo hagas lo más probable es que Raspberry Pi se reinicie, don’t panic!.

Si notas que va algo lento, es normal, está actualizando los Addons que vienen instalados por defecto.

Cambio de idioma a Español:

Accedemos a System ? Settings ? Appearance ? Internacional

Allí cambiamos el valor de Language por Spanish.

4.- Configuración del sistema Operativo desde XBMC.

La configuración básica del sistema operativo viene en forma de Plugin de XBMC al cual accedemos a través de:

Sistema ? Ajustes ? XBian o desde Programas ? XBian-Config.

Esta ventana es lenta y tarda en cargar, modificaremos lo siguiente.

  1. Desactivación del DHCP: Para tener siempre localizado nuestro Rapsberry Pi en la red es mejor establecer una dirección IP estática en lugar de esperar a que el router le asigne una, si accedemos a XBian-Config y cambiamos la opción Mode de DHCP a Static podremos establecer una acorde a nuestra red, en mi caso 192.168.1.50.
  2. Activamos el modo Avanzado en Programas ? XBian-Config ? Preferences, esto nos dará más opciones en la pestaña System de XBian-Config.
  3. En la pestaña System cambiamos las claves de root y del usuario xbian y marcamos la opción “Allow SSH root login“.
  4. Ajuste de la zona horaria en XBian-Config ? System ? Timezone a Europe ? Madrid.

Retrocede al menú principal (con la barra de retroceso o backspace), te pedirá reiniciar, acepta.

  1. Accedemos a Ajustes ? Apariencia ? Internacional y cambiamos el “País del huso horario” a Spain y la Región a España si procede, con esto el reloj de la parte superior ya debería estar en hora.
  2. Establecemos unas credenciales de acceso al panel de control remoto HTTP en Ajustes ? Servicios ? Servidor Web y nos aseguramos de que está activado “Permitir el control de XBMC por HTTP” que debería estarlo por defecto. En cuanto a interfaz Web, yo uso AWXi que se puede descargar desde el botón Conseguir más.. al pulsar sobre Interfaz Web.
  3. Activamos la opción “Premitir que los programas de otro equipo controlen XBMC” en Ajustes ? Servicios ? Control remoto.
  4. Activamos el servicio AirPlay en Ajustes ? Servicios ? AirPlay en caso de disponer algun dispositivo iOS, nos servirá para enviar la señal de video vía Wifi al XBMC.

6.- Accediendo vía SSH

Para realizar muchas de las operaciones de configuración tendremos que conectarnos a la Raspberry Pi mediante el protocolo SSH (Secure Shell, Wikipedia), veamos como conectarnos desde las diferentes plataformas.

Si estas bajo Linux no creo haga falta explicarte cómo, si usas Windows puedes descargarte Putty

7.- Instalación del cliente bittorrent: Transmission

Para instalar

Personalización de XBMC: Plugins

Plugin XBMC: WatchDog: Actualiza la biblioteca del XBMC automágicamente cuando añadimos o eliminas un fichero a nuestra colección, de esta forma no tenemos que refrescar la biblioteca cuando agregamos contenido, es instantáneo.

URL: http://wiki.xbmc.org/index.php?title=Add-on:Watchdog

Activar el Dark Mode en Youtube

Para activar el Dark Mode de Youtube hacemos lo siguiente:

  1. Abrir una pestaña con www.youtube.com
  2. Abrir la consola de desarrolladores pulsando Ctrl + Shift + I.
  3. Ir a la pestaña Consola.
  4. Allí pegamos el siguiente comando: document.cookie=”VISITOR_INFO1_LIVE=fPQ4jCL6EiE”
  5. Cerramos la consola pulsando de nuevo Ctrl + Shift + I.
  6. Refrescamos la página con F5.
  7. Desplegamos el menú situado en la parte superior derecha (perfil de usuario o menú diferente si no se está validado) y activamos la opción: Dark Mode.

3D Simon, juego javascript, WebGL + ThreeJS

He hecho un pequeño juego en Javascript utilizando la librería ThreeJS de Mr doob, los modelos están diseñados en Blender.

Está basado en el juguete retro “Simon Says” en el que hay que repetir una secuencia de colores que va creciendo en valores.

He registrado dominio propio para el juego, con un anuncio cuando fallas la combinación, para poder pagar el Ferrari claro.

Si estás interesado en ver el código fuente, basta con visualizar el código html de la web, no hay nada ofuscado.

Prueba 3DSimon en http://www.3dsimon.com

Todas las opiniones son bienvenidas.

Montar una Steam Box con una Raspberry Pi 2 mediante moonlight para usar GameStream de Nvidia.

El título es raro de cojones, lo sé.NVIDIA

La idea es que desde una Raspberry Pi podamos jugar a juegos que realmente corren en nuestro PC con gráfica Nvidia.

Por ejemplo podremos conectar la Raspberry Pi a la tele del comedor y disfrutar del catálogo de Steam en el sofá con el rendimiento del PC.

El caso es que funciona, y muy bien además, latencia inapreciable a 1080px60fps, con muchas opciones, soporte de periféricos y mucho más, y hay una cantidad muy decente de juegos compatibles.

SteamOS (Software) + Steam Box (Hardware) = Steam Machine

Primero los conceptos:

  • ¿Qué es una Steam Box? 
    SteamBox es un concepto creado por Valve que consiste en un hardware para hacer funcionar SteamOS, el sistema operativo de Steam como si de una consola se tratase, esta conjunción tiene por nombre “Steam Machine” hoy en día existen muchas Steam Machines de diferentes fabricantes en el mercado, pero no bajan de los 500 dolares, ¡llevan un tarjetón ahí dentro!.
    En nuestro caso no será realmente una SteamBox porque no ejecutaremos SteamOS en la Raspberry Pi sino que haremos streaming de un Steam que corre en un PC, la diferencia radica en el precio y en que necesitamos el PC con una tarjeta gráfica Nvidia compatible con GameStream accesible.Pi2ModB1GB_-comp
  • ¿Qué es una Raspberry Pi?
    El famoso Raspberry Pi fue diseñado con fines educati… bla bla bla… es el mejor y más barato juguete que he podido trastear últimamente. Si aún no lo conoces, échale un ojo al artículo de la Wikipedia antes de continuar:  http://es.wikipedia.org/wiki/Raspberry_Pi
    Y ahora es su versión 2 Nueva Raspberry Pi 2 con más de todo.
  • ¿Qué es GameStream de Nvidia?
    La tecnología GameStream traslada los juegos de PC a tu dispositivo SHIELD (compatible con GameStream) con mínima latencia. GameStream aprovecha toda la potencia de las tarjetas gráficas GeForce GTX para transmitir en streaming, a través de tu red Wi-Fi, los juegos del PC al dispositivo SHIELD y permitirte disfrutar de ellos en cualquier lugar.
  • ¿Qué es moonlight? 
    Es la implementación Open Source del GameStream para los dispositivos SHIELD.
    La gente de Nvidia sacó moonlight (antes limeLight) para que los fabricantes pudiesen compatibilizar su hardware con GameStream, más info en: http://moonlight-stream.com/

 

Partimos de la base de que dispones de una Raspberry Pi (yo lo he probado con la 2, la 1 la tengo ocupada) y que Raspbian está instalado y funcionando en red local con SSH activado. De forma que mediante, por ejemplu Putty, podemos conectarnos mediante SSH a nuestra RPi.

Miniguia de instalación de Raspbian: 1- Descarga Raspbian verión NOOBS. 2.- Descomprime. 3.- Copia Pega en una SD. 4.- Enciende la RPi con esa SD y sigue las instrucciones.

Tabla de compatibilidad de GPU de Nvidia
Tabla de compatibilidad de GPU de Nvidia

En cuanto al PC, GameStream es de Nvidia y solo es compatible con las GTX serie 6 o superior, puedes comprobar si tu tarjeta es compatible con GameStream en la imagen de arriba.

Necesitas instalar, si no lo tienes ya, NVIDIA GeForce Experience (GFE), que no es el driver.

Iniciamos GFE y vamos a la pestaña SHIELD, allí iniciamos sesión con una cuenta de nvidia.

Así queda una vez iniciada la sesión de usuario.
Así queda una vez iniciada la sesión de usuario.

Podemos comprobar el estado del servicio en la pestaña “Mi Equipo”:

Estado del servicio GameStream
Estado del servicio GameStream

Si no teníamos activado GameStream es muy recomendable reiniciar el PC después de activarlo, en mi caso no funcionó hasta reiniciarlo, aún estando todo en verde.

Iniciamos Steam y lo tenemos todo listo en el PC.

En cuanto a la Raspberry Pi, una vez conectados por SSH añadiremos una nueva fuente de repositorios, lanzando el siguiente comando abrimos el fichero /etc/apt/sources.list.

sudo nano /etc/apt/sources.list

Tenemos que añadir la siguiente linea al fichero:

deb http://archive.itimmer.nl/raspbian/moonlight wheezy main

Para salir de nano pulsa Ctrl + X y luego confirma con Y.
Actualizamos nuestro apt-get:

sudo apt-get update

Y instalamos moonlight:

sudo apt-get install moonlight-embedded

Ahora emparejamos moonlight en la Raspberry con la tarjeta gráfica del PC:

moonlight pair X.X.X.X

Donde X.X.X.X es la dirección IP del PC, no de la RPi.
img_55a0353116a95En el momento de lanzar el comando, en el PC, GFE mostrará una nueva ventana solicitando un código PIN, el código de debes introducir aparece en el terminal SSH en donde hemos lanzado el comando.

Una vez introducido el PIN correcto, tendremos emparejados los dos dispositivos y listos para la fiesta.

Para iniciar el stream tenemos que lanzar un comando SSH en el terminal de la RPi:

moonlight streaming [opciones] X.X.X.X

Donde X.X.X.X es la dirección IP del PC, no de la RPi.

Aquí un listado de las opciones disponibles:

-720 Usar la resolición 1280x720px [por defecto]
-1080 Usar la resolución 1920x1080px
-width Resolución horizontal (por defecto 1200px)
-height Resolución vertical (por defecto 720px)
-30fps Usar 30fps
-60fps Usar 60fps [por defecto]
-bitrate Especifica el bitrate en Kbps
-packetsize Especifica el tamaño máximo de los paquetes en bytes.
-app Nombre de la aplicación para hacer stream
-nosops No permitir que GFE modifique los ajustes del juego
-input Usar como input. Puede usarse múltiples veces.
-mapping Usar como mapa de configuración de gamepad (previo uso de -input)
-audio Usar ALSA como salida de audio
-localaudio Reproducir el audio en local

Ahora para iniciar Steam únicamente, utilizaremos:

moonlight streaming -app Steam X.X.X.X

Donde X.X.X.X es la dirección IP del PC, no de la RPi.
Con esto ya deberías ver Steam allí donde hayas conectado la RPi.