Usar el mando remoto de la PS3 en XBMC

BDRemote
Como ya he comentado, recientemente le compré una Playstation 3 a mi hijo (y a mi, claro está) y aproveché para comprarme el mando BDRemote para poder manejar las (pocas) películas bluray que tengo en casa. Además de sufrir el atraco a mano armada de pagar sus 30 Euros por él (si, ya se que ahora están más baratos) descubrí que la mayoría de las operaciones que se hacen con el BDRemote se pueden hacer desde el mando sixaxis. Además, dio la fatal casualidad que a los pocos días de tener la PS3 mi mediacenter empezó a fallar (cosas del hardware), así que me decidí a montarme otro mediacenter cambiando placa y micro (y caja) y qué mejor que usar el completisimo mando a distancia de la PS3 para controlarlo.

Y alguno dirá ¿pero la PS3 no es ya un media center?… Si, pero no. Es decir, yo necesito ver las películas en alta definición con MKV y este formato no lo soporta la PS3, además, es tal el calor que desprende la bestia que cualquier media center que quiera montar será un congelador a su lado.

Antes de montar del todo el mediacenter (que irá con ubuntu + xbmc) he probado la configuración del mando en otro ordenador que tenía de prueba y ha funcionado. Aqui os explico como:

Primero instalaremos todos los paquetes necesarios por si no los tenemos todavía:

sudo apt-get install cmake libbluetooth-dev lirc bluez-compat bluez-hcidump

Un aspecto previo que hay que tener en cuenta es que nuestro mando debe emparejarse por bluetooth con el ordenador antes de poder ser usado como mando a distancia y cada vez que se desempareje (porque lo volvamos a emparejar a la play, por ejemplo, deberemos emparejarlo de nuevo. El proceso es el siguiente:

1. Pulsar ENTER + START en el mando, así entramos en modo emparejamiento
2. Desde la consola:

hcitool scan

Esto os sacará algo como esto:

Scanning ...
      00:21:4F:B2:09:7C    BD Remote Control

Anotamos el número de identificación del mando y lo emparejamos:

sudo hidd --connect 00:21:4F:B2:09:7C

Para ver que todo ha ido bien (al margen de que no hayan salido mensajes de error), podemos usar el siguiente comando para ver el tráfico bluetooth mientras pulsamos teclas en el mando:

sudo hcidump -X

Si todo ha ido bien ahora instalaremos el bdremote-ng siguiendo estas instrucciones:

mkdir bdremote
cd bdremote
wget http://bdremote-ng.googlecode.com/files/bdremote-ng-0.5-RC2.tar.bz2
tar xjvf bdremote-ng-0.5-RC2.tar.bz2 
cd bdremote-ng-0.5/build
./gen.sh
cd linux
sudo make
sudo cp bdremoteng /usr/local/bin

Una vez con todo en su sitio modificamos el /etc/rc.local para que en el arranque todo esté preparado:

/etc/init.d/bluetooth stop
sleep 1
/usr/local/bin/bdremoteng -a 00:21:4F:B2:09:7C -p 8888 -t 20 &
sleep 1
# only required on Ubuntu 9.10, no /var/run/lirc directory on reboot
#mkdir /var/run/lirch
/usr/sbin/lircd -H null --connect 127.0.0.1:8888
sleep 1
/etc/init.d/bluetooth start
sleep 1

Ahora reiniciamos el equipo y si todo ha ido bien, podremos ejecutar el comando irw y obtener una salida como esta según pulsamos teclas:

0055 00 right SonyBDRemote
0056 00 down SonyBDRemote
0057 00 left SonyBDRemote
0054 00 up SonyBDRemote
000B 00 enter SonyBDRemote
...

Hay que tener en cuenta que el mando pasa a estado reposo cuando lleva un tiempo sin usarse y, por eso, la primera pulsación tardará en aparecer en pantalla, no hay que preocuparse, las siguientes irán bien.

Para configurar el xbmc hay que modificar el archivo .xbmc/userdata/Lircmap.xml y añadir esta entrada:

	<remote device="SonyBDRemote">
		<pause>pause</pause>
		<stop>stop</stop>
		<forward>scanfwd</forward>
		<reverse>scanrev</reverse>
		<left>left</left>
		<right>right</right>
		<up>up</up>
		<down>down</down>
		<select>enter</select>
		<pageplus>r1</pageplus>
		<pageminus>r3</pageminus>
		<back>return</back>
		<menu>ps</menu>
		<play>play</play>
		<title>select</title>
		<info>display</info>
		<skipplus>next</skipplus>
		<skipminus>prev</skipminus>
		<display>display</display>
		<start>start</start>
		<record>red</record>
		<volumeplus>l1</volumeplus>
		<volumeminus>l3</volumeminus>
		<mute>l2</mute>
		<power>eject</power>
		<one>1</one>
		<two>2</two>
		<three>3</three>
		<four>4</four>
		<five>5</five>
		<six>6</six>
		<seven>7</seven>
		<eight>8</eight>
		<nine>9</nine>
		<zero>0</zero>
		<mytv>Red</mytv>
		<mymusic>green</mymusic>
		<mypictures>yellow</mypictures>
		<myvideo>blue</myvideo>
	</remote>

Hay otras opciones para configurarlo, si necesitais más códigos del mando, solo teneis que utilizar irw para saber a qué código lircd corresponde y añadirlo al archivo anterior. Para probar que todo funciona, no hay más que arrancar el xbmc y moverse libremente por los menús…

La verdad es que las ventajas de un mando a distancia bluetooth son infinitas (se acabó eso de ir apuntando al dispositivo para que te haga caso), eso sí, veremos cuanto duran las baterías.