Eden pour RomM
RomM — Emulator Streaming avec Eden (Nintendo Switch) sur Unraid (GPU NVIDIA)
Ce tutoriel explique comment ajouter un conteneur Eden (émulateur Nintendo Switch, fork de Yuzu) à une instance RomM 5.1.0+ pour lancer des jeux Switch depuis RomM et y jouer dans le navigateur, avec rendu GPU NVIDIA.
Le principe est identique à l'intégration Dolphin : un Docker Mod injecte un broker HTTP (port 8000 du conteneur) que RomM contacte, et le flux est diffusé par Selkies en H.264 NVENC.
✅ Testé et fonctionnel avec RomM 5.1.0 stable (la branche de développement n'est pas nécessaire), Unraid 7, Ryzen 9 3900X + RTX 3060,
lscr.io/linuxserver/eden. Résultat : Mario Kart 8 Deluxe à 60 FPS stables en 1080p dans le navigateur.
📖 Ce guide suppose que la page « Emulator Streaming avec Dolphin » a déjà été suivie : les prérequis hôte sont les mêmes et ne sont pas re-détaillés ici — plugin Nvidia Driver (branche Production, ≥ 580), paramètres noyau
nvidia-drm.modeset=1 nvidia_drm.fbdev=1, et surtout les deux correctifs NVIDIA (§2 de la page Dolphin) : composant egl-x11 et nœud/dev/nvidia-modeset, indispensables ici aussi.
1. Particularités d'Eden à connaître avant de commencer
- Contenu requis de votre propre console. Eden ne lance aucun jeu commercial sans les
prod.keys(clés de déchiffrement) et le firmware de la Switch — à extraire de votre propre console. - Eden est Vulkan-first, et son backend Vulkan a besoin du nœud
/dev/nvidia-modeset(§2.2 de la page Dolphin). Sans lui : liste de GPU vide dans les menus, et au lancement d'un jeu l'erreur « Eden has encountered an error while running the video core » (log :Invalid device index -1,VK_ERROR_INITIALIZATION_FAILED). - Les réglages faits dans l'interface ne sont jamais sauvegardés quand Eden est lancé par le broker : celui-ci tue le processus avant qu'Eden n'écrive sa configuration. Tout réglage durable se fait dans le fichier, conteneur arrêté (§5).
- Deux réglages par défaut coûtent très cher en performances : la précision GPU sur High et l'absence d'épinglage CPU sur les Ryzen multi-CCD (§5 et §6). Sans eux, comptez ~30 FPS au lieu de 60.
2. Conteneur Eden
Image : lscr.io/linuxserver/eden. Configuration identique à Dolphin, à trois différences près : le mod, les ports hôte (les deux conteneurs coexistent), et l'appdata dédié.
2.1 Ports (host:container)
Les services écoutent toujours sur 3000/3001/8000 côté conteneur — seuls les ports hôte changent :
| Port hôte (exemple) | Port conteneur | Rôle |
|---|---|---|
| 3010 | 3000 | Selkies HTTP |
| 3011 | 3001 | Selkies HTTPS (flux de jeu) |
| 8001 | 8000 | Broker RomM |
2.2 Variables d'environnement
| Variable | Valeur |
|---|---|
DOCKER_MODS |
ghcr.io/loneangelfayt/eden-romm-integration-mod:latest |
ROM_ROOT |
/romm/library |
BROKER_SECRET |
le même secret que vos autres conteneurs émulateurs — RomM n'a qu'un STREAMING_BROKER_SECRET global |
NVIDIA_VISIBLE_DEVICES |
UUID du GPU (ou all) |
NVIDIA_DRIVER_CAPABILITIES |
all |
DRINODE / DRI_NODE |
/dev/dri/renderD128 (adapter) |
SELKIES_MANUAL_WIDTH / HEIGHT |
1920 / 1080 |
__EGL_VENDOR_LIBRARY_FILENAMES |
/usr/share/glvnd/egl_vendor.d/10_nvidia.json |
PUID / PGID |
99 / 100 |
2.3 Extra Parameters
--gpus all --runtime nvidia --shm-size=1gb --device /dev/nvidia-modeset --cpuset-cpus=0-5,12-17
AdaptezL'épinglage --cpuset-cpus est obligatoire sur tout Ryzen multi-CCD : sans lui, comptez environ un tiers de performances en moins (§6). Adaptez impérativement la liste à votre processeur (§6),— oula retirezvaleur l'optionci-dessus correspond au premier CCD d'un 3900X et serait contre-productive sur une autre topologie. Sur un CPU mono-CCD /ou Intel.Intel, retirez l'option.
2.4 Volumes
| Host Path | Container Path | Mode |
|---|---|---|
| (le même dossier de ROMs que RomM) | /romm/library |
ro |
(appdata dédié, ex. /mnt/user/appdata/eden) |
/config |
rw |
| + les 4 montages du correctif egl-x11 (identiques à la page Dolphin : 2 libs + 2 JSON) | ro |
Rappel : le dossier de bibliothèque doit être monté au même chemin conteneur (
/romm/library) dans RomM et dans Eden.
2.5 Vérification du broker
docker logs eden 2>&1 | grep -iE "broker|mod" | head -10
curl -s http://localhost:8001/health # → {"status": "ok"}
3. Premier démarrage d'Eden
Ouvrir https://IP_DU_SERVEUR:3011, accepter le certificat auto-signé. Au premier lancement, Eden propose de forcer X11 au lieu de Wayland : accepter (c'est le chemin réparé par le correctif egl-x11, et celui qu'utilise le broker).
4. Clés, firmware, jeux et mises à jour
Ordre important : les clés d'abord, le firmware ensuite (Eden a besoin des clés pour installer le firmware).
prod.keys: fichier décompressé, à poser dans l'appdata :<appdata>/.local/share/eden/keys/prod.keys. Redémarrer Eden ensuite.- Firmware : garder le ZIP tel quel, le poser dans l'appdata (visible sous
/config/dans le conteneur), puis dans Eden : Tools → Install Firmware en pointant le ZIP. - Jeux : fichiers directs
.nspou.xci(pas d'archives), dans le dossier de plateformeswitchde la bibliothèque (fs_slug RomM :switch). - Mises à jour et DLC : Eden n'a pas de « dossier de patchs » — ils s'installent une fois pour toutes dans la NAND virtuelle : File → Install Files to NAND, sélectionner les
.nspde mise à jour. Vérification : clic droit sur le jeu → Properties → la version doit être celle de la mise à jour. Tout persiste dans l'appdata (.local/share/eden/nand/) et profite à tous les joueurs. Ne placez pas les mises à jour dans la bibliothèque RomM (elles seraient scannées comme une fausse plateforme).
5. ⚠️ Réglages Eden (à faire dans le fichier, conteneur arrêté)
L'interface ne sauvegarde rien quand Eden est lancé par le broker (§1.3). Éditez donc directement <appdata>/.config/eden/qt-config.ini, conteneur arrêté.
Chez Eden, chaque clé est accompagnée d'une ligne clé\default= : tant qu'elle vaut true, la valeur est ignorée au profit du défaut compilé. Il faut donc toujours passer \default à false.
5.1 Les deux réglages qui comptent
docker stop eden
F=<appdata>/.config/eden/qt-config.ini
# Backend graphique : Vulkan
sed -i 's/^backend\\default=.*/backend\\default=false/; s/^backend=.*/backend=1/' "$F"
# Précision GPU : Normal (le défaut compilé est High = beaucoup plus lent)
sed -i 's/^gpu_accuracy\\default=.*/gpu_accuracy\\default=false/; s/^gpu_accuracy=.*/gpu_accuracy=0/' "$F"
docker start eden
grep -nE "^backend|^gpu_accuracy" "$F"
gpu_accuracy est le réglage le plus rentable de tout ce guide : le défaut High force des chemins d'émulation beaucoup plus lents, pour une précision dont la quasi-totalité des jeux n'a pas besoin. Mesuré ici : +33 % de FPS en passant sur Normal.
5.2 Énumérations utiles
Depuis janvier 2026, Eden a fusionné le backend de rendu et le backend de shaders dans une seule clé backend :
backend |
Valeur |
|---|---|
| 0 | OpenGL (GLSL) |
| 1 | Vulkan (recommandé) |
| 2 | Null |
| 3 | OpenGL GLASM |
| 4 | OpenGL SPIR-V |
La clé
shader_backendest obsolète : si elle traîne dans votre fichier, elle est ignorée en silence. Supprimez-la.
gpu_accuracy |
Valeur |
|---|---|
| 0 | Normal (recommandé) |
| 1 | High (défaut compilé) |
| 2 | Extreme |
5.3 Réglages vérifiés, à laisser tels quels
use_asynchronous_gpu_emulation=true (indispensable), use_multi_core=true, use_disk_shader_cache=true, speed_limit=100.
use_asynchronous_shaders : laisser à false — testé ici, l'activer dégrade légèrement les performances.
6. Performances⚠️ : épinglageÉpinglage CPU (— obligatoire sur Ryzen multi-CCD)CCD
Voir la section correspondante de la page Dolphin pour l'explication détaillée. En résumé : sur un Ryzen à plusieurs CCD, les threads d'Eden migrant d'un groupe de cache à l'autre coûtent très cher, sans que rien ne paraisse saturer.
Ce réglage n'est pas optionnel : il représente ici la moitié du chemin entre un jeu injouable et 60 FPS stables.
lscpu -e=CPU,CORE,L3 # identifier les groupes de cache
Puis épingler le conteneur sur un seul CCD via --cpuset-cpus (Extra Parameters) ou l'onglet CPU Pinning du template.
Mesuré sur un 3900X avec Mario Kart 8 Deluxe : 40 → 60 FPS grâce à ce seul réglage. C'est aussi ce qui explique qu'une VM avec vCPU épinglés paraisse bien plus rapide que le même émulateur en conteneur non épinglé.
Récapitulatif des gains mesurés (Mario Kart 8 Deluxe, 1080p) :
| Étape | FPS |
|---|---|
| Configuration initiale | ~30 (voire écran noir sans les correctifs §2 de la page Dolphin) |
+ gpu_accuracy=0 |
~40 |
| + épinglage CCD | 60 stables |
7. Côté RomM
Ajouter l'entrée dans le bloc streaming du config.yml (adapter IP et ports) :
- platform: switch
host: https://IP_DU_SERVEUR:3011
broker_host: http://IP_DU_SERVEUR:8001
label: Eden
Redémarrer RomM, rescanner la plateforme Switch.
8. Test final
- Fermer proprement toute instance d'Eden ouverte dans le bureau Selkies (le broker lance la sienne).
- Fiche d'un jeu Switch dans RomM → bouton Play on Eden.
- Le jeu doit s'afficher, avec le son.
Vérifier l'accélération GPU pendant qu'un jeu tourne :
docker exec -u abc eden sh -c 'for p in /proc/[0-9]*; do ls -l $p/fd 2>/dev/null | grep -q nvidia && echo "$(basename $p) $(tr "\0" " " < $p/cmdline | cut -c1-60)"; done'
Le processus eden doit apparaître dans la liste.
Astuce mesure : le broker met Eden en plein écran (il envoie F11 après 3 s), ce qui masque la barre d'état. Appuyez sur Échap pour en sortir et lire le FPS et le pourcentage de vitesse.
9. Dépannage rapide
| Symptôme | Cause | Solution |
|---|---|---|
« error while running the video core », log : Invalid device index -1 |
Nœud /dev/nvidia-modeset absent → Vulkan sans présentation |
§2.2 de la page Dolphin |
| Liste de GPU vide dans les menus Graphics | Idem | §2.2 de la page Dolphin |
| Réglages qui « ne tiennent pas » | Config jamais écrite (processus tué par le broker) | Éditer qt-config.ini conteneur arrêté (§5) |
| Réglage écrit mais sans effet | Ligne clé\default=true restée en place |
Passer \default à false (§5) |
| ~30 FPS au lieu de 60, sans que rien ne sature | gpu_accuracy sur High et/ou pas d'épinglage CPU |
§5.1 et §6 |
| Erreur de clés à l'installation du firmware ou d'un jeu | prod.keys absent ou mal placé |
§4, puis redémarrer Eden |
| Jeu à la version 1.0.0 malgré la mise à jour | Mise à jour non installée en NAND | §4 — File → Install Files to NAND |
Jeu très lent, eden absent du test des fd |
Correctif egl-x11 manquant | §2.1 de la page Dolphin |
| Écran noir après une mise à jour du driver NVIDIA | Version des libs egl-x11 changée sur l'hôte | Mettre à jour les Host Path des montages |