picerno ha scritto: ↑22/07/2025, 15:10
BebboMT ha scritto: ↑22/07/2025, 14:08
sono riuscito a creare il file kbd in xarcade2jstick con la procedura corretta ma continua a vedermi solo un player in Batocera
ma quindi ora il comando
ls /dev/input/by-id funziona?
BebboMT ha scritto: ↑22/07/2025, 14:08
Mi sa che mi sono fermato anche io al passo successivo e cioè che lo script cerca il file in un posto diverso...
lo script che all'avvio carica il driver sta in
/etc/init.d/S26system e cerca il file in
/usr/share/batocera/datainit/system/configs/xarcade2jstick invece di
/userdata/system/configs/xarcade2jstick. se metto il file nell'altro percorso al riavvio non lo trovo più, se modifico lo script con il percorso giusto al riavvio la modifica non c'è più ma se lancio il comando a mano
/usr/bin/xarcade2jstick -d -e /dev/input/by-id/usb-ASD_JammASD_Interface_ASD275D-if01-event-kbd i due gamepad compaiono. c'è qualcosa che non torna o sono io che non ho capito il meccanismo. se anche a te si verifica la stessa cosa e non troviamo una spiegazione logica possiamo lanciare alla fine uno script custom che esegue il comando. io avvio il sistema da immagine, tu l'hai installato su hard disk? non vorrei che fosse questa la causa di questo problema
Da ignorante in materia quale sono, ho chiesto a gemini di google e mi ha detto di provare questa procedura:
Il fatto che il comando
/usr/bin/xarcade2jstick -d -e /dev/input/by-id/usb-ASD_JammASD_Interface_ASD275D-if01-event-kbd funzioni quando lo lanci a mano è la chiave. Significa che l'utility
xarcade2jstick e la tua JAMMASD funzionano perfettamente insieme. Dobbiamo solo fare in modo che quel comando venga eseguito automaticamente e in modo persistente all'avvio di Batocera.
La soluzione standard per eseguire comandi personalizzati all'avvio di Batocera è utilizzare lo script
custom.sh nella directory
/userdata/system/. Questa directory è sulla partizione persistente e quindi i cambiamenti rimangono anche dopo i riavvii.
Ecco la procedura per far partire xarcade2jstick all'avvio in modo persistente:
1. Connettiti a Batocera via SSH.
2. Crea o modifica lo script
custom.sh:
Naviga nella directory
/userdata/system/:
Bash
Apri il file
custom.sh con un editor di testo come nano:
Bash
Incolla il seguente contenuto nel file.
Questo script è progettato per attendere che il tuo dispositivo JAMMASD sia pronto (poiché i link by-id potrebbero non essere disponibili immediatamente all'avvio) e poi esegue il comando xarcade2jstick.
Bash
Codice: Seleziona tutto
#!/bin/bash
# Definizione dell'ID del dispositivo JAMMASD
DEVICE_ID="usb-ASD_JammASD_Interface_ASD275D-if01-event-kbd"
DEVICE_PATH="/dev/input/by-id/$DEVICE_ID"
# Loop di attesa: attendi che il symlink del dispositivo JAMMASD sia presente.
# Questo è importante perché i symlink /dev/input/by-id/ vengono creati
# in un momento leggermente successivo nel processo di avvio.
# Aspetta fino a 30 secondi per evitare di bloccare l'avvio.
COUNTER=0
while [ ! -e "$DEVICE_PATH" ] && [ $COUNTER -lt 30 ]; do
sleep 1
COUNTER=$((COUNTER+1))
done
# Se il dispositivo è stato trovato, esegui il comando xarcade2jstick in background
if [ -e "$DEVICE_PATH" ]; then
echo "$(date): JAMMASD device found at $DEVICE_PATH, starting xarcade2jstick..." >> /var/log/custom_script.log
/usr/bin/xarcade2jstick -d -e "$DEVICE_PATH" &
echo "$(date): xarcade2jstick command issued." >> /var/log/custom_script.log
else
echo "$(date): JAMMASD device $DEVICE_PATH not found after timeout, cannot start xarcade2jstick." >> /var/log/custom_script.log
fi
exit 0
Salva il file (se usi nano: Ctrl+O, poi premi INVIO, poi Ctrl+X).
3. Rendi lo script eseguibile:
Ancora nella directory
/userdata/system/, assegna i permessi di esecuzione allo script:
Bash
Riavvia Batocera:
Bash
Cosa succederà ora:
All'avvio di Batocera, il sistema eseguirà lo script
custom.sh.
Lo script attenderà che la tua JAMMASD sia correttamente rilevata dal kernel e che il suo link by-id sia disponibile.
Una volta rilevato, eseguirà il comando
/usr/bin/xarcade2jstick -d -e ... in background.
Questo dovrebbe far sì che i due gamepad (Player 1 e Player 2) appaiano nel sistema e siano rilevabili da EmulationStation.
Verifica (se non dovesse funzionare ancora):
Se, dopo aver riavviato, vedi ancora "
NESSUN CONTROLLER RILEVATO", puoi controllare un log che ho aggiunto nello script:
Accedi via SSH e digita:
Bash
Questo ti dirà se lo script è stato eseguito, se ha trovato il dispositivo e se ha tentato di avviare xarcade2jstick.
Questa dovrebbe essere la soluzione definitiva, in quanto utilizza il meccanismo di persistenza di Batocera per eseguire il comando che sappiamo funzionare manualmente.