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.

3 Respuestas a “Usando el Wiimote de manera habitual”
  1. Mr.Yin dice:

    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

  2. nk82 dice:

    Blogroll actualizado Paulo ;)

  3. Ramón dice:

    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