De momento la cosa está en pañales, pero promete, y mucho. La cuestión es establecer una conexión vía Bluetooth entre el mando de la Wii y el sistema para controlar éste a través de aquél, como con cualquier otro HID.
Lo primero, como es lógico, es contar con un adaptador de Bluetooth y tener implementada la pila de protocolos BT (bluez). Tras esto comprobamos que podemos detectar el mando (debemos ponerlo en modo sync):

Una vez comprobado esto, tenemos que preparar el sistema. Primero el software que necesitamos:
- Ya hemos nombrado la pila de protocolos (apt-get install bluetooth bluez-utils)
- PyBluez, un conjunto de wrappers Python sobre Bluetooth (apt-get install python-bluez).
- Python-Xlib, interfaz para Python del protocolo X11 (apt-get install python-xlib).
- Es recomendable PyGame (apt-get install python-pygame) para poder observar la respuesta del sistema a los movimientos del mando.
Hay que parchear Python. Para ello editamos el archivo /usr/share/python-support/python-xlib/Xlib/protocol/display.py y buscamos la línea donde dice:
recv = self.socket.recv(2048)
En mi caso está en la línea 531. Lo sustituimos por
recv = self.socket.recv(4096)
Cargamos (tirando de modprobe) los módulos uinput y evdev. Si no los teneis, ya sabeis, toca recompilar. Tras esto comprobamos que se ha creado el dispositivo uinput:
find /dev -name uinput
Si no lo teneis en /dev/misc/uinput lo linkais desde donde lo tengais, ya que PyBluez querrá acceder al dispositivo en esa ruta. Hay que darle permisos para los usuarios (chmod 666 /dev/misc/uinput).
Ya casi están los preparativos. Falta configurar el servidor X. Para ello editamos el archivo /etc/X11/xorg.conf y añadimos un InputDevice:
Section "InputDevice"
Identifier "Wiimote"
Driver "evdev"
Option "Name" "Nintendo Wiimote"
EndSection
y en la sección ServerLayout añadimos la línea
InputDevice "Wiimote"
Listo. Reiniciamos el servidor X (invoke-rc.d [gdm|kdm|xdm] restart) y a otra cosa, mariposa. Uséase, a por el controlador.
WMD (Wiiwanna Motte Dammiit!) es un script en Python que actua como controlador para el Wiimote, usando PyBluez como wrapper para la comunicación Bluetooth, como seguramente ya habríais imaginado a juzgar por el software que hemos instalado. La última versión es la 0.1.2, aunque he tenido problemas con ella y he usado la 0.1.1. Por cierto, el WMD could make your Wii explode! del disclaimer es una coña marinera, que nadie se me acojone :D
En fin, éste es un vídeo con el resultado. Como veis la cosa, como digo más arriba, está en pañales aún, pero con un potencial increíble.
3 comentarios:
y todos esos videos que se han visto utilizando el mando de wii? no eran en linux?
Hasta donde yo sé, de momento se ha conseguido algo con Windows. Con Linux, esto es lo que hay (o cosas como ésta, que es lo mismo pero de otra forma).
Hay por ahí un vídeo de alquien que en teoría controla Beryl en un sistema multipantalla con el Wiimote, pero es un fake como una casa.
Mira por donde, la WII va a resultar aun mas entretenida de lo que parecia.
Por lo que he leido, basicamente se trata de un linux con una gui propietaria, asi que en teoria, serian posible un montno de movidad interconectando linux con los mandos. e incluso instalar en algun momento, alguna distro especifica en la maquina.
Hay que seguir investigando.
Publicar un comentario