
Speakeasy panel 2x3
W-Floyd/speakeasy
ESPHome firmware for a custom ESP32-S3 WiFi speaker that integrates with Music Assistant via the Sendspin protocol or Snapcast for synchronized multi-room audio.

ESPHome firmware for a custom ESP32-S3 WiFi speaker that integrates with Music Assistant via the Sendspin protocol or Snapcast for synchronized multi-room audio.
Speakeasy panel 3x3 is an open-source printed circuit board by W-Floyd, from the W-Floyd/speakeasy repository on GitHub. It is a 2-layer board of 127 × 149 mm with 414 parts on 504 nets, routed with 1,341 tracks and 954 vias.
It is built around the ESP32-S3-MINI-1U-N4R2, MPM3810GQB-33-Z and MAX98357AETE+T, with the 210-A-SMD/02 and PH-6P立贴 among its other parts. Its parts include 45 capacitors, 45 resistors, 27 ICs, 18 connectors and 18 switches. It belongs with the ESP32 boards of this library.
ESPHome firmware for a custom ESP32-S3 WiFi speaker that integrates with Music Assistant via the Sendspin protocol or Snapcast for synchronized multi-room audio.
Flash firmware directly from your browser at https://w-floyd.github.io/speakeasy/. Requires Chrome or Edge, or Firefox with the WebSerial extension.
The installer lets you pick your configuration interactively: protocol, server discovery, Bluetooth, IPv6, and WiFi TX power.
Two protocol stacks are available. Both Snapcast variants use CarlosDerSeher/snapclient under the hood — the difference is the surrounding framework:
| Protocol | Discovery | Notes |
|---|---|---|
| Sendspin | mDNS | Native Music Assistant integration |
| Snapcast (ESPHome) | mDNS or static IP | snapclient wrapped in ESPHome — Home Assistant integration |
| Snapcast (standalone) | mDNS or manual IP | snapclient running bare ESP-IDF — no ESPHome/HA |
Each variant is further configurable along these axes (ESPHome builds):
| Component | Detail |
|---|---|
Board (ots) | ESP32-S3 Supermini (ESP32-S3FH4R2) — 4MB flash, 2MB quad PSRAM. Hand-wired, or on the Speakeasy Lowcost PCB |
Board (pcb) | Custom Speakeasy PCB — ESP32-S3-MINI-1U-N4R2 |
| DAC + Amplifier | MAX98357A I2S DAC + Class D amplifier |
I2S pins (ots) | LRCLK: GPIO4, BCLK: GPIO5, DOUT: GPIO6 |
I2S pins (pcb) | DOUT: GPIO4, BCLK: GPIO5, LRCLK: GPIO6 |
Sendspin:
Music Assistant → Sendspin → ESP32 WebSocket → sendspin_media_source → speaker_source → I2S DACTwo Home Assistant entities: sendspin_group_media_player (what MA controls) and the speaker_source player (drives I2S output).
Snapcast (ESPHome and standalone):
Snapcast server → CarlosDerSeher/snapclient → I2S DACESPHome builds wrap snapclient as a media player entity exposed to Home Assistant. Standalone builds run snapclient directly on bare ESP-IDF with no ESPHome or HA integration.
# Validate config without building
esphome config speakeasy-ss-mdns.yaml
# Compile firmware
esphome compile speakeasy-ss-mdns.yaml
# Flash over USB
esphome upload speakeasy-ss-mdns.yaml
# Flash OTA
esphome upload speakeasy-ss-mdns.yaml --device <ip>
# Stream logs
esphome logs speakeasy-ss-mdns.yaml --device <ip>YAML filenames follow the pattern speakeasy-{protocol}-{options}.yaml. Protocol is ss (Sendspin) or sc (Snapcast). Options are mdns, bt (Bluetooth), 6 (IPv6), and WiFi power (w9, wr, w9r).
Edit the substitutions at the top of the chosen variant YAML. For Snapcast variants with a static server address:
substitutions:
snapcast_server_ip: "192.168.1.1"
snapcast_server_port: "1704"The compact PCB antenna on the ESP32-S3 Supermini self-interferes at high TX power, causing Sendspin time sync failures. 8.5 dBm is the recommended cap. Ramp variants expose a Home Assistant number entity (WiFi TX Power) and automatically step power up in 0.25 dBm increments if WiFi drops, allowing recovery from weak-signal situations without raising the baseline permanently.
Standalone builds are configured via kconfig defaults in snapclient-kconfig/. The manual variant requires editing CONFIG_SNAPSERVER_HOST in snapclient-kconfig/sdkconfig.manual before building.
Audio keeps cutting out with brief snippets then reconnecting.
Sendspin time sync is failing. Check logs for Time message X/8 timed out. Known causes on this hardware:
8.5 dBmpower_save_mode: none| Qty | Value | Footprint | References |
|---|---|---|---|
| 183 | NPTH | NPTH | KiKit_MB_10_1, KiKit_MB_10_2, KiKit_MB_10_3, KiKit_MB_10_4, KiKit_MB_10_5, KiKit_MB_10_6, KiKit_MB_11_1, KiKit_MB_11_2, KiKit_MB_11_3, KiKit_MB_11_4, KiKit_MB_11_5, KiKit_MB_11_6, KiKit_MB_12_1, KiKit_MB_12_2, KiKit_MB_12_3, KiKit_MB_12_4 +167 |
| 36 | MountingHole | MountingHole:MountingHole_3.2mm_M3_Pad_Via | H1, H1, H1, H1, H1, H1, H1, H1, H1, H2, H2, H2, H2, H2, H2, H2 +20 |
| 18 | 100nF | EasyEDA:C0402 | C3, C3, C3, C3, C3, C3, C3, C3, C3, C6, C6, C6, C6, C6, C6, C6 +2 |
| 18 | 5.1k | EasyEDA:R0402 | R1, R1, R1, R1, R1, R1, R1, R1, R1, R2, R2, R2, R2, R2, R2, R2 +2 |
| 9 | 100k | EasyEDA:R0402 | R5, R5, R5, R5, R5, R5, R5, R5, R5 |
| 9 | 10k | EasyEDA:R0402 | R3, R3, R3, R3, R3, R3, R3, R3, R3 |
| 9 | 10uF | EasyEDA:C0603 | C1, C1, C1, C1, C1, C1, C1, C1, C1 |
| 9 | 10uF | EasyEDA:C0402 | C2, C2, C2, C2, C2, C2, C2, C2, C2 |
| 9 | 1k | EasyEDA:R0402 | R4, R4, R4, R4, R4, R4, R4, R4, R4 |
| 9 | 1uF | EasyEDA:C0402 | C5, C5, C5, C5, C5, C5, C5, C5, C5 |
| 9 | 210-A-SMD/02 | EasyEDA:CONN-SMD_210-A-SMD-02 | J2, J2, J2, J2, J2, J2, J2, J2, J2 |
| 9 | 3V3 | TestPoint:TestPoint_Pad_D1.5mm | TP1, TP1, TP1, TP1, TP1, TP1, TP1, TP1, TP1 |
| 9 | BOOT | EasyEDA:SW-SMD_L3.9-W3.0-P4.45 | SW1, SW1, SW1, SW1, SW1, SW1, SW1, SW1, SW1 |
| 9 | ESP32-S3-MINI-1U-N4R2 | EasyEDA:BULETM-SMD_ESPRESSIF_ESP32-S3-MINI-1U-N8 | U1, U1, U1, U1, U1, U1, U1, U1, U1 |
| 9 | GND | TestPoint:TestPoint_Pad_D1.5mm | TP2, TP2, TP2, TP2, TP2, TP2, TP2, TP2, TP2 |
| 9 | MAX98357AETE+T | EasyEDA:TQFN-16_L3.0-W3.0-P0.50-BL-EP1.5 | U2, U2, U2, U2, U2, U2, U2, U2, U2 |
| 9 | MPM3810GQB-33-Z | EasyEDA:QFN-12_L3.0-W2.5_MPM3810AGQB-AEC1 | U3, U3, U3, U3, U3, U3, U3, U3, U3 |
| 9 | PH-6P立贴 | EasyEDA:CONN-SMD_6P-P2.0-L14.0-W5.4 | J1, J1, J1, J1, J1, J1, J1, J1, J1 |
| 9 | RST | EasyEDA:SW-SMD_L3.9-W3.0-P4.45 | SW2, SW2, SW2, SW2, SW2, SW2, SW2, SW2, SW2 |
| 9 | RXD0 | TestPoint:TestPoint_Pad_D1.5mm | TP4, TP4, TP4, TP4, TP4, TP4, TP4, TP4, TP4 |
| 9 | TXD0 | TestPoint:TestPoint_Pad_D1.5mm | TP3, TP3, TP3, TP3, TP3, TP3, TP3, TP3, TP3 |
| 6 | Fiducial | Fiducial | KiKit_FID_B_1, KiKit_FID_B_2, KiKit_FID_B_3, KiKit_FID_T_1, KiKit_FID_T_2, KiKit_FID_T_3 |

