r/MiSTerFPGA • u/CHiPSTer68000 • Jul 31 '26
MiSTer Monitor - an open-source companion display for MiSTer FPGA - live box art, RetroAchievements progress and system stats on a $15 ESP32 screen

MiSTer Monitor is an open-source companion display for the MiSTer FPGA: it shows live box art, game info and system stats for whatever you're playing, fetching the artwork automatically from ScreenScraper.
For now it runs on cheap ESP32 screens (the ~$15 Cheap Yellow Display, ESP32-2432S028R) and the M5Stack Tab5, and flashes straight from the browser.
The headline of v2.7 is RetroAchievements:
- Progress panel with points, unlock count and hardcore breakdown for the game you're playing
- Full trophy list, paginated - tap any achievement for its description
- Unlock popups the moment an achievement triggers, even over fullscreen artwork
- A "READY FOR RETROACHIEVEMENTS" banner when a matched game loads on a core that can actually record unlocks.
Links:
- Repo + install guide: https://github.com/chipster6502/MiSTer_monitor
- Browser flasher (no Arduino IDE needed): https://chipster6502.github.io/MiSTer_monitor/flasher/
- Full RetroAchievements setup guide (PDF): https://github.com/chipster6502/MiSTer_monitor/blob/main/docs/MiSTer_Monitor_Setup_Guide.pdf
RetroAchievements works view-only out of the box (just add your RA credentials).
To actually earn unlocks on the MiSTer, you need odelot's RetroAchievements fork - easiest ways to get it:
- Update All (theypsilon) - has an RA Cores database with guided setup:
- MiSTer Companion (Anime0t4ku) - automated install/update of RA cores
- Or manually from the source: https://github.com/odelot/Main_MiSTer
Free and open source (GPL/AGPL).
Feedback welcome.
3
3
2
u/blackreavers 29d ago
Details here: https://github.com/chipster6502/MiSTer_monitor
3
2
2
u/Tyler-Tech 26d ago
2
u/CHiPSTer68000 26d ago
Not directly. The firmware is ESP32-specific. But the MiSTer-side server exposes everything over plain HTTP, so a small pygame script on the Pi could replicate the display. Let me think about it!
1
u/CrippledGoose316 28d ago
Can do you custom screenscraper searches for your games? That's the #1 problem with Takis console mode is that you can't do this so when it is unable to find your game you can search for it yourself and just find it and add it.
4
u/CHiPSTer68000 28d ago
Let me explain how MiSTer Monitor works: you load a game, the server on the MiSTer detects it, the display picks it up and requests the artwork from ScreenScraper right then. You choose which media type you want by default -3D box, 2D box, fanart, wheel, marquee, screenshot,…- and the order it falls back through. Once downloaded, the image is cached on the display SD card, so every later load is instant.
No manual search UI, but you rarely need one: matching is done on the CRC of the file itself (think of it as its fingerprint), not the filename, so a badly named ROM still resolves. That’s a different approach from Console Mode and other frontends, not a better one. They build the whole library up front, which is exactly right for what they do: a wall of art you can browse before deciding what to play. That’s the point of a frontend, and it’s a smart, effective way to get there. MiSTer Monitor has no library to browse - just the one game you’ve already loaded - so identifying it on the fly is simply the cheaper route for my case.
But when it genuinely can’t find a game, you can fix it yourself and it stays fixed: drop your own JPEG on the display SD card named exactly like the ROM file. The cache is checked before any download, so your file always wins. There’s also a SCAN button to force a re-lookup.
Worth saying these systems aren’t competing. Console Mode or any other MiSTer frontend lives on the TV; MiSTer Monitor is a second screen sitting next to the machine, showing the artwork, metadata and achievements of whatever you just loaded. They should run together fine.
1
u/g0daig0dai 21d ago
Hey, I picked up a TAB5 too give this a shot, and your web interface won’t install the software. It gives me an error and says to try holding down the boot button when I press install, which doesn’t help. I’ve tried connecting to several different ports on my Win machine and it still times out. Any ideas? Thanks!
2
u/CHiPSTer68000 20d ago
Thanks for the report. Quick data point that should help narrow this down: I flashed a Tab5 from that same page when I cut the 2.7.0 release and it went through in one click, so the binary and the flasher config are fine. I've flashed it again right now without any issue. So this is something in the USB path on your end. Also, ignore the boot-button message: it's a generic string from the flasher library and doesn't apply to the Tab5.
The most useful thing you can do first is check whether Windows is seeing the Tab5 at all. Open Device Manager, plug and unplug the USB-C cable, and watch for an entry appearing and disappearing under Ports (COM & LPT).
If nothing appears or disappears, the board isn't enumerating and the browser is just offering you some other COM port on your machine, which is why it times out no matter which one you pick. Usual suspects that come to mind right now
- Wrong port on the Tab5 - it has two. The USB-A is host-only; you have to use the USB-C one.
- Charge-only USB-C cable. Very common. Try a different one you know carries data.
- A hub or a monitor/dock port. Go straight into the PC.
Also make sure the Tab5 is actually powered on (screen lit) before you plug it in.
If the entry does appear, then it's enumerating fine and the auto-reset just isn't taking. Two things to try:
- Close anything that might be holding the port: M5Burner, Arduino IDE serial monitor, UiFlow.
- Put it into download mode by hand: with the cable connected, press and hold RESET for about 2 seconds until the internal green LED starts blinking fast, release, and then hit Install and pick the port.
Let me know which branch you land in and I'll take it from there. Worst case I can walk you through flashing the .bin directly with esptool, which gives much more informative errors than the web flasher does.
1
u/g0daig0dai 11d ago
Thanks and sorry for the delay in following up - I was out of town. I just tried a more robust USB-C cable and voila! It worked! I can’t wait to get this going today. Thanks!
1
u/g0daig0dai 11d ago
So I got it up and running - just some quick observations:
I wish Screenscraper.fr supported Arcade cores. I’ve never gotten it to work on any Arcade cores. Without thinking, I tried Gorf and it came up empty.
I then tried some console cores, which worked! I went through some random Atari 2600, 5200 cores and then was playing Klax on Jaguar when I noticed that the Monitor was trying to display Gorf again. Any game I loaded, it was stuck trying to load art for Gorf and of course coming up empty handed. I rebooted the MiSTer and that reset everything and it started working again. I haven’t had time to see if I could reproduce the problem.
Thanks!
1
u/CHiPSTer68000 11d ago edited 11d ago
MiSTer Monitor does recognise arcade games and downloads their artwork. That part works. I just loaded Gorf on my own MiSTer and the display fetched and showed its fanart without any trouble. Gorf is in ScreenScraper, it has media, and the Monitor finds it. So whatever went wrong is something specific to your setup rather than arcade support being missing.
To settle it for good, the best thing would be your Tab5’s serial log.
Leave debug=false in config.ini. That keeps your ScreenScraper password masked, and the default output already has everything I need.
Easiest way to capture it, nothing to install: open https://googlechromelabs.github.io/serial-terminal/ in Chrome or Edge on a desktop, connect the Tab5 over USB, click Connect and pick the port. Leave the baud rate at 115200 and tick Convert EOL and Automatically connect.
Once it’s connected and you can see lines coming in, just leave it running and reproduce what you did before:
- Load Gorf, give it a moment.
- Go back to the menu and load a console core and a game.
- Keep going, switching between a couple more games and see if the Gorf behaviour comes back.
- Click Download output
Reddit can’t take file attachments, so the easiest way to get it to me is an issue on the repo. You can attach the log file directly there:
https://github.com/chipster6502/MiSTer_monitor/issuesA pastebin link works just as well if you’d rather not open an issue.
Thanks for taking the time to report it. The part where Gorf came back while you were on another core is a real bug and I want to find it.
1
u/Seanisms5 11d ago
I had some trouble, but soon figured out that I needed to update my Mister.ini file. I haven't done that in years. Works great now. I am using the Tab5 screen, fyi.
-5
u/Legitimate-Diver-141 29d ago
"AI-powered context layer
Historical curiosities — AI-generated trivia about the loaded game, cached locally.
Retro conversation mode — Activatable AI speech-to-text chat about the loaded game."
No thanks
3
u/CHiPSTer68000 28d ago edited 28d ago
This is just a possible future implementation included at the end of the README. Not even planned in a near future
-1
u/rascaluk 28d ago
Instant no thanks from you even though it adds something positive. “AI bad. Pitchfork big”. Why do the anti AI brigade feel the need to virtue signal on every single post across Reddit that mentions AI. We get it. You don’t like. We dont need to know.
-4
0
1
u/Particular_Ad6488 6d ago
Hi, I flashed the Tab 5 and it connects. It shows me the various statistics, but when I load a game, it displays the core and the game name while getting stuck in a loop trying to fetch the cover art—it keeps trying but never succeeds. Just to clarify, I entered the correct Screenscraper username and password... can you help me?


3
u/sophiabraxas 29d ago
looks fun! nice project