Speakeasy

Ready-made ESP32-S3 multi-room audio hardware and firmware.


Low Cost (off-the-shelf only)

A ~$30 per-room speaker using off-the-shelf modules and no soldering beyond wire terminals.

Parts

Part Qty Price Link
ESP32-S3 Supermini 1 ~$4.25 Amazon B0GS283V6F
MAX98357A I2S amplifier breakout 1 ~$2.00 Amazon B0B4GK5R1R
Saiyin 3" wall-mount passive speaker 1 ~$18.00 Amazon B0DGLMY9SB
Dupont jumper wires F-F (recommend 10 cm) 5 <$1.00 Amazon B07GD312VG
USB-C power supply + cable 1 ~$4.50 Amazon B08G4GRQYV
Total ~$29.75

Wiring

MAX98357A pin ESP32-S3 Supermini pin
BCLK GPIO 11
LRC GPIO 10
DIN GPIO 12
VIN 5V
GND GND
Speaker+/− Speaker terminals

Setup

  1. Wire the MAX98357A to the ESP32-S3 Supermini as above.
  2. Connect the speaker to the MAX98357A output terminals.
  3. Plug the ESP32-S3 into USB and flash firmware from the Flash tab.
  4. Provision WiFi credentials via Improv Serial (USB, all builds) or Improv BLE (requires a Bluetooth-enabled build).
  5. Add the device to Music Assistant or your Snapcast server.

⚠ These are experimental development builds. Expect bugs.

Plug in via USB and flash below. Requires Chrome or Edge, or Firefox with the WebSerial extension.

Hardware pin mappings
Hardware Signal GPIO Component
OTSLRCLK4MAX98357A
BCLK 5MAX98357A
DOUT 6MAX98357A
PCBLRCLK6MAX98357A
BCLK 5MAX98357A
DOUT 4MAX98357A
Hardware

Off-the-shelf is the generic ESP32-S3 Supermini — hand-wired or on the Speakeasy Lowcost PCB — with LRCLK/BCLK/DOUT on GPIO 4/5/6. PCB is the custom Speakeasy board (ESP32-S3-MINI-1U-N4R2), which uses the same three pins but swaps LRCLK and DOUT: DOUT/BCLK/LRCLK on GPIO 4/5/6.

Protocol

The audio streaming protocol. Sendspin integrates natively with Music Assistant for synchronized multi-room audio. Snapcast (ESPHome) wraps CarlosDerSeher/snapclient with Home Assistant integration. Snapcast (standalone) runs CarlosDerSeher/snapclient bare on ESP-IDF with no ESPHome or HA integration.

Bluetooth

BLE is used for WiFi provisioning via Improv — configure WiFi credentials from a phone without USB. Disabling it frees ~100 KB of RAM and is recommended once the device is set up.

Pull OTA

Pull OTA lets the device fetch and flash firmware from a URL via its web UI.

Use Chrome, Edge, or Firefox + WebSerial Requires HTTPS
Changes vs upstream snapclient

Based on CarlosDerSeher/snapclient with the following additions:

Source on GitHub.