W-Floyd/speakeasy
ESPHome firmware for a custom ESP32-S3 WiFi speaker that integrates with Music Assistant via the Sendspin protocol or Snapcast for synchronized multi-room audio.

W-Floyd/speakeasy
ESPHome firmware for a custom ESP32-S3 WiFi speaker that integrates with Music Assistant via the Sendspin protocol or Snapcast for synchronized multi-room audio.

W-Floyd/speakeasy
ESPHome firmware for a custom ESP32-S3 WiFi speaker that integrates with Music Assistant via the Sendspin protocol or Snapcast for synchronized multi-room audio.

W-Floyd/speakeasy
ESPHome firmware for a custom ESP32-S3 WiFi speaker that integrates with Music Assistant via the Sendspin protocol or Snapcast for synchronized multi-room audio.

W-Floyd/speakeasy
ESPHome firmware for a custom ESP32-S3 WiFi speaker that integrates with Music Assistant via the Sendspin protocol or Snapcast for synchronized multi-room audio.

W-Floyd/speakeasy
ESPHome firmware for a custom ESP32-S3 WiFi speaker that integrates with Music Assistant via the Sendspin protocol or Snapcast for synchronized multi-room audio.

W-Floyd/speakeasy
ESPHome firmware for a custom ESP32-S3 WiFi speaker that integrates with Music Assistant via the Sendspin protocol or Snapcast for synchronized multi-room audio.

