• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Wiimote Howto

Da man im Linux Club noch keinerlei Informationen zum Thema "Wii Remote unter Linux" findet, möchte ich nach eigener Erfahrung und Recherche auf ubuntuusers.de (die sind da schon weiter ;-)) folgende Anleitung posten. (Vielleicht findet sie ja sogar irgendwann ihren Weg ins Wiki; ich selbst habe keine Ahnung, wie man da was schreibt.)(Verbesserungen und weitere Anmerkungen sind natürlich gerne gesehen.)

Dieses Howto erläutert die Schritte, die nötig sind, um ein openSUSE System mit einer Wii Remote zu verbinden und diese als Maus oder Gamepad zu verwenden.

Das halte ich für eine tolle Sache für den heimischen Computer aber auch für Schulen, Universitäten oder Firmen. Denn - für die, die es nicht wissen - die "Wiimote" ist ein Controller in Form einer Fernbedienung der Nintendos Spielekonsole Wii beiliegt und vielfältige Funktionen besitzt. Zum einen gibt es ein paar gewöhnliche Knöpfe, es werden aber aber auch Bewegungen in alle Richtungen erkannt, genauso wie Drehungen des Controllers um die Längs-Achse (Rollen) und die Quer-Achse (Kippen). Am interessantesten für die Verwendung am PC ist aber wohl die Pointerfunktion - mehr dazu später. (Die Vibrationsfunktion und der eingebaute Lautsprecher spielen hier keine Rolle, auch nicht, dass man über einen Extensionport noch weitere
Peripherie anschließen kann.)

Benötigte Hardware:
- Wii Remote (39 Euro)
- Wii Sensorleiste (10-20 Euro oder Hilfskonstruktion)
- Bluetooth (Sticks für 3-15 Euro)

Wer bereits eine Wii besitzt (eindeutige Kaufempfehlung an dieser Stelle ;-)), und auch über einen Bluetooth-fähigen Computer verfügt (die meisten modernen Notebooks haben z.B. meistens schon Bluetooth eingebaut) braucht also keine weiteren Anschaffungen zu machen.

Der Grund, weshalb man die Wiimote überhaupt mit einem PC benutzen kann, ist, dass diese eben ganz simpel über Bluetooth mit der Wii Konsole kommuniziert. Dennoch benötigt man noch eine Art Treiber. Diesen findet man in folgendem Repository:
http://download.opensuse.org/repositories/home:/hgraeber/
für suse 11.1 also z.B. http://download.opensuse.org/repositories/home:/hgraeber/openSUSE_11.0/
Es empfiehlt sich die 1-Klick-Installation über http://software.opensuse.org/search - das Tool heißt cwiid.
Mitgeliefert wird ein kleines "Testprogramm" mit einer grafischen Oberfläche namens wmgui. Bei mir hat es sich nicht im K-Menü gezeigt, ich musste es also aus der Konsole heraus oder mit einem Alt+F2 starten.
Über "File => connect" kann man die Wiimote dann verbinden und über "Settings" die verschieden Funktionen einschalten. Habt ihr euch von der Funktionalität überzeugt, beendet wmgui. Für das ganze System nutzbar wird die Wiimote erst durch das Programm wminput ("wminput --help" für alle Optionen; als root ausführen). Damit das richtig funktioniert, müsst ihr sicherstellen, dass auch das Programm python-cwiid installiert ist. Dann könnt ihr nach einem "wminput -w" schon euren Mauszeiger über die Wiimote steuern (nicht vergessen die Tasten „1“ und „2“ auf der Wiimote zu drücken, um sie in Bereitschaft zu setzen). Allerdings noch auf eine wenig intuitive Art und Weise: Durch Kippen bewegt sich der Zeiger nach oben/unten, durch Rollen nach rechts/links.
Doch es geht noch besser. Um die Maus jedoch per "Zeigen" auf den Bildschirm steuern zu können, braucht die Wiimote eine Orientierungshilfe. Nintendo hat hierfür die sog. Sensorleiste konzipiert. Diese wird auf dem Monitor/Fernseher aufgestellt oder davor. Von beiden Enden der knapp 30 cm langen Leiste werden Infrarotstrahlen ausgesendet, die die Wiimote mit ihrer vorne eingebauten "Kamera" ausmacht und so weiß in welche Richtung man zeigt.
Wer keine Wii besitzt, aber dieses Feature nutzen will kann sich also entweder eine solche Sensorleiste kaufen (eine kabellose (!), denn die normalen beziehen ihren Strom über die Wii, die man ja nicht hat) oder sich folgendermaßen behelfen: Man kann über Google mehr erfahren, aber kurz gesagt hat sich herausgestellt, dass zwei gewöhnliche Lichtquellen (Teelichter/LEDs/...) in einem Abstand von 20-30 cm nebeneinander platziert auch diesen Zweck erfüllen.
Jetzt kann man „wminput -c ir_ptr -w“ ausführen und der Mauszeiger folgt euren Bewegungen als wäre die Wiimote ein Zeigestock.
Der A-Knopf entspricht übrigens der linken, der B-Knopf der rechten Maustaste. Mit dem Steuerkreuz kann man senkrecht und horizontal scrollen. Mit den Tasten "+" und "-" kann man im Firefox auf die zuletzt besuchte Seite und wieder nach vorne wechseln.


