So this year I bought a 3D printed tiny Super Nintendo Case and put a Raspberry Pi 3 in it. At first, my only concern was to have a RetroPie setup, because of my childhood love of legally obtained ROMs. This part was easy enough and obtainable in one sitting. Putting a RetroPie together is quick and easy, and those guys have really done a great job bridging the gap between a terminal driven configuration and controller-only input.
To my delight, the Nintendo Switch Pro Controller supports Bluetooth and pairs right up to the Pi. The controller has a USB-C port for charging and is the best controller I own. I kicked my Xbox One out of the living room, so I almost live in a one controller world out there and it’s nice. Hopefully the new 8BITDO with USB-C will close that gap.
My first real hurdle with the Pi was a lack of decent HDMI CEC support. Natively, turning on a Pi will trigger an input switch, but these things tend to stay on all the time and that’s really no good when you’re trying to live without a TV Remote. This led to a udev rule that triggers it when a new input is detected. That was fun, a PR was made, a PR was rejected, and it suits my purposes. Eventually, it’ll get upstreamed.
I had some friends over a few months ago, and we hooked a keyboard and mouse up to it and played with some DOS emulators. Sierra’s Kings Quest and Leisure Suit Larry made an appearance, as did civ1 and Orgeon’s Trail. Anything you could ever want to run in DOS Box runs on this thing wonderfully. It’s my experience that everything up to the PS1 and N64 is fair game, the N64 emulator is a little sticky but it’s not bad. Or so I heard.
One of the things I wanted immediately was the promise of never losing a save. In fact, I wanted to go a step further and take one traveling with me, and I wanted the save games to sync so I can pick up a game I was playing in the living room when I’m staying in a hotel overnight. So, as a bit of prep, I installed SyncThing on my NAS server and set up a share called “roms” which tracks the roms directory on the RetroPie. Beside my roms directory, I made a roms-iso where I keep the disk images I don’t want to store on my ROMs. I then mount these on my RetroPie via nfs, symlink in the appropriate rom-iso directories, and I let SyncThing copy over the romset. I do the same thing on my Traveler Pi, configure it so everything keeps sequential backups of all the files, and it works! Save a game on one, and before you have time to check it’s copied over to the other. I hope to never restart a game again because I forgot to backup before a format.
This year I spent a ton of time traveling and in hotels, and one thing that bothers me is that I can’t cast from my laptop to the TV using a Chromecast over the network. I bought the Microsoft Display Adapter which was nice when I had my Surface with me, but overall it was pretty crummy. But, I have a USB Wifi dongle that natively supports Linux, and so I installed Google Chrome on my Pi so I could do the web authentication for my hotel when I connected through the Pi’s wifi, and I configured hostapd to double the hotel’s wifi onto a Traveler Pi wifi network that didn’t have any of their authentication crap, enabling Google Chome to work. I was able to configure it in a way where it just kicks off when it detects the USB Dongle, it’s really fucking cool and I use it all the time.
My favorite thing the Pi does at the moment is Moonlight, the software that approximates Steam Link using the nVIDIA Experience setup. Other than kinks in the software where you’ll close a game and the Steam interface won’t restore and the like, this works really well. In the living room, I can go through the RetroPie, select ‘Steam’ basically, it will load Big Picture on my PC in the other room and stream it to my living room. Pick any game I want and it kicks off and works. The devil here is in the controller mappings. I can’t et my Switch Pro controller’s analogs to work correctly, it’s not sensitive enough but Super Meat Boy works fine as it’s d-pad. The Steam Controller doesn’t work at all, but you can configure it through xboxdrv if you hate your life. I settled on using VirtualHere, which lets you virtually connect USB devices to other computers using the network. Works really well. The Xbox 360 controllers work well too, was showing off DOOM and Friday the 13th (for Windows) in the living room through Moonlight yesterday and it worked really well.
It’s crazy what you can do with these things, the only real limitation I’ve run into so far is that it doesn’t have a SATA bus so you can’t use it as a NAS. It seems like a natural use case. I haven’t tried any electronics projects with these things, but I may in the future try my hand at making some digital signage, something along the lines of light boards like you’d see at a football game or bingo hall.