Usando el Wiimote de manera habitual
Escrito por: nk82 en Scripts, tags: bluetooth, Scripts, wiimote
Desde ya hace mas de un año que podemos usar el Wiimote bajo GNU/Linux, como si de un periférico cualquiera se tratase, pero… ¿qué pasa si lo queremos usar habitualmente y no sólo como algo para flipar al coleguilla de turno?
Lo que aquí os propongo son dos scripts que conjuntamente con wminput monitorizan el uso del Wiimote, de manera que podemos hacerlo funcionar o apagarlo sin necesidad de ejecutar manualmente ningún comando.
Primeramente debemos hacer funcionar el Wiimote, para ello debemos asegurarnos de tener un adaptador bluetooth funcionando perfectamente en nuestro sistema y luego de instalar wminput (incluido en los repositorios de Ubuntu desde la versión 7.10)
sudo apt-get install wminput
Luego damos los permisos necesarios para que los usuarios puedan tener acceso a uinput:
sudo nano /etc/udev/rules.d/40-permissions.rules
Y añadimos al final lo siguiente (sustituyendo group por el grupo de usuarios que tendrán acceso a uinput, si no lo tienes claro, pon el usuario de tu login):
KERNEL=="uinput", GROUP="group"
Ahora cargamos al inicio el módulo uinput:
modprobe uinput
sudo nano /etc/modules
Añadimos al final:
uinput
Con estos pasos ya deberíamos tener el mando operativo, sólo nos queda crear un fichero de configuración con la asignación de teclas, tenéis varios a modo de ejemplo en "/etc/cwiid/wminput/". Os pongo a modo de ejemplo el que uso yo con MythTV:
# Configuración para MythTV
Wiimote.B = KEY_ESC
Wiimote.A = KEY_ENTER
Wiimote.Up = KEY_UP
Wiimote.Down = KEY_DOWN
Wiimote.Left = KEY_LEFT
Wiimote.Right = KEY_RIGHT
Wiimote.Minus = KEY_VOLUMEDOWN
Wiimote.Plus = KEY_VOLUMEUP
Wiimote.Home = KEY_ESC
Wiimote.1 = KEY_M
Wiimote.2 = KEY_I
Guardad el fichero con la configuración deseada donde queráis, luego ya lo usaremos.
Ahora necesitamos saber la identificación de nuestro mando, de manera que el script se conecte de manera única a dicho mando, pulsad el botón 1 y 2 del Wiimote a la vez para ponerlo en modo sincronización y teclead lo siguiente:
hcitool scan
Observad la salida que obtenemos con ese comando, será algo del estilo:
Scanning ...
00:19:FD:8C:36:69 Nintendo RVL-CNT-01
Apuntad el código alfanumérico, ya que representa la dirección bluetooth de nuestro dispositivo.
Ya tenemos todo lo necesario para hacer la primera prueba con wminput.
wminput -w -c archivo_de_configuracion direccion_bluetooth
Ahora mantenemos pulsados los botones 1 y 2 hasta que los leds del mando comiencen a parpadear, esperamos un momento y si todo está bien, tendremos el Wiimote funcionando.
Una vez explicado todo esto, vamos con el tema principal del post, que es dejar el sistema configurado para no tener que depender de comandos para habilitar y deshabilitar el Wiimote.
Debemos crear dos archivos, uno que se encargará de poner a funcionar el mando y otro que lo monitorizará por si se desconecta (prestad mucha atención a los comentarios de los archivos).
sudo nano /usr/bin/wiistart
#!/bin/bash
sleep 10
while [ 1 ]; do
# Sustituid archivo_de_configuracion y direccion_bluetooth
wminput -w -c archivo_de_configuracion direccion_bluetooth &> /dev/null
sleep 2
done
sudo nano /usr/bin/wiistop
#!/bin/bash
sleep 10
while [ 1 ]; do
# Sustituimos direccion_bluetooth por la direccion de nuestro Wiimote
EN_EJECUCION=$(hcitool con | grep direccion_bluetooth)
if [ "$EN_EJECUCION" = "" ]; then
killall wminput
else
sleep 1
fi
sleep 60
done
sudo chmod 755 /usr/bin/wiistart
sudo chmod 755 /usr/bin/wiistop
Ahora hacemos que estos comandos se ejecuten al encender el equipo, tal y como ya expliqué.
sudo nano /etc/init.d/local
Copiamos lo siguiente dentro del fichero:
su - nombre_usuario -c "wiistart &> /dev/null &"
su - nombre_usuario -c "wiistop &> /dev/null &"
Sustituyendo anteriormente nombre_usuario por el usuario que usará el Wiimote.
Ahora damos permiso de ejecución y hacemos que se cargue al inicio.
sudo chmod 755 /etc/init.d/local
sudo update-rc.d local defaults
Después de reiniciar el equipo, podremos activar el Wiimote pulsando 1 y 2 a la vez y desactivarlo manteniendo pulsado el botón de power un par de segundos.
Lo realmente interesante de estos scripts es que tanto si apagamos el mando como si se desconecta él solo (al quedarse sin pilas por ejemplo), con volver a sincronizarlo, volverá a funcionar, idóneo para equipos que no suelen tener el teclado conectado o cuyos usuarios no saben conectar el Wiimote.
Entradas (RSS)
4 Julio 2008 a las 3:27 - Editar
hola soy paulo, no se si me recuerdas. Soy el webmaster de comovivirenchile.cl ( mira tu blogroll) Te escribo por aca porque no tengo la menor idea de lo que es una consola. y para comentarte que comovivirenchile.cambio de nombre. ahora se llama http://www.datines.com . Agradeceria si te parece cambiaras el link.
espero me contactes. ya tienes mi email. O bien hazlo a traves de algun articulo de datines y conversamos. Una saludo. que estes bien.
cordialmente
Paulo
4 Julio 2008 a las 15:18 - Editar
Blogroll actualizado Paulo
3 Junio 2010 a las 12:18 - Editar
Hola soy gracias por adelanto, Usando el Wiimote de manera habitual y no lo hago que funcione si pudieras decirme que tengo mal .
1º_ archivo local :su - rokycenter -c “wiistart &> /dev/null &”
su - rokycenter -c “wiistop &> /dev/null &”
2º- 40-permissions.rules: modprobe uinput
sudo nano /etc/modules
KERNEL==”uinput”, GROUP=”rokycenter”
uinput
3º- Scanning …
00:24:F3:18:8A:2E Nintendo RVL-CNT-01
4º- archivo wiistart :
#!/bin/bash
sleep 10
while [ 1 ]; do
# 00:24:F3:18:8A:2E Nintendo RVL-CNT-01
wminput -w -c 00:24:F3:18:8A:2E Nintendo RVL-CNT-01 &> /dev/null
sleep 2
done
5º- archivo wiistop:
#!/bin/bash
sleep 10
while [ 1 ]; do
# 00:24:F3:18:8A:2E Nintendo RVL-CNT-01
EN_EJECUCION=$(hcitool con | grep Nintendo RVL-CNT-01)
if [ “$EN_EJECUCION” = “” ]; then
killall wminput
else
sleep 1
fi
sleep 60
done
muchas Gracias por todo salu2