[[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)
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"
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.
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.
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)