I feel the need to start a discussion about this media player setup I am trying to test without much luck, if anyone else is having a play with this setup and can offer some advice it would be great.
Background. I have been using these media players as stand alone players with great success for some time, I use them to modify old 1950’s radios along with some 1970 transistor radio’s.
I have 5 that I am playing with now trying to get the Resonate stuff running, with my current yaml I have the normal media player working 100% of the time. The resonate media player side just seems to reboot the esp32, there are no logs, just instant reboot, whether trying to play a group or trying to play as a single player.About every 10th time or so I try to play the resonate player it will work fine and play for a long time if left alone.
Resonate is a component for ESPHome, enabling synchronized audio playback across multiple devices.
I already use the esphome media player and have been for a long time, if you see in my yaml that player still exists and works perfectly. But it is not synchronized across players. Hence wanting to try this.
As first test I installed on HAVPE
esphome 2025.12.0-dev20251123. It shows min version 2025.11.0 in example resonate file for HAVPE. I tried building on another of my devices and it could not find resonate component and I update from 11.0 to the dev12.0 version to check. I will build with 11.0 later after I test my nonHAVPE device
HAVPE.yaml
i used the file here recommended by this github post
Device shows in MusicAssistant and can be added as resonate player group
resonated media player shows in HA
works without issue
I will test a waveshare device i have and edit this post with result
with my other device i get below when i try to play music with resonate. I gotta look over yaml. everything else looks OK from UI.
13:23:13.965][W][micro_wake_word:254]: Not enough free bytes in ring buffer to store incoming audio data. Resetting the ring buffer. Wake word detection accuracy will temporarily be reduced.
[13:23:13.965][D][ring_buffer:034]: Created ring buffer with size 38400
[13:23:13.973][D][ring_buffer:034]: Created ring buffer with size 38400
[13:23:14.081][D][ring_buffer:034]: Created ring buffer with size 38400
[13:23:14.082][D][ring_buffer:034]: Created ring buffer with size 38400
normal media player is OK (ring buffer 19200) so I am guessing this need to change. Need to learn how.
EDIT
reducing buffer size correct this but seems it may not have been related to my issue
I did try it with my esp32 based voice units, as well with little success. This was a few weeks ago, I don’t remember what the logs said. I then decided to concentrate on the media players as there is a lot less code. I can’t test right now as a power cut has caused my servers os to fail, maybe a day or 2 till I get back in control.
Actually it seems like HAV unit resonate media player does not playback after some time. Rebooting fixes but if that not working well I hold little hope for other devices
I finally found a bit of time to get the logs from attempting to play an album from MA.
[14:31:53]e[I][logger:121]: Log initialized
[14:31:53]
[14:31:53][C][safe_mode:084]: Unsuccessful boot attempts: 5
[14:31:53]
[14:31:53][D][esp32.preferences:149]: Writing 1 items: 0 cached, 1 written, 0 failed
[14:31:53]
[14:31:53][I][app:073]: Running through setup()
[14:31:53]
[14:31:53][C][component:173]: Setup preferences took 0ms
[14:31:53]
[14:31:53][C][component:173]: Setup esp32_rmt_led_strip.light took 1ms
[14:31:53]
[14:31:53][D][light:090]: 'kitchen-radio LED' Setting:
[14:31:53]
[14:31:53][D][light:096]: Color mode: RGB
[14:31:53]
[14:32:08][C][component:173]: Setup [I][resonate.websocket:120][httpd]: client opened a connection
[14:32:08][I][resonate.hub:275][httpd]: Handshake done, a new connection was opened
[14:32:08][D][resonate.hub:524][httpd]: Connected to server Music Assistant with id 732a9beac173431b9c345732b67c04fe
[14:32:12][D][api:161]: Accept 192.168.1.87
[14:32:12][W][component:337]: api cleared Warning flag
[14:32:12][D][api.connection:1386]: Home Assistant 2025.11.3 (192.168.1.87) connected
[14:32:20][D][resonate.hub:132]: Trying to start decode task
[14:32:20][D][resonate.hub:712][resonate_decode]: Decode task - High water mark changed from 5304 to 4216.
[14:32:20][D][text_sensor:087][httpd]: 'Year': Sending state '1997'
[14:32:20][D][text_sensor:087][httpd]: 'Track Number': Sending state '1'
[14:32:20][D][text_sensor:087][httpd]: 'Track Title': Sending state 'All Mod Cons'
[14:32:20][D][text_sensor:087][httpd]: 'Artist': Sending state 'Jam'
[14:32:20][D][text_sensor:087][httpd]: 'Album': Sending state 'All Mod Cons'
[14:32:20][D][text_sensor:087][httpd]: 'Year': Sending state '0'
[14:32:20][D][text_sensor:087][httpd]: 'Track Number': Sending state '1'
[14:32:20][D][resonate.hub:451][httpd]: Stream Started
[14:32:20][D][resonate.hub:712][resonate_decode]: Decode task - High water mark changed from 8192 to 5304.
[14:32:20][D][text_sensor:087][httpd]: 'Track Title': Sending state 'All Mod Cons'
[14:32:20][D][text_sensor:087][httpd]: 'Artist': Sending state 'Jam'
[14:32:20][D][text_sensor:087][httpd]: 'Album': Sending state 'All Mod Cons'
[14:32:20][D][resonate.hub:162]: Decode task starting
[14:32:20][D][resonate.hub:167]: Decode task running
[14:32:20][D][resonate.media_player:219]: Starting
[14:32:20][D][resonate.media_player:223]: Started
[14:32:20][D][light:090]: 'kitchen-radio LED' Setting:
[14:32:20][D][light:103]: State: ON
[14:32:20][D][light:078]: Brightness: 100%
[14:32:20][D][light:114]: Red: 100%, Green: 0%, Blue: 0%
[14:32:20][D][resonate.media_player:302]: State changed to PLAYING
[14:32:20][D][resonate.hub:712][resonate_decode]: Decode task - High water mark changed from 4200 to 4072.
[14:32:20][D][ring_buffer:034][speaker_task]: Created ring buffer with size 11520
[14:32:20][D][text_sensor:087][httpd]: 'Track Title': Sending state 'All Mod Cons'
[14:32:20][D][text_sensor:087][httpd]: 'Artist': Sending state 'Jam'
[14:32:20][D][text_sensor:087][httpd]: 'Album': Sending state 'All Mod Cons'
[14:32:20][D][text_sensor:087][httpd]: 'Year': Sending state '1997'
[14:32:20][D][text_sensor:087][httpd]: 'Track Number': Sending state '1'
[14:32:20][D][resonate.hub:712][resonate_decode]: Decode task - High water mark changed from 4216 to 4200.
[14:32:20][D][resonate.media_player:612][resonate_sync]: Hard sync: adding 1200 frames of silence. Current error is 0us. There are 0 pending frames for correction, and the deque has 0 entries
[14:32:20][D][i2s_audio.speaker:102]: Starting
[14:32:20][D][i2s_audio.speaker:106]: Started
[14:32:20][W][resonate.media_player:490][resonate_sync]: Potential buffer underflow incoming
[14:32:20][D][resonate.media_player:612][resonate_sync]: Hard sync: adding 1200 frames of silence. Current error is -25000us. There are 1200 pending frames for correction, and the deque has 1 entries
[14:32:20][D][resonate.media_player:612][resonate_sync]: Hard sync: adding 1200 frames of silence. Current error is -50000us. There are 2400 pending frames for correction, and the deque has 2 entries
[14:32:20][D][resonate.media_player:572][resonate_sync]: Out of sync, muting output until corrected
[14:32:20][D][resonate.media_player:612][resonate_sync]: Hard sync: adding 1200 frames of silence. Current error is 689404us. There are 1200 pending frames for correction, and the deque has 2 entries
[14:32:20][D][resonate.media_player:612][resonate_sync]: Hard sync: adding 1200 frames of silence. Current error is 664404us. There are 2400 pending frames for correction, and the deque has 3 entries
[14:32:20][D][resonate.media_player:612][resonate_sync]: Hard sync: adding 1200 frames of silence. Current error is 639404us. There are 2400 pending frames for correction, and the deque has 3 entries
[14:32:20][D][resonate.media_player:612][resonate_sync]: Hard sync: adding 1200 frames of silence. Current error is 614404us. There are 3600 pending frames for correction, and the deque has 4 entries
[14:32:20][D][resonate.media_player:612][resonate_sync]: Hard sync: adding 1200 frames of silence. Current error is 589404us. There are 2400 pending frames for correction, and the deque has 3 entries
[14:32:20][D][resonate.media_player:612][resonate_sync]: Hard sync: adding 1200 frames of silence. Current error is 564404us. There are 3600 pending frames for correction, and the deque has 4 entries
[14:32:20][D][resonate.media_player:612][resonate_sync]: Hard sync: adding 1200 frames of silence. Current error is 539404us. There are 3600 pending frames for correction, and the deque has 4 entries
[14:32:20][D][resonate.media_player:612][resonate_sync]: Hard sync: adding 1200 frames of silence. Current error is 514403us. There are 4800 pending frames for correction, and the deque has 5 entries
[14:32:20][D][resonate.media_player:612][resonate_sync]: Hard sync: adding 1200 frames of silence. Current error is 489404us. There are 4800 pending frames for correction, and the deque has 5 entries
[14:32:20][D][resonate.media_player:612][resonate_sync]: Hard sync: adding 1200 frames of silence. Current error is 464404us. There are 4800 pending frames for correction, and the deque has 5 entries
[14:32:20][D][resonate.media_player:612][resonate_sync]: Hard sync: adding 1200 frames of silence. Current error is 439404us. There are 6000 pending frames for correction, and the deque has 6 entries
[14:32:20]
[14:32:20]assert failed: block_locate_free tlsf_control_functions.h:618 (block_size(block) >= *size)
[14:32:20]
[14:32:20]
[14:32:20]Backtrace: 0x4037d585:0x3fcb1f90 0x4037d54d:0x3fcb1fb0 0x40385471:0x3fcb1fd0 0x403836d9:0x3fcb20f0 0x40383291:0x3fcb2110 0x40376e9f:0x3fcb2130 0x40376eb9:0x3fcb2160 0x403770e0:0x3fcb2180 0x40376b09:0x3fcb21d0 0x420e20aa:0x3fcb21f0 0x403886e1:0x3fcb2220 0x4038897f:0x3fcb2250 0x40388e29:0x3fcb2290 0x40041502:0x3fcb22d0 0x4038626e:0x3fcb2300
[14:32:20]
[14:32:20]
[14:32:20]
[14:32:20]
[14:32:20]ELF file SHA256: d1a561c19
[14:32:20]
[14:32:20]Rebooting...
[14:32:20]ESP-ROM:esp32s3-20210327
[14:32:20]Build:Mar 27 2021
[14:32:21]rst:0xc (RTC_SW_CPU_RST),boot:0x8 (SPI_FAST_FLASH_BOOT)
[14:32:21]Saved PC:0x4037d72d
[14:32:21]SPIWP:0xee
[14:32:21]mode:DIO, clock div:1
[14:32:21]load:0x3fce2820,len:0x158c
[14:32:21]load:0x403c8700,len:0xc80
[14:32:21]load:0x403cb700,len:0x2f40
[14:32:21]entry 0x403c8908
[14:32:21]I (24) boot: ESP-IDF 5.5.1 2nd stage bootloader
[14:32:21]I (24) boot: compile time Nov 23 2025 09:42:11
[14:32:21]I (24) boot: Multicore bootloader
[14:32:21]I (24) boot: chip revision: v0.2
[14:32:21]I (24) boot: efuse block revision: v1.3
[14:32:21]I (25) boot.esp32s3: Boot SPI Speed : 80MHz
[14:32:21]I (25) boot.esp32s3: SPI Mode : DIO
[14:32:21]I (25) boot.esp32s3: SPI Flash Size : 16MB
[14:32:21]I (25) boot: Enabling RNG early entropy source...
[14:32:21]I (25) boot: Partition Table:
[14:32:21]I (26) boot: ## Label Usage Type ST Offset Length
[14:32:21]I (26) boot: 0 otadata OTA data 01 00 00009000 00002000
[14:32:21]I (26) boot: 1 phy_init RF data 01 01 0000b000 00001000
[14:32:21]I (27) boot: 2 app0 OTA app 00 10 00010000 007c0000
[14:32:21]I (27) boot: 3 app1 OTA app 00 11 007d0000 007c0000
[14:32:21]I (28) boot: 4 nvs WiFi data 01 02 00f90000 0006d000
[14:32:21]I (28) boot: End of partition table
[14:32:21]I (28) esp_image: segment 0: paddr=007d0020 vaddr=3c0f0020 size=45a14h (285204) map
[14:32:21]I (79) esp_image: segment 1: paddr=00815a3c vaddr=3fc9b800 size=04bb8h ( 19384) load
[14:32:21]I (83) esp_image: segment 2: paddr=0081a5fc vaddr=40374000 size=05a1ch ( 23068) load
[14:32:21]I (89) esp_image: segment 3: paddr=00820020 vaddr=42000020 size=e83a8h (951208) map
[14:32:21]I (257) esp_image: segment 4: paddr=009083d0 vaddr=40379a1c size=11cf0h ( 72944) load
[14:32:21]I (273) esp_image: segment 5: paddr=0091a0c8 vaddr=50000000 size=00020h ( 32) load
[14:32:21]I (283) boot: Loaded app from partition at offset 0x7d0000
[14:32:21]I (283) boot: Disabling RNG early entropy source...
[14:32:22][I][logger:121]: Log initialized
[14:32:22][C][safe_mode:084]: Unsuccessful boot attempts: 6
[14:32:22][D][esp32.preferences:149]: Writing 1 items: 0 cached, 1 written, 0 failed
[14:32:22][I][app:073]: Running through setup()
[14:32:22][C][component:173]: Setup preferences took 0ms
[14:32:22][C][component:173]: Setup esp32_rmt_led_strip.light took 1ms
[14:32:22][D][light:090]: 'kitchen-radio LED' Setting:
[14:32:22][D][light:096]: Color mode: RGB
[14:32:22][C][component:173]: Setup light took 3ms
[14:32:22][C][component:173]: Setup psram took 0ms
[14:32:22][C][component:173]: Setup i2s_audio took 0ms
[14:32:22][C][component:173]: Setup mixer.speaker took 0ms
[14:32:22][C][component:173]: Setup mixer.speaker took 0ms
[14:32:22][C][component:173]: Setup mixer.speaker took 0ms
[14:32:22][C][component:173]: Setup mixer.speaker took 0ms
[14:32:22][C][component:173]: Setup resampler.speaker took 0ms
[14:32:22][C][component:173]: Setup resampler.speaker took 0ms
[14:32:22][C][component:173]: Setup resampler.speaker took 0ms
[14:32:22][C][component:173]: Setup restart.switch took 0ms
[14:32:22][C][component:173]: Setup resonate.text_sensor took 0ms
[14:32:22][C][component:173]: Setup resonate.text_sensor took 1ms
[14:32:22][C][component:173]: Setup resonate.text_sensor took 0ms
[14:32:22][C][component:173]: Setup resonate.text_sensor took 0ms
[14:32:22][C][component:173]: Setup resonate.text_sensor took 0ms
[14:32:22][C][component:173]: Setup i2s_audio.speaker took 0ms
[14:32:22][I][speaker_media_player:109]: Set up speaker media player
[14:32:22][C][component:173]: Setup speaker.media_player took 2ms
[14:32:22][C][wifi:345]: Starting
[14:32:22][C][wifi:345]: Local MAC: 9C:13:9E:AB:11:2C
[14:32:22][I][wifi:305]: Starting scan
[14:32:22][D][wifi:892]: Starting scan
[14:32:22][C][component:173]: Setup wifi took 67ms
[14:32:22][C][component:173]: Setup esphome.ota took 1ms
[14:32:22][C][component:173]: Setup safe_mode took 0ms
[14:32:22][W][component:298]: api set Warning flag: unspecified
[14:32:22][C][component:173]: Setup api took 1ms
[14:32:22][C][component:173]: Setup resonate took 0ms
[14:32:22][C][component:173]: Setup wifi_signal.sensor took 0ms
[14:32:22][C][component:173]: Setup mdns took 1ms
[14:32:22][D][light:090]: 'kitchen-radio LED' Setting:
[14:32:22][C][component:173]: Setup resonate.media_player took 2ms
[14:32:22][I][app:120]: setup() finished successfully!
I have changed the title to keep up with the changes to the protocol.
A major update has been committed for testing. I now have a reasonably successful attempt at a media player. It is still suffering the occasional crash. But I now have my 6 test players and 3 Chromecasts all happily syncing.
Have a look and feel free to add hints or tips for improvements, please remember a few things.
I am no expert, but will try to help if i can but can’t be held responsible for any issues.
This is in Alpha and not expected to work as you might want, there will be issues.
for those that don’t know, we been able to do multiroom playback in sync with coverart and text in HA for years using squeezelite firmware and LMS server, squeezelite devices work with Music Assistant too and this new functionality in Music Assistant works right away without changing anything.
squeezelite players in not only very stable, but also adds options to use as BT recievers, airplay and much more and been recommended as a “real” dedicated mediaplyer by esphome for just as long.