ubuntu-fr

Communauté francophone des utilisateurs d'Ubuntu

[[wiimote]]

Piste: » wiimote


Installation d'une Wiimote avec CWiid

De plus en plus de tutoriels sont disponibles sur la toile concernant l'utilisation d'une Wiimote sous linux. En voici un pour notre Ubuntu préférée :-). Vous verrez en consultant les références que je n'ai pas inventé grand chose, c'est plutôt un résumé de ce qu'il y a à faire.

Vous pourrez alors utiliser votre Wiimote en tant que souris, sans aucun effort, ou presque.

Pré-requis

  • Posséder un émetteur/récepteur Bluetooth
  • Avoir une Wiimote…
  • Allumer une sensorbar ou une bougie voire un projecteur infrarouge (facilement trouvable dans le commerce et pas cher)
Pour les bougies, une peut suffire, mais si vous avez un écran large, deux bougies espacés de 20 centimètres peuvent faire l'affaire pour couvrir tout l'écran

Sous Gutsy et suivants

Ayant suivi ce tuto de A à Z, je me suis demandé si depuis Gusty, il n'y avait pas un moyen un peu plus simple après tout ce temps. En fait, il existe effectivement des paquets tout prêt.

il suffit de lancer synaptic et d'avoir les dépots univers/multivers, et vous tapez Wii dans le moteur de recherche.

Installez les paquets lswm wmgui wminput

Ensuite, passez au chapitre Tester avec wmgui pour tester votre wiimote.

Puis savoir comment l'activer en tant que pointeur.

Sous Feisty et précédents

Installation de CWiid

Avant de commencer installons les paquets nécessaires à la compilation du programme : autoconf autotools-dev libbluetooth2-dev libgtk2.0-dev mouseemu bison flex gawk python-dev

Attention : mouseemu installe par défaut un délai qui bloque la souris à chaque fois qu'on appuie sur une touche du clavier. Pour supprimer ce délai, ajouter :

TYPING_BLOCK="-typing-block 0"

dans /etc/default/mouseemu et lancer

sudo /etc/init.d/mouseemu restart

Ensuite, il faut éditer le fichier /etc/udev/rules.d/40-permissions.rules en tant qu'administrateur afin d'autoriser les connexions avec les droits qui vont bien à uinput.

Pour cela, ajouter à la fin du fichier :

KERNEL=="uinput", MODE="0666"
il est possible que la ligne saute si l'on met à jour udev. Pensez-y.

Mise à jour du 4 septembre 2007 avec la version 0.6.00

Ensuite, nous allons télécharger et décompresser le logiciel CWiid :

wget http://abstrakraft.org/cwiid/downloads/cwiid-0.6.00.tgz
tar zxvf cwiid-0.6.00.tgz

Si tout se passe bien, toutes les dépendances sont satisfaites. On compile les sources :

cd cwiid-0.6.00
./configure
make

Une fois la compilation réussie, on installe en tant que root les binaires.

sudo make install

Sur ma machine, la librairie que l'on vient d'installer n'est pas trouvée directement. Un moyen (pas le plus classe) d'y remédier est de créer un lien symbolique par la commande (ceci n'a pas fonctionné chez moi avec la version 0.6.00 voir l'autre façon):

sudo ln -s /usr/local/lib/libwiimote.so.0.1 /usr/lib/libwiimote.so.0

Une autre façon de faire, qui fonctionne pour la version 0.6.00, « geekement » plus jolie, est d'ajouter « /usr/local/lib » au fichier « /etc/ld.so.conf » et de relancer un « ldconfig ». Tout ça en root, bien sûr !

À ce stade, tout doit être OK. On a fait le plus gros...

Configurer le serveur X

Avant tout, vérifier que le driver evdev est bien présent. Sur ma Edgy, il était en place. Sinon, installez le paquet xserver-xorg-input-evdev.

Éditer le fichier /etc/X11/xorg.conf.

