Seconda parte della guida che descrive il procedimento di installazione e configurazione del controller Nintendo Wiimote su un PC: questa volta ci occupiamo di Linux.
Indice:
1. Introduzione |
Negli ultimi mesi, in ambito Linux, c'è una forte spinta allo sviluppo di librerie ad hoc per il Wiimote e in generale per il reverse engineering del Wiimote. A questo link, ad esempio, si trovano diverse informazioni utili al riguardo:
http://www.wiili.org/index.php/Wiimote_Reverse_Engineering
Molte features sono state già implementate, altre ancora mancano: nella lista TODO, al momento, ci sono il corretto funzionamento del bottone di accensione (power button) e poche altre funzionalità ancora da mappare.
Nella sezione "Drivers" della pagina http://www.wiili.org/index.php/Wiimote#See_Also:, sotto la voce "Linux" troviamo vari progetti: CWiid, WMD, Perlwiimote, libwiimote, lg3d-wii. Sono tutti validi, scegliete quello che più si addice alle vostre conoscenze di programmazione.
Oltre ai driver, solitamente sono necessarie delle librerie aggiuntive:
-
BlueZ (bluez-libs, bluez-utils, etc)
-
Eventuali dipendenze (in base alla distro)
2. Test dei driver |
Il primo progetto che ho testato è stato WMD: http://forthewiin.org/
WMD è un acronimo che sta per “Wiiwanna Motte Damniit”, ovvero un simpatico gioco di parole e fonetica per dire all'incirca “anche noi vogliamo giocare con il Wii!”. Il progetto, basato sul linguaggio Python, attualmente è stabile alla versione 0.1.2. Il corretto funzionamento della libreria, tuttavia, richiede alcune dipendenze e alcune piccole modifiche ad altre librerie, ragion per cui non mi sento di consigliare WMD al momento (nel file README sono comunque indicati chiaramente i passi da seguire). In ogni caso è risultata perfettamente funzionante su SuSE 10.1.
Video esempio di Ubuntu con Beryl su dual screen controllato tramite Wii-Mote con sensore a infrarossi:
La libreria che sto utilizzando ora con soddisfazione e che consiglio è libwiimote:
http://libwiimote.sourceforge.net/
Molto leggera, basata puramente su linguaggio C (quindi molto efficiente) e con poche dipendenze, libwiimote attualmente è alla versione 0.4. La versione da me testata è stata la 0.3: il pacchetto scompattato comprende i sorgenti in C da ricompilare tramite il classico “make” dalla directory di riferimento (ad es. libwiimote/). Prima ovviamente è necessario aver installato le BlueZ lib (se non presenti nel vostro sistema).
Eventuali errori di compilazione, se ce ne saranno, sono riconducibili a ulteriori dipendenze, che andranno soddisfatte scaricando e installando i pacchetti necessari tramite il vostro packet manager preferito.
Fatto questo, nella sotto-directory bin/ verranno compilati alcuni eseguibili di test.
3. Test del Wiimote |
Alcuni degli eseguibili compilati della libreria richiederanno come primo argomento l'indirizzo esatto del vostro Wii-Mote, per saperlo è sufficiente effettuare i seguenti passi:
-
1. Abilitare la vostra interfaccia BlueTooth.
-
2. Abilitare il WiiMote in stato di attesa (tasti '1' e '2' premuti insieme)
-
3. Digitare da shell:
# hcitool scan |
Quindi l'output dovrebbe somigliare a questo:
Scanning ... 00:19:1D:95:63:xx Nintendo RVL-CNT-01 |
Laddove, ovviamente, il codice esadecimale rappresenta l'indirizzo univoco del nostro Wiimote.
A questo punto non resta che posizionarsi sulla directory bin/, ripetere il passo 2 (Wii-Mote in attesa) e lanciare uno dei test, passando eventualmente primo argomento proprio il suddetto indirizzo. Utilizzando un indirizzo preciso invece che l'auto-riconoscimento (comunque possibile) si garantisce la sicurezza che solo il proprio wiimote possa controllare il PC.
I test visualizzano in generale alcuni dati a schermo: e.g. batteria rimanente, test di rumble, led, accelerometro, wiimote multipli, etc...
4. Test di interfacciamento con Beryl/Compiz |
Il piccolo programma in C che ho creato, utilizzando la libreria libwiimote, permette tramite il modulo “uinput” di interpretare i segnali o movimenti del wii-mote e trasformarli in eventi tastiera o altro. Le possibili estensioni sono molte, anche in vista della desiderata e tanto attesa fusione tra i progetti Beryl e Compiz.
Il video che ho creato mostra alcune delle funzionalità implementate, tra cui zoom, volume, rotazione cubo e altro:
-
1. Scaricate il programma my-test.c da questo indirizzo
-
2. Prima di compilare il programma è sufficiente modificare la seguente riga con l'indirizzo del vostro Wiimote, in modo tale da ascoltare solamente quella determinata periferica:
#define MY_WIIMOTE_ADDR "00:19:1D:95:XX:XX" |
-
3. Quindi compilate il codice
-
4. Successivamente come utente root, occorre dare il comando:
# modprobe uinput |
-
5. Infine avviate l'eseguibile come mostrato nel video sopra.
Il programma è ancora in fase di test, quindi da utilizzare a proprio rischio e pericolo. Qualsiasi contributo che serva a migliorare il programma o a estenderne le funzionalità è benvenuto.
<< Pagina precedente: Nintendo Wiimote su PC. Parte I. Windows | |
Nintendo Wiimote su PC. Parte I. Windows | |
Nintendo Wiimote su PC. Parte II. Linux |