Woz4tetra/auto-battlebot
This project brings aim-assist and autonomous control to combat robots.


ThVerstappen/AI-Fx580VNX
Revision mới nhất hoàn tất ngày 11/10/2026. Mở FX580MainEPDLAYOUTV8.kicadpro bằng KiCad 10.0.5; PCB và schematic cùng tên. Thư viện local dùng ${KIPRJMOD}/lib.


hackclub/sprig
🍃 Learn to code by making games in a JavaScript web-based game editor.

jamro/tiny-engineer
A small desktop robot that brings an AI coding assistant to life, physically acting out when it reads files, thinks, writes code, and finishes work.

jackw01/pi-tin
Open source raspberry pi handheld retro gaming console

atomic14/esp32-tv-hardware
This is Work In Progress - I'm still working on this.
It measures 127 × 149 mm and has 2 copper layers, 1.6 mm thick.
414 parts, built around the ESP32-S3-MINI-1U-N4R2, MPM3810GQB-33-Z, MAX98357AETE+T and 210-A-SMD/02. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the W-Floyd/speakeasy repository on GitHub, at the commit this page was made from: the board is pcb/speakeasy/speakeasy/Speakeasy_panel_3x3.kicad_pcb and its schematic pcb/speakeasy/speakeasy/Speakeasy Lowcost.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask W-Floyd before reusing the design.