Internet of Karaoke Machines
How I Got A Retro-Futuristic Thrift Store Find to Run Docker
Overt the past few months, for a video installation I’m working on, I’ve been on the hunt for something strange considering it’s 2018: a tiny CRT, ideally greyscale. I hunted thrift stores, dumpsters, eBay, at one point even taking a bunch of buses several hours to check out a film industry rummage sale in Echo Park. No dice.
One day, however, I found myself poking around at Goodwill when I spotted a portable karaoke machine from 2005 sitting among the various discarded electronics in the back of the store. For the particular project I’m working on, it’s perfect. And it was only $13. (Even better: when I got home, I noticed it had a free DVD of Paul Blart: Mall Cop in the CD tray.)
There was one small problem, though: it’s a karaoke machine, and it definitely does not have any “video-in” ports on the outside. So I grabbed a handful of small computery things I had lying around and drug it to CRASH Space, a hackerspace I’m a new member of in Los Angeles, hoping I might be able to liberate the display somehow.
Much to my surprise, it was incredibly easy to disassemble. Popping the top to get access to the monitor “section” was a simple matter of unscrewing 5 Philips screws, and all the internal wiring was in the form of convenient ribbon cables with header connectors, much like a computer.
I poked around the board with a meter — wearing rubber gloves, of course, considering the CRT is potentially highly energized, even when powered off, and I would prefer not to die — trying to figure out how the display was being driven. I Googled random part names trying to find a schematic, anything, but couldn’t find any information on the insides.
As I took another look at the board, I suddenly found what I was looking for — much to my surprise, I somehow had missed that the board was literally labeled with a header pin labeled “video in.” This machine was begging to be hacked.
Out of pure curiosity, I quickly pulled out a soldering iron and soldered two pins to the composite video headers on a Raspberry Pi Zero so I could run jumper wire between the “video out” on the Zero and the “video in” on the karaoke machine.
I plugged the whole thing in, and, much to my astonishment, the display sprung to life with the Raspberry Pi’s boot sequence. It even worked the first time!
Since then, I’ve replaced the Zero with a Raspberry Pi 3, because the Zero was a bit under-powered for my taste, and there’s plenty of room in the chassis. Since the big Pi doesn’t have composite headers, my first stab at this involved soldering wires to the bottom of the Pi, but they broke in transit incredibly easily. As the Pi carries video over the third ring of the 3.5mm jack, I found a TRS connector with screw block terminals, which has worked perfectly.
I ended up hot-gluing the Pi to the chassis rather than have it awkwardly float around. My first try at this involved me gluing the Pi directly to the chassis… which I definitely wouldn’t recommend (RIP 8GB SD Card). I found a cheap Raspberry Pi case on Amazon and just glued the bottom half to the chassis, and that’s working much better. I then glued the jumper wire going into the board into the header slot so it wouldn’t fall out (thanks to Steve for showing me that trick.)
I also Dremeled out a small hole in the back for the wires (thanks to Barb, who makes things, for giving me hand with the Dremel.)
On the software end, it’s running Resin/Resin OS, which is a really cool Docker orchestration service for IoT devices. This makes it very easy for me manage and push software to the Pi, especially given my goal for it is to be semi-autonomous — I don’t want to have to worry about attaching a keyboard and mouse to it.
Currently, it’s running a Screenly OSE Docker image, an open source digital signage solution, so I can push videos and websites to it at will. I would dive into how I got Screenly running on the Pi, but all I did was follow this excellent tutorial. I’m working on giving it cellular data through a USB modem, so it’s always online, even when it’s not connected to my wifi network, and that’ll make it even more autonomous.
What I plan to do with this will be revealed with time, but for right now I’m pretty happy staring at the strange retro-futuristic object in my kitchen looping Meshes of the Afternoon on a tiny black and white CRT while I weigh the absurd realization that I connected a karaoke machine to the Internet and it may indeed be one of the strangest machines running Docker in the world.
PS: I want to do more of this kind of work, potentially professionally. Hit me up at firstname.lastname@example.org if you’re interested in collaborating, especially if you need someone good at DevOps/AWS.