Repo of the Day
sle118/squeezelite-esp32
Published: Feb 20, 2026
Open repository ↗ESP32 Music streaming based on Squeezelite, with support for multi-room sync, AirPlay, Bluetooth, Hardware buttons, display and more
Summary
squeezelite-esp32 is a C-based audio streaming firmware for ESP32 and ESP32-S3 modules that turns the chip into a network music player. It is built around Logitech Media Server (LMS) for multi-room sync, and adds Bluetooth source, AirPlay 1, and Spotify Connect as secondary modes. The project also supports a wide range of peripherals including I2S DACs, SPDIF output, displays, buttons, and rotary encoders.
What it is useful for
This firmware is useful when you want to repurpose an ESP32 (WROVER-class, with 4MB Flash and 4MB PSRAM) as a low-cost, networked audio endpoint. The primary use case is acting as a player for an LMS server, which provides access to local files and streaming services like Spotify, Deezer, Tidal, and Qobuz, with synchronized multi-room playback. Engineers can also use it to build AirPlay 1 receivers, Bluetooth audio sinks or sources (the README notes that when sending to a Bluetooth speaker, only 44.1 kHz is supported), or Spotify Connect targets.
It is a fit for DIY hardware projects involving I2S DACs (built-in support for TAS57xx, TAS5713, AC101, WM8978, ES8388, ES8311), SPDIF output, OLED/TFT displays (drivers like SSD1306, SSD1322, ST7789, ILI9341), IR receivers, rotary encoders, GPIO expanders, LED strips, and Ethernet (LAN8720 with RMII or DM9051/W5500 over SPI). The README lists reference boards including the SqueezeAMP, Raspiaudio MuseLuxe, ESP32-A1S, ESP32-LyraT-Mini, and the LilyGo T-WATCH2020.
Documented limitations matter here: 192 kHz playback is challenging when a display is active, AAC with SBR is CPU-heavy enough that the README adds a AAC_DISABLE_SBR option, and on classic ESP32 the Spotify plus SPDIF combination stutters if the "stats" option is enabled. WROOM modules without PSRAM are explicitly unsupported, and the ESP32-S3 port has no Bluetooth audio.
How engineers can use it
The README points engineers to a web UI for configuration, accessible after flashing. Initial setup is automatic from any WiFi device, and ongoing changes happen through an NVS editor in the "credits" section of the UI. Hardware parameters (DAC, SPDIF, display, buttons, I2C, SPI) are set as NVS key-value strings, with concrete syntax such as dac_config: model=AC101,bck=27,ws=26,do=25,di=35,sda=33,scl=32 shown for the AC101 codec on an ESP32-A1S.
For custom builds, the project uses ESP-IDF and provides sdkconfig.defaults files per target. To rebuild for the SqueezeAMP, the README specifies squeezelite-esp32-SqueezeAmp-sdkconfig.defaults; for a generic PCM5102 I2S DAC board the file is squeezelite-esp32-I2S-4MFlash-sdkconfig.defaults. Equalizer, resampling, cross-fade, and a 10-band EQ are available in 16-bit mode only. A dedicated slimdevices forum thread is referenced for community help and additional build instructions.