Wiimote

Bild des Benutzers roerich

Wiimote und Nunchuck unter Linux

Einleitung

Auf dem Linuxtag 2008 in Berlin haben wir auf dem Stand von linuX-gamers.org gezeigt, wie man verschiedene Spiele mit Nintendos Controllern spielen konnte. Dort wurde ich häufig gefragt, wie das denn genau funktioniert. Darum möchte ich euch hier eine kleine Anleitung dazu präsentieren.

Was wird benötigt?

- PC mit Bluetooth (Stick oder eingebaut ist egal)
- ein Nintendo Wiimote
- GNU/Linux System mit Bluetooth-Unterstützung
- ein Softwaretoolkit namens cwiid

Wie richte ich die Software ein?

Zunächst muss der Kernel Bluetooth sprechen. Hierzu braucht man meistens auch Userspace Libraries wie "bluez-libs " (so heisst das in den meisten Distributionen).

Kernel

Damit die Kommunikation mit dem Wiimote überhaupt funktionieren kann, muss das Kernelmodul "uinput" geladen werden.
Hierzu bedient man sich am besten der Mechanismen seiner Lieblingsdistribution, um das Modul automatisch beim Starten zu laden.
Leider darf meistens erstmal nur root auf das Device /dev/input/uinput lesend/schreibend zugreifen, welches durch das Kernelmodul angelegt wird. Ergo muss man hier seine udev-Regeln anpassen. Beispiel:

KERNEL=="input", MODE=="0666"

Alternativ legt man eine Gruppe cwiid an und ändert die udev-Regel wie folgt:

KERNEL=="uinput", GROUP=="cwiid", MODE=="0660"

Mittels modprobe uinput sollte nun das Modul geladen werden.

Userspace

X11

Man braucht auf jeden Fall evdev-Support für das XWindow-System. Bei vielen Distributionen wird das schon bei der normalen Installation mitinstalliert. Bei anderen wie z.B. Archlinux installiert man das einfach nach.

Will man den Wiimote Controller auch als Mauszeiger benutzen, so bietet sich an, folgenden Code in seine xorg.conf einzubauen:

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

cwiid

Nun brauchen wir das Paket cwiid. Entweder ist dies schon im Repository der Distribution vorhanden oder man holt sich die Sourcen von der cwiid-Seite. Mittels Dreisatz (./configure; make ; make install) installiert man sich nun die Software.

Achtung: Für FPS Spiele gibt es eine Erweiterung für cwiid. Diese installiert einem ein neues Plugin namens ir_fps. Damit kann man dann auch versuchen, FPS Spiele mit Wiimote und Nunchuk zu steuern.
Den Download gibt es auf kyrlians Seite - siehe weiterführende Links.

Games laufen lassen

Um Spiele mit dem Wiimote zu spielen, muss man nun einfach das Programm wminput benutzen.
Dieses benötigt immer eine Konfiguration, die angibt, welche Features des Wiimote mit welcher Funktion belegt werden sollen.

Beispiel:
wminput -wc neverball

Eine Konfiguration für Neverball ist bei cwiid schon enthalten. Wenn ich nun wminput ausführen und dann neverball starte, kann ich die Ebene, auf der die Kugel zu balancieren ist, mittels des Accelerometers des Wiimote steuern.

Auf dem Linuxtag habe ich auch vorgeführt, wie man Sauerbraten bzw. World of Padman mit Wiimote und Nunchuk zocken kann. Leider reagiert der Wiimote bzw. wminput manchmal recht träge, so daß diese Steuerung etwas langsam ist für Ego-shooter. Das kann aber auch an der schmalen IR-Sensorleiste gelegen haben, die ich benutzt habe.

Ausblick

Wer schonmal bei Youtube die Movies von Johnny Lee angeschaut hat, weiss was alles möglich ist mit dem Wiimote.
In der Subversion Version von cwiid ist wohl auch Support für die WiiFit eingebaut. Leider gibts noch kein Spiel unter Linux, was mir so einfällt, daß man mit dem WiiFit steuern könnte. Vielleicht ist das Entwickeln eines Fitness-Spiels mal eine Idee für kellergebräunte "Nosports"-Programmierer :)

ToDo

Beispielkonfiguration vom Linuxtag in den Artikel kopieren

Screenshots und Videos
TomcatMJ
Bild des Benutzers TomcatMJ
Offline
Beigetreten: 16.05.2008
Beiträge: 14

Vielleicht wär WiiFit ja was für die Steuerung von StepMania?
Bisher benötigt man dafür eben eine PS/2 Tanzmatte die man per Adapter an den PC hängen kann oder eine sonstige Tanzmatte die vom PC erkannt werden kann...allerdings wäre WiiFit vermutlich etwas arg kompakt als Tanzmatte, aber wenn das klappt wärs vielleicht eine gute Basis für einen Hardwaremod ;) (ähnlich dem Tanzmattenmod/-selbstbau aus der VPedia)

Bis denne,
Tom