Music Assistant, Squeezelite ESP32

I purchased two Espressif ESP32-DevKitC-VIE boards to run Squeezelite and pair to bluetooth speakers but I am having nothing but issues with them. I got one to work intermittently but they crash constantly and buffer pretty often even after a lot of tinkering. These boards meet the specifications for Squeezelite but I just cannot make them work. Does anyone have Squeezelite and bluetooth speakers working with Music Assistant in a stable configuration and use it often? I wanted to use these to put speakers throughout the house and sync them up, but if this isn’t a stable solution I am going to move away from trying to make this work.

I put Squeezelite on an old cellphone and that works, so I know Squeezelite and Music Assistant work in my environment.

(I was going to post this on discord, created an account but it won’t let me post to the hardware channel.)

If this is for use with Musicassistant maybe try sendspin

Also do you have log from esp device during/before crash

Hello,

I have 2, not exactly the same board, working quite fine.
For streaming from MA to the device via wifi you have to select low quality stream, it was with old interface and I don’t remember where was the settings.

I feel that with the latest update of MA these player works better.
Sometimes I have small issues, just a matter of restarting.
Bluetooth connect with a phone is just always working fine.

I reinstalled and reconfigured the one board that I had better luck with. It plays music but it is playing it slow, almost at 1/2 speed. Here is some output from the logs.


W (2892) console: Processing autoexec commands while network manager active. Wifi related commands will be ignored.
I (2892) console: autoexec is set to perform auto-process
I (2892) console: Running command autoexec1 = squeezelite -o bt -n Squeezelite_1 -s 192.168.1.245:3483 -b 1000:2000
-C 30 -d all=sdebug -r 96000 -R
W (2892) config: Value not found for key autoexec2
squeezelite-esp32> I (2892) squeezelite_cmd: Calling squeezelite
[00:00:01.472] sb_controls_init:249 initializing audio (buttons/rotary/ir) controls (raw:0)
[00:00:01.473] sb_displayer_init:327 no display or led visualizer for LMS
[00:00:01.473] stream_init:539 init stream
[00:00:01.474] stream_init:540 streambuf size: 1024000
[00:00:01.474] output_init_embedded:78 init device: bt
[00:00:01.474] output_init_common:357 outputbuf size: 2048000
[00:00:01.475] output_init_common:381 idle timeout: 30000
[00:00:01.475] output_init_common:433 supported rates: 96000 88200 48000 44100 32000 24000 22500 16000 12000 11025 8000
[00:00:01.475] output_init_embedded:94 init Bluetooth
I (2902) BTDM_INIT: BT controller compile version [2c56073]
[00:00:01.476] equalizer_set_samplerate:122 equalizer sample rate 44100
[00:00:01.477] output_visu_init:75 Initialize VISUEXPORT 512 16 bits samples
[00:00:01.477] output_init_embedded:108 init completed.
[00:00:01.478] decode_init:153 init decode
[00:00:01.478] register_alac:547 using alac to decode alc
[00:00:01.478] register_helixaac:686 using helix-aac to decode aac
[00:00:01.479] register_vorbis:526 using vorbis to decode ogg
[00:00:01.479] register_opus:458 using opus to decode ops
[00:00:01.480] register_flac:338 using flac to decode ogf,flc
[00:00:01.480] register_pcm:483 using pcm to decode aif,pcm
[00:00:01.480] register_mad:417 using mad to decode mp3
[00:00:01.480] decode_init:206 include codecs: exclude codecs:
[00:00:01.481] resample_init:159 Resampling with filter 0
[00:00:01.485] slimproto:964 connecting to 192.168.1.245:3483
[00:00:01.486] slimproto:989 unable to connect to server 0

