Attivare il joystick su porta game
Da Linux@P2P Forum Italia.
Far funzionare un joystick su gameport (porte a 15 pin viste spesso vicino ai connettori sulle schede audio) potrebbe rivelarsi un' operazione non del tutto banale, in particolar modo se si dispone di un chip audio integrato. Nonostante questo tipo di porta sia praticamente in disuso (i PC più recenti non le montano) tutte le schede e chip audio continuano a supportarle.
I driver ALSA (Advanced Linux Sound Architecture) (utilizzati da quasi la totalità dei chip audio) hanno sempre supportato le gameport ma, di default, disattivato la gestione delle porte per i chip integrati. Pertanto collegando semplicemente il joystick alla porta game, non si ricaverà nulla di fatto. Al contrario nelle schede audio retail la porta game resta attivata e la procedura risulta essere più semplice.
La guida che segue è stata realizzata per Ubuntu 7.10 Gutsy Gibbon, ma dovrebbe risultare valida anche per altre distro Debian based.
All'inizio di ogni comando troverete uno di questi due simboli: $ (dollaro) e # (cancelletto). La presenza di $ indica che il comando può essere eseguito anche come normale utente, mentre il simbolo # indica che il comando che lo segue deve essere eseguito con privilegi di amministratore (root). Da utenti normali è possibile divenire root in questo modo: da terminale, si digiti:
$ su oppure, su Ubuntu e varianti: $ sudo su Verrà richiesta la password di amministratore (su Ubuntu e varianti quella dell'utente): per motivi di sicurezza e riservatezza non verrà mostrata durante la digitazione. A questo punto (si noti # al posto di $, segno che ora si è root) sarà possibile lanciare il comando: # comando NOTA: per Ubuntu e varianti, nel caso si necessiti di eseguire solo pochi comandi, esiste un'alternativa: basta far precedere il comando da eseguire da "sudo", in questo modo: $ sudo comando Per altre indicazioni sulle convenzioni della linea di comando vedere "introduzione all'uso della shell" | |
Indice |
Prerequisiti
Prima di tutto occorre conoscere la scheda audio (e il relativo chip) a disposizione. Apriamo quindi la nostra sessione terminale:
# lspci | grep audio
otterremo l'elenco delle periferiche audio connesse al bus PCI. Nel nostro caso abbiamo un chip C-Media 8738:
02:0d.0 Multimedia audio controller: C-Media Electronics Inc CM8738 (rev 10)
Successivamente dobbiamo capire quale driver il nostro sistema usi per sfruttarla:
$ lsmod | grep snd_
Individuiamo il modulo relativo al chip audio (si chiamerà probabilemnte snd_modello) che nel nostro caso è snd_cmipci (chip CM8738). A questo punto:
# gedit /usr/share/doc/alsa-base/driver/joystick.txt
E individuiamo il nostro chip nell'elenco. Ora occorre installare i tools per il test e la calibrazione del joystick (ossia le joystick testing utilities):
# apt-get install joystick
e, se si desidera un interfaccia grafica per la calibrazione, anche:
# apt-get install jscalibrator
Attivare la porta game
Se abbiamo una scheda audio retail la porta game dovrebbe essere già attivata e si può pertanto passare direttamente alla sezione successiva della guida. Nel caso di chip audio integrato, invece, dobbiamo fare in modo che il driver ALSA possa attivare la gameport.
Leggiamo la riga del file joystick.txt relativa al modulo cmipci (che è quello specifico del chip) CM8738. Per altri chip fate riferimento alla riga del relativo modulo):
cmipci joystick_port 0 = disable (default), 1 = auto-detect,
manual: any address (e.g. 0x200)
significa che per attivare la porta game bisogna passare al modulo cmipci (snd-cmipci) l'opzione joystick_port=1
torniamo al terminale
# gedit /etc/modprobe.d/options
Aggiungiamo la riga
options snd-cmipci joystick_port=1
questo farà sì che al boot il modulo cmipci venga caricato con la gameport attivata.
Salviamo e riavviamo (con il joystick connesso).
Caricare moduli nel kernel
Ora dovremmo avere la porta attiva e non ci resta che caricare nel kernel i moduli necessari. Considerate che il joystick viene rilevato solo quando vengono caricati i moduli e quindi bisogna che a questo punto sia già connesso. Se disconnette e riconnettete il joystick, sappiate che bisognerà scaricare e ricaricare i moduli perchè venga rilevato e venga creato il nodo js0 in /dev/input.
# modprobe joydev # modprobe analog
per un joystick generico. I moduli specifici per altri joystick li trovate in fondo a questa guida.
Io posseggo un MS Sidewinder e quindi invece del modulo analog caricherò:
# modprobe sidewinder
Se invece abbiamo una scheda retail non serve passare l'pzione, ma dobbiamo caricare il modulo ns558, se non è già presente (controlliamo con lsmod).
# modprobe ns558
A questo punto in \dev\input\ dovrebbe essere comparso un nuovo nodo js0 il che significa che il sistema “sente” il joystick.
Controlliamo:
$ jstest /dev/input/js0
Il comando ritornerà una serie di valori numerici per gli assi e per i bottoni del joystick. Possiamo già verificare come i valori cambino se muoviamo il joystick o i tasti. Il joystick funziona.
ctrl+c per interrompere e tornare al prompt
# gedit /etc/modules
Qui vediamo i moduli che vengo caricati al boot. Aggiungiamo quindi le seguenti due (o tre) righe
ns558 (inserite questa riga solo se avete una scheda retail ed il vostro driver non lo carica di default) joydev sidewinder (oppure analog o altro a seconda della periferica)
Salviamo. Un bel riavvio per testare se tutto parte a dovere a questo punto non guasta. Riavvio o no, non resta che calibrare il joystick con
$ jscal /dev/input/js0
oppure con la più comoda GUI
$ jscalibrator
Ricordate di salvare il file di calibrazione.
In /lib/modules/2.6.22-14-generic/kernel/drivers/input/joystick sono presenti tutti i moduli per l'hardware supportato.
Informazioni sui driver
Sintetizzo di seguito le informazioni che ho trovato in giro, senza pretendere che possano essere esaustive.
Driver generico
La maggior parte dei joystick funziona (anche) con il modulo analog. Questo modulo in generale supporta joystick/gamepad
- 2-assi, 4-pulsanti
- 3-assi, 4-pulsanti
- 4-assi, 4-pulsanti
- CH Flightstick Pro, ThrustMaster FCS
| Periferica | Modulo | Note |
| Microsoft Sidewinder | sidewinder | anche analog, limite 4 pulsanti |
| Logitech | adi | anche analog, limite 4 pulsanti |
| Gravis | grip | |
| FPGaming A3D-MadCatz A3D | a3d | |
| ThrustMaster DirectConnect | tmdc | |
| Creative Labs Blaster | cobra | |
| Genius Digital | gf2k | |
| InterAct Digital | interact |
Link esterni
Atre informazioni su moduli e periferiche compatibili potete trovarle. qui (informazioni in inglese)