some answers found here :
https://gitlab.com/recalbox/recalbox/-/blob/master/RELEASE-NOTES.md
is there a file to identify build number or version of all emulators packaged in a recalbox version ?
you cannot change Boot order from Recalbox OS; raspi-config is not implemented.
all changes in config.txt file will be overwritten at next reboot.
you need to boot Raspberry OS on SD card to update firmware and modify Boot order with raspi-config
sudo apt update sudo apt full-upgrade
sudo rpi-eeprom-update
sudo raspi-config
Advanced Options --> Boot Order
I am not sure you can boot USB before NVMe
Voici la ligne directrice à suivre si vous souhaitez configurer votre RaspBerry PI5 avec Recalbox 9.2.3 en boot NVMe sans SDcard.
Il faut :
1/ booter avec la carte SD Raspberry OS Lite 64 bit (bookworm)
2/ faire les update OS & et les firmwares
3/ il faut positionner les options dans le fichier /boot/recalbox-user-config.txt
dtparam=pciex1 ; enable PCIE
#dtparam=pciex1_gen=3 ; PCIE gen2 if not set
dtparam=nvme ; myabe used for NVMe disk
4/ Lancer raspi-config pour modifier le boot en mode NVMe
5/ Arreter le system : halt puis débrancher électriquement le Pi
6/ sur un ordinateur : copier la carte SD Recalbox 9.2.3 dans un fichier image
7/ sur un ordinateur : formater le disque NVMe en ext4 avec un MBR
8/ ecrire le fichier image Recalbox 9.2.3 sur le disque NVMe (sur la seconde lettre de partition)
9/ Installer le disque NVMe dans le Pi5 (plus besoin de carte SD); l'OS doit booter
10/ Il faudra modifier les partitions pour utiliser l'espace supplémentaire entre la taille de la carte SD image et la taille du disque NVMe (example : carte SD 32GB avec un NMVe de 512GB : vous aurez que 32GB et il manquera 480GB à allouer). Je vous conseiller de créer et de monter une nouvelle partition (/dev/nvme0n1p5) pour remplacer /recalbox/share/roms (Cela vous évitera de modifier le fichier /etc/samba/smb.conf) :
/dev/nvme0n1p1 on /boot type vfat (ro,relatime,fmask=0022,dmask=0022,codepage=437,iocha**et=ascii,shortname=mixed,errors=remount-ro)
/dev/nvme0n1p3 on /overlay type ext4 (rw,relatime)
/dev/nvme0n1p2 on /recalbox/share type exfat (rw,noatime,fmask=0133,dmask=0022,iocha**et=utf8,errors=remount-ro)
/dev/nvme0n1p5 on /recalbox/share/roms type exfat (rw,noatime,fmask=0133,dmask=0022,iocha**et=utf8,errors=remount-ro)
/dev/nvme0n1p2 on /run/udev/rules.d type exfat (rw,noatime,fmask=0133,dmask=0022,iocha**et=utf8,errors=remount-ro)
overlay on /recalbox/share/arcade type overlay (ro,relatime,lowerdir=/overlay_root/lower,upperdir=/overlay_root/upper,workdir=/overlay_root/work)
/dev/nvme0n1p3 on /recalbox/share/bootvideos type ext4 (rw,relatime)
Voici un example de résultat avec une carte SD de 32GB pour l'image sur un NVMe de 1TB :
Filesystem Size Used Available Use% Mounted on
none 3.6G 0 3.6G 0% /dev
/dev/nvme0n1p1 3.0G 1.2G 1.8G 40% /boot
/dev/nvme0n1p3 988.4M 476.0K 920.8M 0% /overlay
/dev/loop0 1.2G 1.2G 0 100% /overlay/lower
overlay 988.4M 476.0K 920.8M 0% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 16.0K 3.9G 0% /tmp
tmpfs 3.9G 4.1M 3.9G 0% /var
tmpfs 3.9G 364.0K 3.9G 0% /run
/dev/nvme0n1p2 25.7G 582.7M 25.1G 2% /recalbox/share
/dev/nvme0n1p5 924.1G G G % /recalbox/share/roms
/dev/nvme0n1p2 25.7G 582.7M 25.1G 2% /run/udev/rules.d
overlay 988.4M 476.0K 920.8M 0% /recalbox/share/arcade
/dev/nvme0n1p3 988.4M 476.0K 920.8M 0% /recalbox/share/bootvideos
La configuration des controleurs est buggé avec OpenBOR dans Recalbox 9.2.3
Il faut modifier dans le fichier Python /usr/lib/python3.11/site-packages/configgen/generators/openbor/openborControllers.py:
if item.Value < -1: return index + controller.ButtonCount + (item.Id * 2 + 0)
==> "item.Value < -1" par "item.Value <= -1"
if item.Value <= -1: return index + controller.ButtonCount + (item.Id * 2 + 0)
Cela permet de definir la configuration dans le fichier /recalbox/share/system/configs/openbor/default.cfg
ensuite, le systeme crée automatiquement un fichier de configuration par jeux dans ce meme repertoire.
Pour modifier l'ordre des touches par defaut, le plus simple est de modifier l'ordre des commandes dans le script openborControllers.py
exemple (avant L1 pour Jump, B pour Attack2) :
# Openbor Pad event index to recalbox item
OPENBOR_TO_RECALBOX: Dict[str, int] =\
{
"MOVEUP" : InputItem.ItemUp,
"MOVEDOWN" : InputItem.ItemDown,
"MOVELEFT" : InputItem.ItemLeft,
"MOVERIGHT" : InputItem.ItemRight,
"ATTACK" : InputItem.ItemA,
"ATTACK2" : InputItem.ItemB,
"ATTACK3" : InputItem.ItemX,
"ATTACK4" : InputItem.ItemY,
"JUMP" : InputItem.ItemL1,
"SPECIAL" : InputItem.ItemR1,
"START" : InputItem.ItemStart,
"SCREENSHOT" : InputItem.ItemL2,
"HOTKEY" : InputItem.ItemHotkey,
}
apres (avant B pour Jump, Y pour Attack2):
# Openbor Pad event index to recalbox item
OPENBOR_TO_RECALBOX: Dict[str, int] =\
{
"MOVEUP" : InputItem.ItemUp,
"MOVEDOWN" : InputItem.ItemDown,
"MOVELEFT" : InputItem.ItemLeft,
"MOVERIGHT" : InputItem.ItemRight,
"ATTACK" : InputItem.ItemA,
"ATTACK2" : InputItem.ItemY,
"ATTACK3" : InputItem.ItemX,
"ATTACK4" : InputItem.ItemL1,
"JUMP" : InputItem.ItemB,
"SPECIAL" : InputItem.ItemR1,
"START" : InputItem.ItemStart,
"SCREENSHOT" : InputItem.ItemL2,
"HOTKEY" : InputItem.ItemHotkey,
}
C'est la configuration la plus simple à implémenter pour obtenir le resultat souhaité.
Pensez à sauvegarder / copier les fichiers d'origines; si vous faites une erreur de synthaxe, plus aucune Rom ne sera lancera...
Suite à une mise à jour Recalbox, les modifications seront perdues, et devront etre réadaptées en fonction de la nouvelle Build OpenBOR.
prérequis :