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.