Utilizar un mando Wii con tu GNU/Linux

Si tienes una Nintendo Wii y has comprobado todo lo que puedes hacer con un Wiimote, es hora que lo conectes a tu PC con GNU. Esta receta es un ejemplo muy básico de lo que se puede hacer con él.

Ingredientes

  • Un mando de Wii (o Wiimote).
  • Un adaptador USB Bluetooth.
  • Los paquetes bluetooth bluez-utils python-bluez python-xlib python-pygame (sin comas para que copies y pegues ;-)).
  • El programa/librería de prueba Wiiwanna Motte Dammiit! (o WMD).

Configurando el sistema

Primero, tienes que parchear python-xlib para que funcione con el programa de prueba. Para ello, tienes que editar el archivo /usr/share/python-support/python-xlib/Xlib/protocol/display.py y reemplazar:

recv = self.socket.recv(2048)

por:

recv = self.socket.recv(4096)

Seguidamente, cargamos los módulos uinput y evdev. Si tienes un núcleo más o menos actual, no tendrás problemas. Personalmente, lo he probado con un 2.6.18-4 y ambos se encontraban ya en mi sistema. Para cargar los módulos haz:

# modprobe uinput evdev

Al cargar el módulo uinput, se va a crear un archivo (con el mismo nombre que el módulo) en el directorio /dev/input/. Sin embargo, el programa necesita que esté en /dev/misc/. En cualquier caso, necesitamos asegurarnos de que el archivo esté en esta última localización, por ello debes linkarlo de la siguiente forma:

# mkdir /dev/misc <--- Si no lo tienes creado!!!
# ln -s /dev/input/uinput /dev/misc/uinput
# chmod 666 /dev/misc/uinput

Es posible que la ruta inicial de uinput no sea igual que la que se ha citado. En tal caso, utiliza find para encontrar el archivo:

# find /dev -name uinput

Finalmente, sólo queda configurar el archivo /etc/X11/xorg.conf para conectar las salidas del Wiimote con de un nuevo dispositivo de entrada del servidor X. Primero, crea un InputDevice como sigue:

Section "InputDevice"
Identifier "Wiimote"
Driver "evdev"
Option "Name" "Nintendo Wiimote"
EndSection

Y, en el apartado ServerLayout, escribe la siguiente línea:

InputDevice "Wiimote"

Reinicia el entorno gráfico y tu GNU/Linux estará preparado para probar el Wiimote, ¿lo estás tú? :-).

Probando el Wiimote

Una vez reiniciado el entorno gráfico, tienes que enchufar tu dispositivo USB Bluetooth (evidentemente) y ejecutar el programa. Si no lo has descomprimido aún, hazlo y en el directorio que crea ejecuta:

$ python WMD.py

Verás en consola un mensaje de espera de sincronización con el mando Wii. Para sincronizarlo, quita la tapa de las pilas del mando y pulsa el botón SYNC. Comenzarán a parpadear los LED azules. Si paran de hacerlo y en consola no aparece el mensaje "CONNECTED", debes pulsar de nuevo el botón SYNC. Personalemente, no he tenido que pulsarlo más de 2 veces.

Cuando la conexión ha sido establecida, como se ha dicho, aparecerá el mensaje "CONNECTED". Si empiezas a pulsar los botones, mostrará qué botón has pulsado; si mueves el mando bruscamente, mostrará un mensaje con las coordenadas del movimiento; si apuntas a la pantalla, podrás mover el ratón en la dirección del mando. Ciertamente, esto último está en pañales y comprobarás que pierdes el control del ratón al rato de trastear con él. No te preocupes, el software es libre y se puede mejorar ;-).

Referencias

Esta receta es una interpretación y adaptación personal de entrada del blog "Debianizado".