domenica 13 settembre 2015

Problemi di plancia - seconda parte

Siamo oramai a fine agosto e finalmente riesco a mettere le mani sulla grafica della plancia ristampata, stacco la vecchia e applico questa.

La plancia definitiva di fronte

Il sottoplancia prima della cablatura

Poi mi armo di santa pazienza e di santo schema, cablo per bene i controlli all'encoder da collegare al Raspberry PI.

L'encoder (davanti) cablato ai vari tasti e joystick

Tutto bene, penso. È quasi fatta.

Allora, dopo aver montato il controller devo controllare che effettivamente funzioni:
per fare questo, devo entrare nella shell Linux e utilizzare il comando
jstest /dev/input/js0
per testare la risposta di ogni singolo controllo della plancia e scopro con sorpresa che funziona tutto come dovrebbe... tranne che per il joystick del secondo giocatore.
Chiaramente per prima cosa controllo il cablaggio, ma dopo molti tentativi devo arrendermi: purtroppo è cablato correttamente. È un problema software, e qui ti siedi e piangi... perché non hai un controller diffusissimo, ma un controller cinese che non sai nemmeno come si chiama....

Dopo un po' di ricerche, scopro che si tratta di uno xin-mo dual player.
Ancora un bel po' di ricerche e scopro che il driver linux per quel controller è difettoso e il joystick del secondo giocatore NON viene riconosciuto. Bene.
...
Dopo due settimane di ricerche totali arrivo in una pagina sperduta di un forum sperduto in un post sperduto dove un santone, sia benedetto, posta una soluzione tanto semplice:
basta editare il file /boot/cmdline.txt aggiungendo in fondo la stringa usbhid.quirks=0x16c0:0x05e1:0x040

Che tradotto in linguaggio umano pare aggiungere una eccezione per un dispositivo di input collegato sulla USB (usbhid), specificando il Vendor (10c0 - la xin-mo), il Product (05e1 - il mio modello) e l'azione (040 - dovrebbe essere una ignore). Immagino che dica a linux di ignorare il mio encoder, lasciando il compito di interpretarne i comandi ad un software caricato in un secondo momento.

L'alternativa altrimenti suggerita era di correggere e ricompilare il kernel, in pratica forkando il Retropie per collegare il mio xin-mo. Facile no?