Configurazione Gamepad Xbox360 Compatibile

presente anche SDL2

$ dnf list --installed 'SDL2*'
SDL2.i686                               2.0.14-1.fc33                   @updates
SDL2.x86_64                             2.0.14-1.fc33                   @updates
SDL2-devel.x86_64                       2.0.14-1.fc33                   @updates
SDL2_image.x86_64                       2.0.5-5.fc33                    @fedora 
SDL2_mixer.x86_64                       2.0.4-7.fc33                    @fedora 
SDL2_ttf.x86_64                         2.0.15-6.fc33                   @fedora 
SDL2_ttf-devel.x86_64                   2.0.15-6.fc33                   @fedora

Sull’articolo che hai linkato viene citato xboxdrv che su fedora si chiama xpad (non so se siano la stessa cosa in realtà) fornito proprio dal pacchetto kernel-modules-extra.
Quando ho aperto questo topic, avevo provato ad installare anche una versione patchata del modulo xpad che avevo trovato sui repo di negativo17.
Al momento il modulo comunque è già caricato sul kernel…

$ modinfo xpad
filename:       /lib/modules/5.10.19-200.fc33.x86_64/extra/drivers/input/joystick/xpad.ko.xz
license:        GPL
description:    X-Box pad driver
[...]

Xorg comunque non lo considera proprio…

$ xinput list
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ Logitech G203 Prodigy Gaming Mouse      	id=9	[slave  pointer  (2)]
⎜   ↳ Logitech G203 Prodigy Gaming Mouse Consumer Control	id=11	[slave  pointer  (2)]
⎜   ↳ SEMICO GXT 860 Keyboard Consumer Control	id=17	[slave  pointer  (2)]
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
    ↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
    ↳ Power Button                            	id=6	[slave  keyboard (3)]
    ↳ Video Bus                               	id=7	[slave  keyboard (3)]
    ↳ Power Button                            	id=8	[slave  keyboard (3)]
    ↳ Logitech G203 Prodigy Gaming Mouse Keyboard	id=10	[slave  keyboard (3)]
    ↳ Logitech G203 Prodigy Gaming Mouse System Control	id=12	[slave  keyboard (3)]
    ↳ Trust Webcam: Trust Webcam              	id=13	[slave  keyboard (3)]
    ↳ SEMICO GXT 860 Keyboard                 	id=14	[slave  keyboard (3)]
    ↳ SEMICO GXT 860 Keyboard System Control  	id=15	[slave  keyboard (3)]
    ↳ SEMICO GXT 860 Keyboard                 	id=16	[slave  keyboard (3)]
    ↳ Razer Razer Kraken X USB Consumer Control	id=18	[slave  keyboard (3)]
    ↳ Logitech G203 Prodigy Gaming Mouse Consumer Control	id=19	[slave  keyboard (3)]
    ↳ SEMICO GXT 860 Keyboard Consumer Control	id=20	[slave  keyboard (3)]

Dovrei mettermici con calma e provare ad adattare uno snippet su misura.

@oStile10001 Ho trovato anche questo copr :
https://copr.fedorainfracloud.org/coprs/petrb/xboxdrv/ che in teoria dovrebbe riprendere questo https://src.fedoraproject.org/rpms/xboxdrv :slightly_smiling_face: che poi finirebbe qua https://xboxdrv.gitlab.io/ però sui remirepo dopo fedora 29 se ne perdono le tracce https://rpms.remirepo.net/rpmphp/zoom.php?rpm=xboxdrv alchè ci riporta alla prima ipotesi sia mai che quel copr faccia a caso tuo ? :slightly_smiling_face:

xboxdrv è stato soppiantato da xpad… probabilmente non saranno la stessa cosa, ma sicuramente xpad è l’evoluzione di xboxdrv, ed è comunque un modulo molto più recente e più supportato (ci sarà anche un motivo se, da almeno 5 anni a questa parte, non ci sono stati nuovi rilasci di xboxdrv).

Comunque un tentativo ho voluto farlo, quindi ho provato ad installare il pacchetto xboxdrv presente sul repo copr che mi hai segnalato.

Eh, niente… purtroppo non mi è tornato molto utile.
Con il comando
$ sudo xboxdrv
ottengo questo output

