Ton Miyoo Mini dans ton navigateur / Your Miyoo Mini in your browser
Un dashboard web complet pour contrôler ta console à distance
A complete web dashboard to remotely control your console
MiyooDeck est un third-party pour Onion OS qui transforme ton Miyoo Mini (ou Mini+) en console contrôlable depuis ton navigateur web. Ouvre l'interface sur ton PC ou smartphone, et tu peux :
- 📊 Surveiller l'état de la console (CPU, RAM, batterie, IP)
- 🎮 Lancer des jeux à distance d'un simple clic
- 🕹️ Contrôler la console avec le gamepad intégré (croix directionnelle, ABXY, L1/R1/L2/R2, SELECT/START/MENU, volume)
- 📁 Gérer tes fichiers — uploader des ROMs par drag & drop, télécharger tes sauvegardes
- 🖥️ Voir l'écran en direct avec les couleurs correctes (capture framebuffer BGR565)
- ⚙️ Éditer les configs RetroArch, Onion, etc. avec sauvegarde automatique
- Miyoo Mini ou Miyoo Mini+ avec Onion OS 4.3+
- Le WiFi configuré sur la console (Paramètres Onion > Réseau > WiFi)
- Un navigateur sur ton PC/smartphone (Chrome, Firefox, Safari)
- Télécharge la dernière version depuis la page Releases
- Éteins ta Miyoo Mini et retire la carte SD
- Insère la carte SD dans ton PC
- Copie le dossier
App/WebDeck/versSDCARD/App/WebDeck/
Carte SD/
└── App/
└── WebDeck/ ← Copier tout ce dossier ici
├── config.json
├── launch.sh
├── stop.sh
├── webdeck (binaire ARM)
└── www/ (interface web)
- Éjecte la carte SD proprement, réinsère-la dans la console
- Allume la console
# Prérequis : Go 1.21+, Node.js 18+
git clone https://github.com/TON_USERNAME/miyoodeck
cd miyoodeck/webdeck
# Compiler le binaire ARM
cd server
export PATH="/c/Program Files/Go/bin:$PATH" # Windows
GOOS=linux GOARCH=arm GOARM=7 CGO_ENABLED=0 \
go build -ldflags="-s -w" -o ../package/App/WebDeck/webdeck .
# Compiler le frontend
cd ../frontend
npm install && npm run build
# Le package est prêt dans : webdeck/package/App/WebDeck/- Sur la console, ouvre Apps > Web Deck
- L'adresse IP s'affiche à l'écran, ex :
http://192.168.1.42:8080 - Ouvre cette adresse dans ton navigateur
- Première fois : crée un code PIN de protection (min. 4 chiffres) ou ignore
- Utilise les 4 onglets :
| Onglet | Fonction |
|---|---|
| 📊 Tableau de bord | Stats système + gamepad + aperçu de l'écran en direct |
| 🎮 Jeux | Parcourir et lancer des jeux par système |
| 📁 Fichiers | Uploader des ROMs, télécharger les sauvegardes |
| ⚙️ Config | Éditer les fichiers de configuration |
Le serveur tourne en arrière-plan. Pour l'arrêter :
# Via SSH sur la console
sh /mnt/SDCARD/App/WebDeck/stop.shOu redémarre simplement la console.
| Port | Usage |
|---|---|
| 80 | Filebrowser Onion (existant) |
| 8080 | MiyooDeck |
MiyooDeck is an Onion OS third-party app that lets you control your Miyoo Mini (or Mini+) from any web browser on your local network. Open the interface on your PC or smartphone and get:
- 📊 Monitor system status (CPU, RAM, battery, IP address)
- 🎮 Launch games remotely with a single click
- 🕹️ Control the console with the built-in gamepad (D-pad, ABXY, L1/R1/L2/R2, SELECT/START/MENU, volume)
- 📁 Manage files — drag & drop ROM upload, save games download
- 🖥️ Live screen view with correct colors (BGR565 framebuffer capture, 1-5 FPS)
- ⚙️ Edit configs (RetroArch, Onion) with automatic backup
- Miyoo Mini or Miyoo Mini+ running Onion OS 4.3+
- WiFi configured on the console (Onion Settings > Network > WiFi)
- A web browser on your PC or smartphone
- Download the latest release from the Releases page
- Power off your Miyoo Mini and remove the SD card
- Insert the SD card into your PC
- Copy the folder
App/WebDeck/toSDCARD/App/WebDeck/
SD Card/
└── App/
└── WebDeck/ ← Copy this entire folder here
├── config.json
├── launch.sh
├── stop.sh
├── webdeck (ARM binary)
└── www/ (web interface)
- Safely eject the SD card and reinsert it into the console
- Power on the console
# Requirements: Go 1.21+, Node.js 18+
git clone https://github.com/YOUR_USERNAME/miyoodeck
cd miyoodeck/webdeck
# Compile ARM binary
cd server
GOOS=linux GOARCH=arm GOARM=7 CGO_ENABLED=0 \
go build -ldflags="-s -w" -o ../package/App/WebDeck/webdeck .
# Build frontend
cd ../frontend
npm install && npm run build
# Package ready at: webdeck/package/App/WebDeck/- On the console, open Apps > Web Deck
- The IP address appears on screen, e.g.
http://192.168.1.42:8080 - Open that URL in your browser
- First time: create a PIN (min. 4 digits) or skip
- Use the 4 tabs:
| Tab | Function |
|---|---|
| 📊 Dashboard | System stats + gamepad controller + live screen |
| 🎮 Games | Browse and launch games by system |
| 📁 Files | Upload ROMs, download save backups |
| ⚙️ Config | Edit configuration files |
The server runs in the background. To stop it:
# Via SSH on the console
sh /mnt/SDCARD/App/WebDeck/stop.shOr simply restart the console.
MiyooDeck
├── server/ Go backend (ARM daemon)
│ ├── main.go HTTP server + auth + routing
│ ├── system.go CPU/RAM/battery via /proc & /sys (async sampling)
│ ├── files.go File listing, upload, zip extraction
│ ├── games.go ROM listing + game launch
│ ├── config.go Config file editor + .bak backup
│ ├── screenshot.go /dev/fb0 → PNG (auto-detect 16/32-bit, FBIOGET_VSCREENINFO)
│ ├── input.go Button injection → /dev/input/event0 (Onion keycodes)
│ ├── websocket.go Real-time stats + screenshot broadcast (panic-safe)
│ └── mdns.go mDNS responder → miyoodeck.local
└── frontend/ Svelte 4 + Vite SPA
└── src/
├── i18n.js FR/EN translations
├── api.js API client + WebSocket
├── App.svelte Layout + auth + lang switcher
└── components/
├── Dashboard.svelte Stats + gamepad + live screen
├── Controller.svelte Gamepad UI (D-pad, ABXY, shoulders…)
├── GameLauncher.svelte
├── FileManager.svelte
└── ConfigEditor.svelte
Binary size: ~6.5 MB (stripped ARM)
Frontend size: ~63 KB JS + 24 KB CSS
Total package: ~6.6 MB
RAM usage: ~8 MB at rest, ~12 MB under load
MiyooDeck écrit une commande dans /mnt/SDCARD/.tmp_update/cmd_to_run.sh et envoie killall -9 MainUI. Le runtime Onion détecte ce fichier et lance le jeu automatiquement.
MiyooDeck writes a command to /mnt/SDCARD/.tmp_update/cmd_to_run.sh and sends killall -9 MainUI. Onion's runtime detects this file and launches the game automatically.
Le framebuffer /dev/fb0 est lu via FBIOGET_VSCREENINFO pour auto-détecter le format pixel au runtime : BGR565 16-bit (Miyoo Mini original) ou ABGR8888 32-bit (Miyoo Mini Plus). L'image est corrigée en rotation 180° et encodée en JPEG pour la diffusion WebSocket (5× plus rapide que PNG sur ARM).
The framebuffer /dev/fb0 is queried via FBIOGET_VSCREENINFO to auto-detect the pixel format at runtime: BGR565 16-bit (original Miyoo Mini) or ABGR8888 32-bit (Miyoo Mini Plus). The image is corrected for 180° rotation and encoded as JPEG for WebSocket streaming (5× faster than PNG on ARM).
Les pressions de boutons sont injectées dans /dev/input/event0 via des structs input_event Linux (16 octets, ARM 32-bit). Les codes touches correspondent à keymap_hw.h d'Onion OS.
Button presses are injected into /dev/input/event0 via Linux input_event structs (16 bytes, ARM 32-bit). Key codes match Onion OS's keymap_hw.h.
Aucun client WebSocket connecté = la diffusion stats/screenshot s'arrête automatiquement pour économiser les ressources du processeur.
No WebSocket clients connected = stats/screenshot broadcast stops automatically to save CPU resources.
- PIN optionnel (hash SHA-256 stocké dans un fichier)
- Réseau local uniquement — pas d'accès internet
- Accès fichiers limité à
/mnt/SDCARD - Tokens de session en mémoire (expiration 24h)
MIT — Projet non officiel, non affilié à l'équipe Onion OS.
MIT — Unofficial project, not affiliated with the Onion OS team.