martedì 25 maggio 2010

Aspire One, Linpus lite: installazione di un joypad

In Linux ogni dispositivo viene modellato da un file, la cartella "/dev" del filesystem ne è piena! Altri file vengono poi creati nel momento in cui colleghiamo una nuova periferica all'Aspire One, se quest'ultima viene riconosciuta! Sfortunatamente in Linux Linpus lite sia i moduli che i file per modellare i joypad sono stati tolti, è possibile ripristinare moduli e file seguendo le istruzioni che a breve riporterò.
Il modulo "joydev.ko" è in grado di riconoscere la maggior parte dei joypad in commercio. Una sua copia può essere scaricata a questo indirizzo, il primo forum in Italia sull'Aspire One. Per l'estrazione del file appena scaricato ci affidiamo a "unzip", aprite una nuova sessione di terminal (premendo i tasti "Alt" ed F2", scrivendo "terminal" e cliccando sul bottone "Run") e date questo comando:

[user@localhost ~]$ unzip -j Downloads/joydev.zip

Il modulo "joydev.ko" si trova adesso nella stessa cartella che ospita il file "joydev.zip", per renderlo disponibile al sistema operativo occorre spostare il file in una cartella di sistema:

[user@localhost ~]$ sudo cp joydev.ko /lib/modules/2.6.23.9lw/kernel/drivers/input/

Il kernel di Linux è modulare, all'occorrenza possiamo aggiungere e caricare nuovi moduli. Ma come fa il sistema operativo a tenere traccia di tutti i moduli presenti su un computer? Esiste un albero di dipendenze fra moduli, i nodi di questo albero sono le cartelle per le infinite categorie di dispositivi, le foglie, invece, sono i moduli!
Se aggiungiamo un modulo occorre dire al sistema operativo di rivedere l'albero (delle dipendenze) con questo comando:

[user@localhost ~]$ sudo depmod

E' come dire al sistema operativo: "ricorda, adesso hai anche questo modulo!". La sola presenza del modulo non ne implica tuttavia il caricamento. Per aggiungere al kernel un modulo bisogna caricare lo stesso attraverso questo comando:

[user@localhost ~]$ sudo modprobe joydev

Ora dobbiamo creare i file per modellare le periferiche di gioco. Qualora fossero già presenti eliminare dalla cartella "/dev" i seguenti file:

[user@localhost ~]$ sudo rm /dev/js0
[user@localhost ~]$ sudo rm /dev/js1
[user@localhost ~]$ sudo rm /dev/js2
[user@localhost ~]$ sudo rm /dev/js3

Questi file non dovrebbero essere presenti in Linpus lite, proprio perché il modulo "joydev.ko" è stato escluso dall'albero dei moduli. Il path in cui il sistema operativo li cerca è comunque differente. I file "js0", "js1", "js2" e "js3" devono trovarsi nella cartella "/dev/input". Se tale cartella non esiste createla con il comando "sudo mkdir /dev/input". Per creare i nuovi file per le periferiche di gioco occorrono questi comandi:

[user@localhost ~]$ sudo mknod /dev/input/js0 c 13 0
[user@localhost ~]$ sudo mknod /dev/input/js1 c 13 1
[user@localhost ~]$ sudo mknod /dev/input/js2 c 13 2
[user@localhost ~]$ sudo mknod /dev/input/js3 c 13 3

Ogni volta che colleghiamo un joypad all'Aspire One si deve creare un file "jsX" nella cartella "/dev". Tale file deve puntare poi all'omonimo file "jsX" della cartella "/dev/input" (affidata al modulo "joydev"). Dobbiamo cioè creare un link simbolico fra il dispositivo che modella il joypad appena collegato (rappresentato ad esempio dal file "/dev/js0") e il file in grado di raccoglierne lo stato dei tasti (rappresentato ad esempio dall'omonimo file "/dev/input/js0"). E' possibile riprodurre questo funzionamento attraverso questi ultimi comandi:

[user@localhost ~]$ cd /dev
[user@localhost dev]$ sudo ln -s input/js0 js0
[user@localhost dev]$ sudo ln -s input/js1 js1
[user@localhost dev]$ sudo ln -s input/js2 js2
[user@localhost dev]$ sudo ln -s input/js3 js3

Possiamo finalmente inserire il nostro joypad e ricaricare il modulo "joydev" con il comando "sudo modprobe joydev". Alcuni joypad possono aver bisogno di ulteriori moduli, come ad esempio i moduli: "ns558.ko", "serport.ko" e "analog.ko". Pertanto, se le successive fasi non dovessero andare a buon fine ricordatevi di questi moduli (estraeteli e spostateli sempre nella nella cartella "/lib/modules/2.6.23.9lw/kernel/drivers/input/").
Per testare sia le funzionalità del joypad che l'avvenuto riconoscimento dello stesso è possibile usare un interessante tool: "jstest"! L'installazione di questo utilissimo comando avviene con "sudo yum install jstest" oppure cercando all'interno del gestore di pacchetti l'utility per il supporto ai joystick. Con il comando (in una nuova sessione di terminal):

[user@localhost ~]$ jstest /dev/js0

testiamo il dispositivo "js0", il primo joypad inserito. Se il dispositivo è stato riconosciuto (adesso si gioca... ) leggeremo nella finestra di terminal molte informazioni, come ad esempio: "Joystick ( SIGHT FIGHTER ACTION USB) has 2 axes and 8 buttons etc... etc...". Per ogni bottone del joypad esisterà una stringa che ne riporta lo stato. La pressione di uno o più tasti aggiornerà nella finestra di terminal lo stato dei bottoni!
Se il dispositivo non è stato riconosciuto ci verrà restituito il messaggio: "No such device". Ciò significa che per il joypad inserito occorrono altri moduli, quelli elencati in precedenza!

Nessun commento:

Posta un commento