xboxdrv 0.8.8 - http://pingus.seul.org/~grumbel/xboxdrv/ 
Copyright © 2008-2011 Ingo Ruhnke <[email protected]> 
Licensed under GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> 
This program comes with ABSOLUTELY NO WARRANTY. 
This is free software, and you are welcome to redistribute it under certain 
conditions; see the file COPYING for details. 

Controller:        Microsoft X-Box 360 pad
Vendor/Product:    045e:028e
USB Path:          002:007
Controller Type:   Xbox360

Your Xbox/Xbox360 controller should now be available as:
  /dev/input/js0
  /dev/input/event26

Press Ctrl-C to quit, use '--silent' to suppress the event output

E poi, boh… cioé, il controller viene rilevato dal sistema (su questo non c’è dubbio) ma assi e pulsanti non rispondono ad alcun comando e Xorg continua a sostenere che non ci siano driver per farlo funzionare.

Eppure i moduli per il kernel ci sono, non credo ci sia la necessità di aggiungerne altri molto più datati di quelli supportati attualmente.
Sono presenti anche i driver per Xorg, anche se Xorg sostiene il contrario… è proprio per questo che sono sempre più convinto che sia necessario aggiungere qualche snippet alla configurazione di Xorg.

Altro sito :slightly_smiling_face: https://blog.desdelinux.net/it/como-utilizar-mando-de-xbox-one-en-fedora-31-y-no-morir-en-el-intento/ però è di fedora 31. quello che trovo ti posto , perchè non ho modo di fare prove cè anche questo : https://awesomeopensource.com/project/paroj/xpad :slightly_smiling_face:

ho voluto fare una prova, già sapendo che comunque non sarebbe stata risolutiva… tra l’altro è stato il mio primo tentativo quello di installare la versione patchata da Steam di xpad, all’epoca del post si poteva scaricare dai repo Steam di negativo17.
Provai ad installare sia il pacchetto dkms-xpad, sia akmod-xpad… ma, allora come oggi, questo modulo patchato non è servito a risolvere il problema.

Tra l’altro Steam riesce anche a rilevarlo come controller, se provo ad identificarlo (tramite la modalità Big Picture), il gamepad vibra anche… però non c’è verso di far funzionare neanche un solo pulsante.
È come avere una tastiera che viene riconosciuta dal sistema ma, quando si va a digitare i tasti, questi non danno risposta… ora non so se possa dipende da un segnale di input che il sistema non riesce ad interpretare/riconoscere, magari dovuto sicuramente alla completa incompatibilità del dispositivo… alla fine si tratta di un comune gamepad generico Xbox compatibile, neanche originale.
Fatto sta che, oltre ad essere correttamente rilevato, non vuole proprio saperne di funzionare con alcun modulo del kernel o driver che sia.

Mi ci sto scervellando ma, oltre che a fare qualche tentativo con qualcosa che trovo in giro su internet, non ho proprio idea di dove andare a parare… mah :unamused: prima o poi mi deciderò a sostituire sto pezzotto che ho con qualcosa di decentemente più compatibile con linux.

@oStile10001 hai guarda anche qua ? :
https://wiki.archlinux.org/index.php/Gamepad :slightly_smiling_face:

1 Mi Piace

@edmondo credi davvero che abbia lasciato qualcosa di intentato? :sweat_smile:
Sì, ovviamente ho consultato anche quella wiki… sinceramente però, tra i paragrafi della wiki non ho trovato nulla di inerente al mio problema.
Non so proprio come risolvere (ammesso e non concesso che sia possibile)… quello che mi fa più rabbia è che il gamepad viene rilevato dal sistema e da Steam, ma nonostante ciò non funziona.

No, vabbe’ @edmondo :sweat: mi sa che invecchiando non riesco più a gestire i problem solving con lucidità… poi inizio a spazientirmi più facilmente e perdo di vista anche le cose più ovvie Using generic/clone controllers (tratto sempre da quella wiki). :poop:
Eh niente… alla fine mi è bastato creare semplicemente uno script in Python contenente quanto indicato sulla wiki

#!/usr/bin/env python3

import usb.core

dev = usb.core.find(idVendor=0x045e, idProduct=0x028e)

if dev is None:
    raise ValueError('Device not found')
