Je me suis fait un petit plaisir pour Noël : l'achat du jeu Guitar Hero 3 sur Wii accompagné de la guitare qui va bien.

Rien à dire, c'est un excellent jeu, et avec la guitare c'est le pied intégral...

Etant un fan de l'équivalent libre de Guitar Hero, à savoir Frets on Fire, je me suis posé la question s'il n'était pas possible de faire fonctionner cette guitare sous Linux et plus précisément sur Frets on fire.

La réponse est OUI ! C'est possible ! Et plus simplement que je ne le pensais. Voici le topo :

Tout d'abord, il faut savoir que la wiimote fonctionne en bluetooth. Il faut donc avoir sur votre PC un adaptateur bluetooth intégré (le cas des laptops) ou une petite clé usb bluetooth. Le PC doit être équipé de Linux et si possible sous Debian lenny ou sid ou encore sous Ubuntu Gutsy car les paquets pour contrôler la wiimote sont déjà packagés. Sinon il faudra compiler la librairie et les outils par ses propres moyens.

La librairie permettant de contrôler la Wiimote se nomme cwiid. Elle offre tous les outils nécessaires afin d'interfacer la wiimote à son PC.

Commençons donc le tutorial :)

Tout d'abord, ajoutons une règle udev afin de pouvoir utiliser le device uinput en utilisateur :

# vim /etc/udev/rules.d/020_permissions.rules

Et ajoutez la ligne :

KERNEL=="uinput", MODE="0666"

Ensuite chargeons le module uinput :

# modprobe uinput

Installons les paquets nécessaires :

# aptitude install libcwiid1 lswm python-cwiid wminput bluez-utils

Munissez vous de votre wiimote et appuyez sur le bouton 1 et 2 simultanément pour la passer en mode association. Pas besoin de maintenir les boutons enfoncés. Avec la wiimote en train de clignoter, nous allons lancer une détection des périphériques bluetooth pour voir si notre wiimote est détectée. L'affichage devrait donner quelque chose de ce genre :

$ hcitool scan
Scanning ...
        00:19:1D:6A:49:0A       Nintendo RVL-CNT-01

Si la wiimote n'est pas détectée, pas besoin de continuer ce tutorial, vous avez un souci de bluetooth :(

Il faut ensuite créer un fichier de mappings pour wminput. Cet utilitaire va permettre d'associer la wiimote au PC et de mapper des touches de clavier.

# vim /etc/cwiid/wminput/wiiguitar

Et y coller les lignes suivantes :

# Profil wiiguitar
Classic.A = KEY_F1
Classic.B = KEY_F2
Classic.X = KEY_F3
Classic.Y = KEY_F4
Classic.ZL = KEY_F5
Classic.Down = KEY_ENTER
Classic.Up = KEY_ENTER
Classic.Dpad.X = ABS_X
Classic.Dpad.Y = ABS_Y
Classic.LStick.X = ABS_HAT0X
Classic.LStick.Y = ABS_HAT0Y
Classic.RStick.X = ABS_HAT1X
Classic.RStick.Y = ABS_HAT1Y
Classic.Minus = BTN_SELECT
Classic.Plus = BTN_START
Classic.Home = BTN_MODE
Classic.L = BTN_TL
Classic.R = BTN_TR
Classic.ZR = BTN_TR2

On y est presque ! Plus qu'à lancer wminput avec les bonnes options. Adaptez bien évidemment la ligne de commande avec l'adresse MAC de votre wiimote.

$ wminput -c /etc/cwiid/wminput/wiiguitar 00:19:1D:6A:49:0A

Appuyez vite sur le bouton 1 et 2 de votre wiimote comme wminput vous l'indique. Si vous voyez un "Ready." s'afficher, vous êtes prêts à rocker sur frets on fire ! Laissez impérativement le terminal ouvert. Démarrez ensuite frets on fire, et testez ! J'ai laissé les touches par défaut de frets on fire et fait le mapping en conséquence, ne changez donc pas les paramètres du jeu.

Frets on fire avec une vraie guitare et pas un clavier, c'est vraiment beaucoup mieux ! En moyenne j'augmente mes scores de 25% avec la guitare.

Sur ce, bon rock ! :)