Ajouter la section suivante, déclarant la Wiimote avec le pilote « evdev » :

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

Et dans la section « ServerLayout », ajouter la ligne suivante :

InputDevice     "Wiimote"               "AlwaysCore"

Normalement, on peut y aller !

Tester avec « wmgui »

Maintenant, on doit pouvoir lancer la commande :

 wmgui

note: chez moi cela ne se lançait pas, j'ai du faire :

 sudo ln -s /usr/local/lib/libcwiid.so.1.0 /usr/lib/libcwiid.so.1

Ce programme va nous permettre de vérifier que les capteurs de la wiimote sont bien gérés par le PC.

Utilisez File → Connect pour vous connecter à la Wiimote. Pour mettre la Wiimote en mode synchro, on presse simultanément les boutons 1 et 2 1). ou dans certains cas enlever le clapet des piles afin d'accéder à un petit bouton rouge, une fois appuyé les led bleue clignotent, la Wiimote est alors en mode synchro, cliquez alors sur Valider.

On peut afficher l'état courant de la Wiimote connectée :

  • Settings → Acc data permet d'afficher les données concernant l'accéléromètre
  • Settings → IR data permet d'afficher les données concernant l'infrarouge

J'ai pu constater que l'accéléromètre marche bien. Pour vérifier l'IR, vous devez brancher une sensorbar ou utiliser une simple bougie (chez moi ça marche !). L'idée est d'avoir une source ponctuelle d'infrarouge pour que le wiimote se repère.

Pour ceux qui auraient le message

Error establishing control channel connection

Il faut positionner la variable d'environnement WIIMOTE_BDADDR comme ci dessous (avec uu:vv:ww:xx:yy:zz qui est l'adresse MAC de votre WiiMote)

WIIMOTE_BDADDR=uu:vv:ww:xx:yy:zz
export WIIMOTE_BDADDR

Pour éviter de saisir ces commandes à chaque fois que vous lancez votre session il suffit de placer ses lignes dans votre fichier ~/.bashrc

Lancer « wminput »

Tout d'abord, on va chercher l'adresse de notre Wiimote.

Pour obtenir l'adresse Mac de votre Wiimote, tapez dans un terminal:

lswm

Ce petit programme va vous demander de mettre votre Wiimote en mode découvrable (appuyer sur 1 et 2 en même temps) et vous renvoi l'adresse mac de la Wiimote.

Si vous n'arrivez pas à utiliser cette méthode, voici une méthode plus "classique":

Mettez la wiimote en mode "découvrable" (1 et 2 en même temps), puis executez cette commande dans un terminal:

sudo hidd --search

L'adresse est de la forme « xx:xx:xx:xx:xx:xx ».

Dans certains cas, il est utile de charger un module pour faire fonctionner « wminut ». Un « lsmod » vous le dira. Dans le doute, taper :

sudo modprobe uinput

Et là, c'est presque gagné. Il existe (pour l'instant) deux façons de lancer « wminput ».

Mode accéléromètre

sudo wminput -c acc_ptr xx:xx:xx:xx:xx:xx

qui permet d'utiliser uniquement l'accéléromètre pour le contrôle de la souris. Il faut la pencher en avant/arrière et la tourner sur elle-même.

Mode infrarouge

sudo wminput -c ir_ptr xx:xx:xx:xx:xx:xx

qui permet d'utiliser le pointeur Infrarouge de la Wiimote. Il faut au préalable avoir une sensorbar sous tension, ou simplement une bougie vers l'ordinateur. Une vieille télecommande infra-rouge et un élastique fonctionne également. Sans doute la plus utile. Si ça ne fonctionne pas tout de suite, il faut redémarrer la machine.

Mode nunchuk

(fonctionne sur la version 0.6.00)

sudo wminput -c nunchuk_acc_ptr xx:xx:xx:xx:xx:xx

