works on my machine

I built it a tiny hi-fi

3D printed speakers, a little amp with another ESP32 inside, and Home Assistant finally out of the picture.

23 September 2026

I built it a tiny hi-fi

The tiny record player already did the pleasing bit. You pick a little record out of the crate, drop it on the spindle, and an album starts. What it never did was make the sound itself. The reader sent a message to Home Assistant, and the music came out of whatever speaker the house felt like using. Fine if you already live in Home Assistant. Slightly odd if you’re stood in front of the player, waiting for it to be the thing that plays.

So I printed it a hi-fi.

There are two speakers, each 3D printed around a tiny 3 watt driver, and an enclosure next to them that looks like an amp. From across the desk it reads as a little stack. The player, then the thing that makes the noise. Both of them would still fit in a shoebox.

Hi-fi

Inside the amp is another ESP32 and two small amplifier boards, wired out to the speakers. The ESP32 runs a server that streams MP3s. That’s the entire playback path now. Home Assistant is gone. Nothing in the house has to wake up, route audio, or remember which media player I meant. The hi-fi just plays what it’s told.

The thing doing the telling lives on the homelab. It’s a small Python server that knows which record is which, and it’s also where I can choose what plays without getting a sleeve out of the crate. The reader in the player sends it a message, the server tells the amp which record to play, and the ESP32 streams it out through the speakers.

The interaction didn’t change, which was the point. You still just put a record down. The difference is the sound now comes from something that belongs to the player, rather than being borrowed from the rest of the house.

I did think about the sensible version of this. Last time I wrote about the player I said Home Assistant was perfect for me and a pretty unfriendly setup story for anyone else, and that a bit of Spotify pairing or a small cloud service would be the way to make more than one. That’s probably still true. What I actually built was another box, another microcontroller, and a server on the homelab that streams files.

Which, if I’m honest, is a more enjoyable outcome. The player isn’t a remote control for the smart home anymore. It’s one half of a very small hi-fi, and the other half sits right next to it.

🎶

Keep exploring

If you’re reading this because you’re hiring or curious about how I think about engineering, you might also like:

You can also head back to my CV or browse all posts.