ESParagus Media Center

ESP32-based, Home Assistant compatible streaming audio player

Limited items in stock

View Purchasing Options
May 30, 2024

Project update 5 of 7

Esparagus and Snapcast

by Andriy

For this week’s update, I’d like to demonstrate using the Esparagus board together with the Snapclient firmware. Originally, Snapcast was created as an open-source alternative to the proprietary SONOS multi-room sync protocol.
As it turns out, doing a few-millisecond-off sync is not a trivial task (mind you, one millisecond is a 34 centimeter (or one foot) travel distance for sound in typical conditions). So hats off to the people who managed to create it to begin with, and hats off to those brave enough to port it to the ESP32 platform.

So first things first. Let’s configure the server side, which is Home Assistant in my case, although you can host it on any device in your network, be it Raspberry Pi, laptop, or PC.

Configuring Snap-server in HA

If you choose to use Music Assistant, it is one step process. Just enable the appropriate player provider in the MA settings:

In case you choose to host Snapserver outside the Home Assistant, you can still use it with Snapcast integration:

Since Snap clients are equipped with an auto-discovery feature, typically you’d prefer to have a single instance in the network. Otherwise, auto-discovery may start acting weird. Although, in more complicated setups you still have an option to bind clients manually.

Flashing Esparagus boards

The Snapclient firmware is in active development at the moment and folks from the team are fine-tuning configs as we speak. To keep up with the development, I’ve created a fork that includes a web installer that (A) has working configurations for all Esparagus boards, and (B) updates binaries automatically with every sync of the upstream codebase using GitHub actions. Cool, right?

Using the above installer, you can flash the latest tested Snapclient firmware in minutes, but also connect to your WiFi network using Improv - the same tool that ESPHome uses for device initialization.

As I mentioned, auto-discovery works beautifully, the client picks up the server in no time.

Same on the server side, all devices in the network are immediately available as players:

You can use them separately or (more typically) in-sync:

As you’d expect, sync is perfect. I tried it with two speakers powered by the two devices, and couldn’t catch a difference. Can you?


Sign up to receive future updates for ESParagus Media Center.

Subscribe to the Crowd Supply newsletter, highlighting the latest creators and projects