For multi-room home audio, I’ve had my eyes on Sonos for a while. Though expensive, reviews have always said that it just works. When the Sonos app redesign removed features many had used for years, I paused my plans. Then, I learned about quiet cloud dependency. That makes you realize that you don’t really own anything, even after paying for it.

That made it difficult to pay a premium for hardware that keeps phoning home. So, I started digging for options. Running Snapcast on a Raspberry Pi 4 gave me everything I wanted — synchronized audio across rooms, no subscriptions, no cloud dependency, and no account.

👁 Digital Jukebox Raspberry Pi - featured
I’m building a digital jukebox with Raspberry Pi — here’s how

If you want to build your own digital jukebox, it's easier than you might expect

By  Jeff Butts

Why did I finally stop waiting and give up Sonos

Paying for hardware I don’t fully own

Let me be clear: this is not a jab or potshot at Sonos. I genuinely admire the Sonos speakers and the audio quality they produce. The app overhaul in mid-2024 changed the experience for everyone who owned Sonos gear, and many folks had already moved on before the company backpedaled.

Sonos syncs audio across rooms exceptionally well — my concern isn’t about the technology. It is about who controls that sync layer and what happens to the hardware when the company decides to push an update I didn’t ask for. The 2024 app overhaul backlash has already put me on edge.

Beyond that, a single Sonos Era 100 costs $250, and a stereo pair costs $500. The Era 300 pair costs $900 for a single-room audio setup. Since software is so closely tied to hardware, an update or discontinuation could make the entire setup obsolete overnight. That’s why I moved towards Snapcast.

What Snapcast is and why it fits perfectly here

Turns out the community was right

What sold me on Snapcast was its ability to sync audio across multiple rooms on my network without any subscription, cloud dependency, or account. When walking between rooms, there’s no drop or echo between speakers. That’s what the community claimed, and I didn’t believe it until I tried it.

One thing stands out clearly: Snapcast has no playback engine. It only handles the distribution and synchronization between devices. For music playback, I use MPD (Music Player Daemon) to stream local music files to the Snapcast server, which distributes them across rooms. Since MPD is CLI-only, I use RompR as a web-based front end that can be controlled from anywhere without installing platform-specific apps.

Everything runs on my local network without pinging to any server outside.

Getting Snapcast, MPD, and RompR running on Pi

Less painful than I expected

On the Pi 4, I installed Snapcast, a server for receiving audio streams and synchronizing them across devices. I mapped the SMB shares from my mini PC to the Raspberry Pi for music files, then configured MPD to load that mount point and send audio output to Snapcast.

In the Snapserver configuration file, I set MPD as the audio source. Since both MPD and Snapserver lack a UI, I installed Snapweb and defined it as the document directory in Snapserver’s config. That gave me access to a web-based interface for controlling multi-room audio distribution and playback.

RompR handles music playback, making it easy to browse and queue music. It can also pull metadata from Last.fm, which is a nice touch. The result is a local jukebox setup without any playback delay, especially when roaming between rooms. It felt too seamless to be running on a Pi, so I double-checked to make sure it was actually working.

Using the hardware that I already own

Small tweaks necessary

My Pi runs Snapserver, MPD, and RompR without breaking a sweat. No additional hardware was needed beyond what I already owned, since the Pi handles audio streams over the network. The Pi 4 is the right device for the server role, which needs a decent headroom that lighter Pi models can’t always handle.

In the room where audio quality matters, I hooked up a Pi 3B+ to a USB DAC, which feeds audio to a pair of passive bookshelf speakers. That’s the only spot that gets a dedicated USB DAC. For other rooms, a Pi Zero 2W acts as a Snapclient, connecting speakers through USB-to-3.5mm adapters. The $15 Pi Zero 2W fits the client role, handling one lightweight process, and can easily disappear behind the speaker.

The best audio system is the one you control

If you already own a Pi, then this setup costs nothing and answers only to you. No app updates can strip features overnight. There are no subscriptions or accounts. Your music plays in every room, exactly how you set it up.

This setup is mostly for local music files. To integrate streaming services, Home Assistant, and more, my colleague Jeff Butt's recommendation is a good starting point. You can install Shairport Sync, which lets you push audio from any Apple device throughout the whole house. Raspotify brings Spotify Connect capability to the setup as well. Both options can pipe music to Snapcast directly without touching the rest of the stack.

That’s the kind of ownership no product box can promise.