Kevin Chen

Multi-room Audio with Snapcast

Goal: play the same audio in multiple rooms, synced, without buying into Sonos.

I have a mix of speakers around the house - Kanto YU5 in the living room, Klipsch R-15PM in the basement, Audioengine A2+ in the office, Samsung soundbar on the TV, and a Sonos Roam in the kitchen. None of them talk to each other natively.

Went with Snapcast. Server runs on my NAS, clients are Raspberry Pi 3s in each room. Each Pi connects to its local speakers - USB for the Klipsch, aux for others. The Sonos Roam connects via Bluetooth from one of the Pis.

Setup was straightforward:

One gotcha: the Klipsch speakers show up as a USB audio device (card 2), not the default. Had to specify the soundcard explicitly:

SNAPCLIENT_OPTS="--host 192.168.4.173 --hostID snapclient-living --player alsa --soundcard plughw:2,0"

Also had to max out the volume on the USB device since it defaulted to something low:

1amixer -c 2 set PCM 100%
2sudo alsactl store

Now I can play music from the NAS and it comes out everywhere, perfectly synced. Snapweb gives a decent web UI for controlling it.

Links: Snapcast

#Home Lab