Ich persönlich bin so begeistert von dieser Steuerung, dass die Wiimote (neben einer Tastatur) zum Standard-Bedienelement für den "Party-PC" bei mir im Hobbykeller geworden ist. Darum wollte ich es irgendwie hinbekommen, dass man nicht immer erst ein Terminal öffnen, root werden und wminput eingeben muss. Das war gar nicht so einfach und für den Fall, dass jemand dasselbe Interesse haben sollte wie ich, füge ich die nötigen Schritte dem Howto an.

Zuerst die Beschränkung auf den User root. Ich weise mal darauf hin, dass folgende Änderungen an den Systemeinstellungen möglicherweise zu Sicherheitslücken führen. Der Befehl "wminput" muss erstmal für den eigenen Benutzer ausführbar werden. Dazu muss die Datei /etc/sudoers editiert werden. Das macht man am besten, indem man sich in der Konsole als root anmeldet und "visudo" startet. Nun mit den Cursor-Tasten ganz nach unten scrollen und „i“ drücken. Folgenden Text kopieren …

Code:
# wiimote as mouse
Cmnd_Alias WIIMOTE = /usr/bin/wminput
peter All=NOPASSWD: WIIMOTE
… und über "Bearbeiten => Einfügen" einfügen. "peter" noch durch den eigenen Usernamen oder %users (für alle User) ersetzen. So speichert ihr die Änderungen: "Esc => :wq => Enter".
Diese Modifikation reicht jedoch leider noch nicht aus, denn das Programm wminput greift auf die Gerätedatei /dev/input/uinput zu, mit der nur root arbeiten darf. Ich musste leider die Erfahrung machen, dass es nicht ausreicht, einfach die Rechte der Datei zu ändern, da sie wohl bei jedem Neustart des System neu erstellt wird oder so. Folgender Schritt ist daher notwendig, der die Rechte bei jedem Neustart anpasst. Als root die Datei /etc/init.d/boot.local mit einem Texteditor (z.B. KWrite) öffnen und Folgendes einfügen.

Code:
# let all users set up a wii remote
chown root:users /dev/input/uinput
chmod g=rw /dev/input/uinput
Speichern.
Damit sollte wminput nach einem Neustart bereits als normaler User ausführbar sein.
Um die Verbindung zu automatisieren, kann man folgende Schritte durchführen:
In einem Editor die Zeile
Code:
wminput -c ir_ptr -w -r
eingeben und als wiimote.sh in ~/bin speichern.
Jetzt noch im Autostart-Verzeichnis (~/.kde/Autostart) eine Datei "wiimote" anlegen und per "Rechtsklick => Eigenschaften => Berechtigungen => ausführbar" ausführbar machen. Diese Datei soll folgenden Inhalt haben:

Code:
#!/bin/bash
sh ~/bin/wiimote.sh
Jetzt muss man nach dem Hochfahren und wenn der Desktop sichtbar wird (später geht auch) nur noch die "1" und "2" Knöpfe drücken und die Wiimote ist verbunden.
 
Finde ich auch sehr interessant.

Genau zu diesem Thema war in einer der letzte linuxuser-Ausgaben ein ganzer Artikel. Mal sehen ob ich den noch auskramen kann.

Gruß vom
BEN
 

Jägerschlürfer

Moderator
Teammitglied
Z-City schrieb:
Genau zu diesem Thema war in einer der letzte linuxuser-Ausgaben ein ganzer Artikel. Mal sehen ob ich den noch auskramen kann.
das wäre super. Würde mich auch mal interessieren. Allerdings denke ich, wird die Bedienung mit der Wii Remote doch etwas gewöhnungsbedürftig sein. Auf Präsentationen kommt das aber sicherlich gut :D
 
Vielleicht meint ihr das.

http://www.linux-community.de/Internal/Artikel/Print-Artikel/LinuxUser/2009/01/Wii-von-Geisterhand
 
Oben