qui permet d'utiliser l'accéléromètre du nunchuk pour contrôle de la souris. L'utilisation est similaire au mode accéléromètre.

Si vous n'arrivez pas à l'activer, faite cette commande avant de lancer wminput:

sudo hidd --kill xx:xx:xx:xx:xx:xx

Références

Articles dont je me suis très fortement « inspiré »:

Un article en anglais assez complet : http://www.wiili.org/index.php/CWiid

Petit script qui automatise l'utilisation

Depuis que j'ai découvert ce tutoriel, je me suis lancé dans la fabrication d'un petit script permettant l'exécution en mode graphique.

Ce script nécessite d'avoir installé au préalable tout ce qu'il faut pour utiliser sa WiiMote, ainsi que zenity.

Copiez ce code dans un fichier texte et rendez le exécutable : Clique droit –> Propriétés –> Permissions –> Exécution : cochez la case autorisant

#!/bin/bash
#Script réalisé par KicheTof pour les utilisateurs de WiiMote.
#Script libre de toute modification sans aucune demande nécessaire :)
#Vive le libre :)
function quit {
if  [ $? != "0" ]; then
	exit 1
fi
[ $? -ne "0" ] && exit 2
 }
 device=$(hcitool scan | tail -n +2 | while read line
 do
echo -n "$line" | sed -r "s/\s*([0-9A-Fa-f:]+)\s*(.*)/\1\n\2\n/"
 done | zenity --list \
            --title "Utilisation de la WiiMote comme souris : 3 méthodes !" \
            --text "Maintenez la touche 1 et 2 en même temps pour activer le mode détection.\nChoisissez la WiiMote dans la liste (Nintendo RVL-CNT)" \
            --column "id" --column "appareil bluetooth")
 quit;
 while [ ! "$CHOIX_ACTION" ]
 do
CHOIX_ACTION=$(zenity --list --width "600" --height "200" \
		--title "Choisissez quelle méthode pour utiliser la WiiMote" \
		--text "Pilotage par Accéléromètre, par Infrarouge, ou via le Nunchuk" \
		--radiolist \
		--column "Choix" --column "Pilotage" --column "Description" \
		True Accéléromètre "Utilisation de la position de la WiiMote" \
		False Infrarouge "Utilisation de l'infrarouge à l'aide d'une bougie, par exemple" \
		False Nunchuk "Utilisation du nunchuk pour piloter la souris")
quit;
if [ $CHOIX_ACTION == "Accéléromètre" ]; then
	action="acc_ptr";
elif [ $CHOIX_ACTION == "Infrarouge" ]; then
	action="ir_ptr";
elif [ $CHOIX_ACTION == "Nunchuk" ]; then
	action="nunchuk_acc_ptr";
fi
 done
 zenity --info --title "Attention" --text "Si les led's ne clignotent plus, réappuyez sur 1 et 2 !\n\nPour quitter le script, pressez 3 secondes le bouton \"power\" de la WiiMote ! :)";
 wminput -c $action $device;

J'espère que bientôt, il y aura un équivalent Linux à ce que fait cette personne avec la Wiimote (très impressionnant).

http://www.cs.cmu.edu/~johnny/projects/wii/

Driver déjà disponible! paquets .deb pour Hardy i386 et amd64 : http://code.google.com/p/linux-whiteboard/downloads/list

ou les sources par le svn http://linux-whiteboard.googlecode.com/svn/trunk/

Un tutorial en français pour utiliser le tableau interactif wiimote sous linux : http://trucsinformatiques.free.fr/articles.php?lng=fr&pg=32 (obsolète, les paquets cités ci-dessus sont plus récents)


Contributeurs : Liberator, kichetof, Fabien26,sunab.

1) mais ça vous le saviez déjà ;-)

wiimote.txt · Dernière modification: Le 11/06/2008, à 19:55 par 91.163.18.173, 213.95.41.13
Le contenu de ce wiki est sous double licence : CC BY-SA et GNU FDL