else:
    dev.ctrl_transfer(0xc1, 0x01, 0x0100, 0x00, 0x14) 

ed eseguirlo con i privilegi di amministratore.

La prima volta che ho eseguito lo script mi restituiva l’errore ModuleNotFoundError: No module named 'usb', è stato necessario che installassi il pacchetto python3-pyusb.
Eseguendo nuovamente lo script, tutto è filato liscio… adesso il gamepad sembra funzionare senza problemi. :heart_eyes:

Piccola precisazione per chi dovesse incorrere nel medesimo problema; lo script python è utile soltanto per inizializzare correttamente il controller… è comunque necessario rieseguire lo script ogni qualvolta si scollega e ricollega il gamepad o dopo aver riavviato il PC.
Io per comodità ho salvato lo script in una cartella ed ho creato uno script shell ed un avviatore in modo da poterlo avviare comodamente sia da terminale, sia cliccando sul lanciatore dal menu delle applicazioni.

A tal proposito… dato che lo script deve essere eseguito con i privilegi di amministratore, ovviamente da terminale eseguo lo script shell che richiama quello python con sudo, mentre per creare il lanciatore ho utilizzato beesu.

@oStile10001 :rofl: :rofl: :rofl: :rofl: :rofl: è dal 2017 che è aperto il post è non lo avevi visto quello script ? :rofl: senza offesa se rido

@edmondo no vabbe’, per un periodo neanche ci ho più provato… però giuro che neanche lo avevo visto :sweat_smile:
Chissà quante volte mi sarà passato davanti agli occhi e neanche ci avevo fatto caso :woozy_face:

@oStile10001 può capitare una svista ( anche se di 4 anni ) almeno hai vinto la battaglia :joy:

@edmondo era soprattutto per una questione di principio :face_with_raised_eyebrow: anche perché, se devo essere sincero, non ci riesco a giocare con il gamepad :rofl:
Sarà una questione di abitudine, però sono un gamer vecchio stampo… mouse :computer_mouse: e tastiera :keyboard: a vita.

alla faccia del principio @oStile10001 4 anni :joy: p.s comunque pure io sono di vecchio stampo preferisco i giochi punto è clicca

no, vabbe’ :sweat_smile: seriamente… ad eccezione di qualche raro tentativo in cui collegavo il gamepad al PC per vedere se tante volte avrebbe funzionato (magari per intercessione divina), mi ci sono messo con un minimo di impegno solo in questi giorni per provare a capirci qualcosa.

Quattro anni fa avevo giusto fatto qualche tentativo installando xboxdrv e le versioni patchate di xpad… poi, sinceramente, persi subito la volontà e la pazienza per cercare di risolvere il problema.

Pensavo che erano propio 4 anni che ci tribulavi :slightly_smiling_face: però dai una bella soddisfazione alla fine :slightly_smiling_face:

1 Mi Piace

4 anni fa, dopo i primi tentativi, ci rinunciai quasi subito… poi ha avuto la meglio la mia pigrizia, quindi neanche ci ho più provato. In questi giorni mi ci sono messo perché non riuscivo a capacitarmi del fatto che il gamepad venisse rilevato ma non funzionasse.
Ero più che sicuro del fatto che dovevo cercare una soluzione che non fosse quella di installare moduli del kernel o driver strani.

Dopo aver eseguito lo script ho avviato evtest e… posso assicurarti che quando ho iniziato a vedere che sul terminale iniziavano a leggersi tutti gli eventi dei pulsanti che schiacciavo sono stato molto combattuto tra il fare i salti di gioia o spaccare il gamepad o entrambe le cose.

magari fare salti di gioia sul gamepad :rofl:

In effetti l’avrei fatto pure io :joy: ma di cose strane guarda che capitano pure a mè è magari a distanza di anni ci penso è dico ma guarda tè dove era il problema :joy:

1 Mi Piace

Aggiorno la discussione per far presente che il modulo xpad implementa ormai nativamente (in realtà già da settembre 2021) la funzionalità di inizializzazione i controller compatibili e che è stato, in seguito ad un periodo di testing, integrato direttamente anche sul kernel rendendo inutile l’utilizzo dello script.

Attualmente il mio controller funziona senza il bisogno di eseguire alcuno script… per inizializzarlo mi basta premere il tasto Home sul controller.