My Retro Entertainment Console Experience
Foreword: Please do not consider the following a complete endorsement or condemnation of any specific OS or platform. Rather, this is about my experience with trying to join in on what all the too-pretty people on YouTube and TikTok were breathlessly talking about with their retro console builds, and calling out the things that never seem to happen to those influencers, or at least make it into the final cut of their sponsored content.
My wife and I have a nice little getaway place in the woods, which we like to visit on weekends to leave the world behind for a bit. Initially, for entertainment, we had an old LCD TV with a VCR and GameCube with some random tapes and games, topped off with a sketchy satellite TV box. These were fine back when the place was essentially a hunting cabin for other family members, where they spent the bulk of their time skulking around the woods in pursuit of some rustic annual animal murder activities (no hate, I am not a touchy feely anti-hunting nut; I’m just poking a little fun. Our cabin is part of a hunting community after all).
These days, it’s more of a relaxation spot for us, where we can open the windows, enjoy the fresh air and wildlife as it saunters/flies/skitters by, and at night, enjoy some movies and games. I upgraded the TV so we had some better input options, added a stereo amplifier and floor speakers to displace the chintzy speaker bar, and we got rid of the VCR and GameCube. We wouldn’t need those thanks to what I had planned next: a compact and capable entertainment system console. The cabin is small, so having a little box capable of playing games from a ton of different consoles, plus play movies and recorded tv shows, plus accessing the internet and Netflix et al, was a really appealing proposal. Our alternative is an aging satellite dish receiver. Up north. In the woods. Surrounded by trees and foliage. Signal reliability with that is… somewhat less than optimal, shall we say?
Yes, I know this was not a unique or particularly jaw-dropping idea; that was not the point of these here wordified musings. I am simply attempting to point out what I aimed to do, what worked, what didn’t, and why.
It started with a Raspberry Pi….
Put it all together with Batocera, and you get a honey of a little emulation and home theater box! Batocera, having all the ROMs previously uploaded to the internal SSD and relevant info for the ROMs scraped and saved beforehand at home, worked like a champ, for its main functionality. Movies and TV shows were brought with us on the external drive enclosure, then connected to the Pi when we arrived at the cabin. Things were pretty decent initially.
Except… There were issues that soon surfaced. Some I could address and resolve. Others, not so much.
Problems
- No sound, even though audio output was set to HDMI1 (connected to the TV)
- This was a problem with the software mixer being used, which had to be modified via config file editing (a real challenge out in the field if wifi wasn’t working). I believe at the time, Alsamixer was not the default, but it was the one I needed to select in order for the HDMI audio outputs to become selectable in the Batocera menu. I think this has been resolved in later versions, but I can’t confirm that firsthand right now.
- No Wifi connectivity, keyboard/mouse refused to work, even when hovering right over the Pi itself, external drive often didn’t show when connected
- The wifi was completely unreliable when attempting to connect to my phone-based hotspot, barely 5 feet away. Not a huge problem, since I was only trying to use wifi (thank you for having signal in the woods, Verizon!) to retrieve movie and show info for Kodi anyway.
- This turned out to be a power issue. The Pi4 was unable to run that M.2 drive, the external SATA drive, AND almost any of the other internal accessories at the same time. Most accessory power was diminished because of this, and the Argon One aluminum case pretty much ensured it was cut off from everything after that.
- Very poor framerate, stuttering audio during boot intro video playback
- The new TV I upgraded at the cabin is capable of 4K resolution, which is fine as long as you set Batocera to use 1920×1080 at max on its own. However, the intro videos that play before the main UI loads are run through a kernel-level decoder, completely aside from any specific video drivers, and based on what the connected display device says it’s ready for. What this means is that at boot time, the device will be attempting to play any intro videos at the full 4K, which the Pi4 is not ready to do (well). The video will play, but it’ll be choppy and generally poor playback, so the effect you might have been looking for with custom startup videos is ruined, unless the display you’re connecting to is specifically 1080p or lower.
- This is a hardware limitation coupled with the way the Batocera team has chosen to handle those intro video sequences. If they waited until the OS proper was loaded and used the OS to do the playback, you could keep the resolution down and keep playback looking smooth and clean.
- No response to any inputs if system is left idle too long (shortest span observed was around 30 minutes), or if no inputs are sent while Kodi is running (so any time you’re watching a show, it’s going to stop reacting to inputs)
- This seems to be related to a buggy gamepad input driver in Kodi, but even after disabling that, the issue soon started happening in Batocera itself, usually if the TV was turned off while the system was running.
- No access to any streaming content
- Even though the TV is a “smart” TV, for some reason it refuses to connect to our phone hotspots, which are the only source of internet connectivity there, and Batocera doesn’t really have web browsing abilities anyway. You could use a plugin for Kodi, but whew, what a pain just to bring up a webpage!
Solutions
- No sound
- A config file edit solution was eventually found and implemented, and sound was working fine from there. There’s no point in posting the solution here because this was limited to an older version of the distro, and should no longer be considered relevant. Current versions do not have this problem, but it was a pain in the butt to find and fix at the time!
- No wifi, no keyboard/mouse, external drive only working sporadically
- I got a small powered USB hub, installed it near the couch and ran a USB extension the six feet or so around the wall to the cabin TV stand where the Pi lived. This resolved the keyboard/mouse and external drive issues. Wifi improved marginally, but was still generally crap, and it turned out that Argon case was having more impact than expected. This could be resolved by using an antenna extender or even USB wifi dongle instead.
- Intro video playback issues
- No solution available, unless Batocera starts playing videos after the user environment has fully loaded (and using the 3rd party video drivers rather than the kernel-level default ones), allowing the user to configure a resolution limit on the playback functionality, same as is already possible with EmulationStation itself.
- Apparent system lockup if left idle too long, or left idle with display turned off
- This was the deal breaker for me. I needed something that could sit there and run happily in the background while we were there. I didn’t want to have to deal with shutting down at night and booting back up later, and even doing that was no guarantee I wouldn’t have to go over there and hard-reset the sucker eventually anyway after watching a movie. I just wanted it to run and be stable whenever we wanted to use it during a given weekend visit.
- No access to streaming content
- This was not the fault of the software; it wasn’t designed to offer this functionality, and I knew better than to think any of the Kodi plugins would actually be able to work in this day and age of password sharing crackdowns and ridiculous specific encryption schemes.
The Raspberry Pi was retired from that particular duty, and I went and found something that should be much better suited to being a more well-rounded entertainment center:
This time, installed with Linux Lite on the m.2 drive, Batocera on the SSD, and the system set to boot to the SSD by default. This would give me the ability to not only boot to an alternate OS to access the Batocera config files much more easily, but I could also use a web browser in Linux Lite to access our streaming video accounts as well. Linux Lite was chosen because other distros have issues with accessing online streaming services. Whether it’s some obscure codec that can’t be distributed (or sometimes even installed at all) due to legal restrictions, or issues with how those services detect the browser (doesn’t matter if it’s Chrome, Chromium Iceweasel or Firefox), Linux Lite was the only distribution that worked more broadly out of the box than any of the others.
Now, I was running hardware that could emulate PS2 and GameCube titles without issues, which meant instant expansion of the game library (and of course space requirements!). The system did very well, with wifi and power issues now put well behind us. Minimal tweaking was needed to optimize performance.
However, still, there were problems. Linux Lite was chosen because it was expected to be more forgiving on the hardware, and allow things to just freaking work without all the corporate shenanigans, advertising and interruption popup mayhem of the Microsoft ecosphere. It had allowed my old laptop to take on a new revitalized life in the household, even though Windows 10 had grown far beyond its ability to run satisfactorily (it shipped with Windows 8.1 originally, and it was an Office Depot special, so yeah not exactly a powerhouse to begin with!). I had expected a similar boost in performance on this platform too, especially after doubling up the RAM. While this was mostly true, there still remained those aforementioned problems.
Problems
- Streaming was now possible, but a couple of services refused to allow me to login, citing invalid or incompatible platform, despite other biggies like Netflix and Disney+ working fine. Minor gripe, but still something to look into.
- Yeah I could mess around with the user agent declaration or get some edge case browser extension involved, I’m sure, but honestly that’s more trouble than it’s worth. After all, streaming was only intended to be a minor add-on to the capabilities. Gaming and local movie/TV show playback without reliance on connectivity were the primary wants.
- 4K Batocera intro video playback still an issue, even though I can now set the video output resolution to 1080p in the BIOS
- It seems the Linux kernel completely ignores any user-accessible hardware settings during boot, and goes exclusively by whatever native resolution the connected display reports as native. Those intro videos play perfectly fine on my home office TV (1080p), but hitch like crazy on the 4K cabin display. This is the same thing that happened with the Pi, and was more a problem with the internal video card (which is admittedly not exactly blistering, but should be enough for 1080 movies and retro games), and Batocera itself, which was otherwise working fine. Mostly.
- System locking up when running with the display turned off, or when Kodi left running (this old chestnut again)
- This seems to be either a display driver or power management issue in Batocera, perhaps in conjunction with this specific television model, because I simply can’t get this issue to repeat at home. The cabin TV isn’t exactly a cheapo Amazon special, but it isn’t the best model Phillips had to offer, either. It works great as a simple display, otherwise. It would be nice to be able to force the max resolution lower, but that feature is pretty rare in consumer units these days, when people are buying based on the highest numbers they can get.
- Linux Lite booting is very delayed, based on whether wifi is currently on, and if it was connected when last running
- This one drives me nuts. I have the system connected to the wifi hotspot, then boot to Batocera and turn the hotspot off. Play some games, then reboot back to Linux Lite after turning the hotspot back on. The thing takes -I kid you not- whole minutes to actually load. It sits there with its little stupid rotating loading throbber, and naturally no verbose boot details are available with this distro (with others you can slap a key and see what’s going on behind the fancy loading splashscreens, but not this one) Soon as I turn off the hotspot: BOOM, almost instant load finish. Sometimes this behavior happens if booting with the hotspot already on, sometimes with it off. There’s no real pattern I can determine for it.
- Drives sometimes not showing up, or becoming unexpectedly corrupted despite all proper and careful mount/dismount and start/stop procedures being followed
- Man… Linux. It’s super stable and mostly reliable, but it really hates rebooting for any reason (unless there’s yet another update this week, then it’s gonna nag the shit out of you to do it). Sometimes rebooting triggers this intricate dance of processes doing their thing, and just once, that one “special” service just simply doesn’t show up for work when scheduled, and boom: no more filesystem. Those kinds of errors are usually pretty quick and easy to fix, but I’m on vacation in a cabin in the woods; I do NOT want to troubleshoot and fix computer issues on my time off, too! This is also made much much more likely to happen if you have to hard-reset the system (see problem 3)
Solutions
- Some streaming services not accessible
- Screw it. Not worth tinkering and messing around to get those couple of outliers working. Netflix and other biggies we watch most often seem to work fine, those few times we actually need a streaming service.
- Batocera Intro video playback stuttering
- Sigh. Not a big deal, just one less thing I can show off to friends when booting it up with them. I can just use the static splash screens instead, I guess.
- System locking up
- Not gonna lie, this one makes me slightly crazy. I’m right back to hard-booting my system at random times and forced to think in advance about what state the system is in before I leave it, lest I return to find it frozen again. This is stupid, but what can you do about it; it’s open source and free! I can take the time (and major attention off-ramp) to learn to troubleshoot and resolve the drivers or whatever dumb core-level bug is causing this, or I can just tolerate it until I decide to try something different. It’s obviously not a hardware conflict, because it’s happening on totally different architectures.
- Linux not booting up quickly
- Okay, nope. Just nope. This is just ridiculous. So many searches on this issue, and the answer is always something to the effect of “your hardware is too old” (it’s not) or “it won’t just magically make your system faster than Windows without some upgrades” (that’s actually what you market it on!) or “you didn’t tweak the dozen-or-so completely obscure configuration files just so and also set a static IP address on your device. You know, so your HOTSPOT WILL NEVER CONNECT AGAIN”
- This is why Windows still rules the desktop. It looks like some minor service is halting the entire boot process because it’s not seeing a network connection, or it is seeing one, but isn’t getting the IP it wanted, or it did get an IP, but it decided to force a different one to be assigned anyway (the hotspot is not a router; you take what it gives, the end). Nothing is predictable. Any number of issues could cause this one thing to halt, and despite over a dozen ways to export reports and logs and analyses, I cannot get a working recommendation to resolve this problem. Many people are experiencing it, and it seems to be an issue specifically with this distro, but there has yet to be a big “AHA!” moment as to why this system cannot boot up reliably fast without network being settled first. I’m sure it’s something related to DHCP, but if I get it booted without internet, then reboot again with the hotspot off, BAM: it’s up in moments. If the network state changes from one login session to the next, that’s where the gremlin shows up, apparently.
- Ubuntu doesn’t behave this way. Linux Mint (another Ubuntu variant) doesn’t behave this way, freaking Arch doesn’t behave this way. Why am I not using one of those instead for the alternate desktop? Because none of those will run ANY streaming video service from the browser, because I don’t have some dumb 3rd party plug-in/driver that they’re not allowed to distribute for licensing restriction reasons, and finding and installing it is apparently one of those things the smug “RTFM” crowd don’t want to document anywhere. That was the big reason to run a dual-boot system in the first place.
- Drives sometimes not showing-
- Again it’s a known issue, and is a real risk when hard-rebooting the system instead of doing it gracefully from the OS (which you can’t do if it’s ignoring inputs of any kind, huh?) and again there’s no real fix other than to sigh ironically, and accept this as consequence for living right out on the bleeding edge of open source software… You know what?
Screw this.
Install a stripped down Windows 11 (get rid of all the Store/Candy Crush/LinkedIN/forced updates bullcrap) on the main drive. Install RetroBat on the secondary drive (displacing Batocera). Done, 20 minutes.
Look at that!
- It boots reliably and fast every time, regardless of the network state
- It stays running as long as I expect it to without weird lockups, even if the TV and/or hotspot is turned off
- The gaming environment (RetroBat) works like I need it to, using the already-loaded display driver (so it limits itself to 1080p because that’s what the DESKTOP IS SET TO SO INTRO VIDEOS WORK AS EXPECTED, THANK DOG!)
- Drives don’t just corrupt themselves for the hell of it, because the system is not suddenly mysteriously ignoring inputs or locking up and forcing hard reboots (and even then the likelihood of corrupting the file system is drastically reduced)
- Wifi works reliably and stable every freaking time, and the system includes an external antenna that ensures the signal is received strongly from alllll the way across the living room (5 feet)
- ALL STREAMING SERVICES WORK IN ANY BROWSER, no ridiculous corporate finger-pointing or lengthy technical (bullshit) excuses involved
There are many other little things that just work better and more reliably now, but there’s no point in going into that level of detail; nobody really cares that much about this.
“But Weasel,” I hear upon the cold Northern Winds, “Windows is just bowing to the Man! Plus it doesn’t run anywhere near as fast as Linux!”
Here’s the thing: the hardware I have now was designed to run Windows specifically, and Microsoft actively works with the vendors (both Dell and Intel) to ensure all the hardware and drivers are as optimized as they can get. Any comparative performance losses can be re-captured by disabling the fancy OS effects and unneeded background services (like updaters and telemetry loggers, which were stripped out of this “lite” installation). This hardware is running the OS it was designed for, same as Raspberry Pi runs a Linux variant that was designed for it.
However, the Pi is still evolving, and wasn’t really intended to be a full-time desktop. I mean, they can do that and do it well, but as soon as you start bringing multimedia and emulating other architectures into the mix alongside that, things get wobbly fast. Driver issues, unstable/incompatible/unreliable sub-apps (looking at you, PulseAudio) and fiddly configuration file editing and permissions settings rabbit holes just ruin the fun. Linux just isn’t ready for something like this, and I guarantee that once it finally is, whatever distro pulls it off will suddenly go commercial behind a paywall anyway.
Look, you shouldn’t have to play Hacker Man to throw together a little box of fun for you and/or the kids, and if all you want is a little arcade retro box to play with now and then, Raspberry Pi 4 (and now 5) have definitely got you covered on the cheap. But, if you’re looking for something that can be used more like an always-on, always-ready component of your entertainment center like an XBox or Roku, you’ll want an actual PC.
Install Windows, strip out the junk you don’t need (there are all kinds of debloater and customization scripts out there) and then install RetroBat fresh, or one of the pre-configured RetroBat bundles over at Arcade Punks, and then expand and customize your games collection from there. Kick back and relax, knowing that your web browser will never throw obscure errors at you about bad configurations and missing codecs for any streaming service, and that, assuming your hardware is in good shape, your system won’t just stop working in some inexplicable way and bring the fun to a halt.
Also, on a related note, using a web browser to watch Netflix now has an added benefit. Since Netflix started cracking down on password sharing, they also consequently made it a lot more of a hassle to access your account on multiple TVs if they’re in different places (or different networks). However, only the TV app version of Netflix is actively checking the location information. If you use a browser or mobile device to watch, it’s still good to go no matter where you are.
EDIT: This is no longer entirely factual. Tablet and phone versions of the Netflix app are now triggering when not on the “home” network too. Browser-based access is still location-blind, thankfully.
Anyway, like I said at the start, please don’t take this as some kind of damning accusation or ringing endorsement for any single solution. I just wanted to share some of the pitfalls I encountered when RetroPie and Batocera got me excited about having all those consoles at my fingertips, after which I started trying to expand on the things I wanted for convenience’s sake out in the middle of nowhere on vacation. Consider these the cautionary tips that should have been behind asterisks in all those YouTube videos that are currently causing the price of secondhand/refurbished micro desktop systems to skyrocket, and why you should still try to get one of those anyway, if you want anything more than simply (virtually) kicking your kid’s behind in Street Fighter II.
Again.