[00:01:03.763] sendSTAT:177 ms_played: 0
[00:01:03.763] sendSTAT:205 STAT: STMf
[00:01:03.763] sendSTAT:210 received bytesL: 0 streambuf: 0 outputbuf: 0 calc elapsed: 0 real elapsed: 63656 (diff: -636
56) device: 0 delay: 63656
[00:01:03.764] codec_open:283 codec open: ‘f’
[00:01:03.766] stream_sock:660 connecting to 192.168.1.245:8097
[00:01:03.773] stream_sock:734 header: GET /single/2RR56S8T/c0:5d:89:df:38:ec/5ba1254b885a4b70b02be360047d1546.flac HTTP
/1.0
Host: 192.168.1.245:8097
Connection: close
Accept: /
Cache-Control: no-cache
User-Agent: VLC/3.0.9 LibVLC/3.0.9
Range: bytes=0-
[00:01:03.776] sendSTAT:177 ms_played: 0
[00:01:03.777] send_header:154 wrote 225 bytes to socket
[00:01:03.777] send_header:158 wrote header
[00:01:03.779] sendSTAT:205 STAT: STMc
[00:01:03.779] sendSTAT:210 received bytesL: 0 streambuf: 0 outputbuf: 0 calc elapsed: 0 real elapsed: 63669 (diff: -636
69) device: 0 delay: 63669
[00:01:03.780] process_strm:418 set fade: 0, channels: 0, invert: 0
[00:01:03.883] stream_thread:415 headers: len: 338
HTTP/1.0 200 OK
Server: Music Assistant
transferMode.dlna.org: Streaming
contentFeatures.dlna.org: DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000
Cache-Control: no-cache
Pragma: no-cache
icy-name: Death Cab for Cutie - Black Sun
Accept-Ranges: none
Content-Type: audio/flac
Date: Fri, 23 Jan 2026 22:23:38 GMT
[00:01:03.884] sendRESP:240 RESP
[00:01:03.892] process:574 codc
[00:01:03.892] process_codc:448 codc: f
[00:01:03.893] codec_open:283 codec open: ‘f’
[00:01:03.989] stream_thread:521 poll timeout
[00:01:04.089] stream_thread:521 poll timeout
[00:01:04.189] stream_thread:521 poll timeout
[00:01:04.289] stream_thread:521 poll timeout
[00:01:04.389] stream_thread:521 poll timeout
[00:01:04.489] stream_thread:521 poll timeout
[00:01:04.589] stream_thread:521 poll timeout
[00:01:04.689] stream_thread:521 poll timeout
[00:01:04.789] stream_thread:521 poll timeout
[00:01:04.889] stream_thread:521 poll timeout
[00:01:04.989] stream_thread:521 poll timeout
[00:01:05.089] stream_thread:521 poll timeout
[00:01:05.189] stream_thread:521 poll timeout
[00:01:05.289] stream_thread:521 poll timeout
[00:01:05.389] stream_thread:521 poll timeout
[00:01:05.489] stream_thread:521 poll timeout
[00:01:05.589] stream_thread:521 poll timeout
[00:01:05.689] stream_thread:521 poll timeout
[00:01:05.789] stream_thread:521 poll timeout
[00:01:05.889] stream_thread:521 poll timeout
[00:01:05.989] stream_thread:521 poll timeout
[00:01:06.089] stream_thread:521 poll timeout
[00:01:06.147] stream_thread:513 streambuf read 8640 bytes
[00:01:06.148] stream_thread:513 streambuf read 4064 bytes
[00:01:06.154] stream_thread:513 streambuf read 2880 bytes
[00:01:06.168] stream_thread:513 streambuf read 4320 bytes
[00:01:06.169] stream_thread:513 streambuf read 4320 bytes
[00:01:06.222] stream_thread:513 streambuf read 1440 bytes
[00:01:06.223] stream_thread:513 streambuf read 1440 bytes
[00:01:06.254] stream_thread:513 streambuf read 28448 bytes
[00:01:06.256] stream_thread:513 streambuf read 4320 bytes
[00:01:06.265] stream_thread:513 streambuf read 15840 bytes
[00:01:06.266] sendSTAT:177 ms_played: 0
[00:01:06.267] sendSTAT:205 STAT: STMl
[00:01:06.267] sendSTAT:210 received bytesL: 75712 streambuf: 75712 outputbuf: 0 calc elapsed: 0 real elapsed: 66159 (di
ff: -66159) device: 0 delay: 66159
[00:01:06.285] decode_thread:75 streambuf bytes: 75712 outputbuf space: 2047999

I read the sendspin page but am confused what that does, I have seen that listed before but thought there isn’t any other component needed as squeezelite on the board should be enough.

Sendspin is the open home foundation replacement for squeezelite. They posted the reasoning behind making a new protocol and maybe it make sense or maybe it’s silly, ultimately it is the direction they are going and overall it may be best direction as sendspin devices are auto discovered by Musicassistant and HA function may be cleaner once completed. It is not completed but functional!

To use I had most success modifying yaml from HAVPE to my device.
I success esp32-s3. no success esp32.

Hello,

as far as I understand the log you are playing a flac audio file, the quality is too high for Squeezelite on Esp try with mp3 quality, you should select it in the player properties, if I recall correctly.

I am converting all my ESP32 players from Squeezelite-ESP32 to Sendspin. I have had probably better luck with the Sendspin firmware vs the Squeezelite firmware.