ReSpeaker XMOS XVF3800 ESPHome integration

Hey guys, I have just started trying to setup my ReSpeaker for home assistant. I have flashed the 1.0.7 firmware without issue, now I am attempting to load the ESPHome yaml. I assume I am doing something incorrect as the provided code is throwing an error due to the github links for the wake words.
(Noting I am using 2026.6.4 for ESPHome and the provided updated code from this thread for 2026.6.0)

Error:

INFO ESPHome 2026.6.4
INFO Reading configuration /config/esphome/respeaker-xvf-satellite-example.yaml…
INFO Updating https://github.com/formatBCE/esphome@respeaker_microphone
INFO Updating https://github.com/formatBCE/Respeaker-XVF3800-ESPHome-integration@main
Failed config
micro_wake_word: [source /config/esphome/respeaker-xvf-satellite-example.yaml:1433]
id: mww
microphone:
microphone: i2s_mics
channels: 1
stop_after_detection: False
models:
-
Not a valid model name, local path, http(s) url, or github shorthand.
model: |-
https://github.com/kahrendt/microWakeWord/releases/download/okay_nabu_20241226.3/okay_nabu.json
id: okay_nabu
- model: |-
https://raw.githubusercontent.com/formatBCE/Respeaker-Lite-ESPHome-integration/refs/heads/main/microwakeword/models/v2/kenobi.json
id: kenobi

The links don’t seem to get me anywhere either if I post them in a browser, not sure if that is part of the problem or if they arent accessible this way.

It will compile if I remove the git links under ‘models:’

Updated code to make it validate/load:

 models:
    - model: okay_nabu
      # probability_cutoff: 0.8
      id: okay_nabu
    - model: okay_nabu
      id: kenobi
    - model: hey_jarvis
      id: hey_jarvis
    - model: hey_mycroft
      id: hey_mycroft
    - model: okay_nabu
      id: stop
      internal: true

This allows me to load and connect the speaker, I can see the device in ESP Home but I am not getting any audio output and it appears to crash and restart. I have captured some logs of a few basic requests.

INFO ESPHome 2026.6.4

INFO Loaded validated config cache for respeaker-xvf-satellite-example.yaml, skipping validation.

INFO Starting log output from respeaker-xvf3800-assistant.local using esphome API

INFO Successfully resolved respeaker-xvf3800-assistant.local in 3.693s

INFO Successfully connected to respeaker-xvf3800-assistant @ fd61:6735:43b:1:e272:a1ff:fef9:6e18 in 0.008s

INFO Successful handshake with respeaker-xvf3800-assistant @ fd61:6735:43b:1:e272:a1ff:fef9:6e18 in 0.022s

[10:07:13.614][E][esp32.crash:332]: *** CRASH DETECTED ON PREVIOUS BOOT ***

[10:07:13.614][E][esp32.crash:335]: Reason: Fault - LoadProhibited

[10:07:13.615][E][esp32.crash:339]: Crashed core: 1

[10:07:13.615][E][esp32.crash:340]: PC: 0x4207EC53 (fault location)

WARNING Decoded 0x4207ec53: select_check_waiters at /COMPONENT_LWIP_DIR/lwip/src/api/sockets.c:2660

(inlined by) event_callback at /COMPONENT_LWIP_DIR/lwip/src/api/sockets.c:2617

[10:07:15.152][E][esp32.crash:305]: BT0: 0x4207EC50 (backtrace)

WARNING Decoded 0x4207ec50: event_callback at /COMPONENT_LWIP_DIR/lwip/src/api/sockets.c:2621

[10:07:16.732][E][esp32.crash:305]: BT1: 0x42091D65 (backtrace)

WARNING Decoded 0x42091d65: lwip_netconn_do_connected at /COMPONENT_LWIP_DIR/lwip/src/api/api_msg.c:1408 (discriminator 1)

[10:07:18.276][E][esp32.crash:305]: BT2: 0x42087FBD (backtrace)

WARNING Decoded 0x42087fbd: tcp_process at /COMPONENT_LWIP_DIR/lwip/src/core/tcp_in.c:926 (discriminator 1)

(inlined by) tcp_input at /COMPONENT_LWIP_DIR/lwip/src/core/tcp_in.c:449 (discriminator 1)

[10:07:19.813][E][esp32.crash:305]: BT3: 0x4208CC2A (backtrace)

WARNING Decoded 0x4208cc2a: ip4_input at /COMPONENT_LWIP_DIR/lwip/src/core/ipv4/ip4.c:786

[10:07:21.372][E][esp32.crash:305]: BT4: 0x42090AAE (backtrace)

WARNING Decoded 0x42090aae: ethernet_input at /COMPONENT_LWIP_DIR/lwip/src/netif/ethernet.c:186

[10:07:22.921][E][esp32.crash:305]: BT5: 0x42082252 (backtrace)

WARNING Decoded 0x42082252: tcpip_thread_handle_msg at /COMPONENT_LWIP_DIR/lwip/src/api/tcpip.c:179

(inlined by) tcpip_thread at /COMPONENT_LWIP_DIR/lwip/src/api/tcpip.c:148

[10:07:24.569][E][esp32.crash:363]: Use: addr2line -pfiaC -e firmware.elf 0x4207EC53 0x4207EC50 0x42091D65 0x42087FBD 0x4208CC2A 0x42090AAE 0x42082252

[10:07:24.569][I][app:151]: ESPHome version 2026.6.4 compiled on 2026-07-08 16:06:03 +0800

[10:07:24.570][I][app:153]: Project formatbce.Respeaker XVF3800 Satellite version 2026.6.0

[10:07:24.570][I][app:158]: ESP32 Chip: ESP32-S3 rev0.2, 2 core(s)

[10:07:28.541][S][media_player]: ‘Media Player’ >> PLAYING

[10:07:28.541][S][media_player]: Volume: 100%

[10:07:29.247][I][esp-idf:000][md_decoder]: D (51606552) micro_decoder.decoder_source: Decode finished

[10:07:29.371][S][media_player]: ‘Media Player’ >> IDLE

[10:07:29.371][S][media_player]: Volume: 100%

[10:07:29.909][I][respeaker_xvf3800:528]: Version request successful: 1.0.7

[10:07:31.603][I][respeaker_xvf3800:483]: Beam lock released

[10:07:31.739][I][respeaker_xvf3800:483]: Beam lock released

[10:07:32.794][I][esp-idf:000][md_reader]: D (51610096) micro_decoder.http_client: Connected: status=200 content-type=‘audio/flac’

[10:07:32.827][I][esp-idf:000][md_reader]: I (51610096) micro_decoder.audio_reader: Streaming http://192.168.1.65:8123/api/tts_proxy/VJ26EhfjvH5pwyjlTtLmag.flac (FLAC)

[10:07:32.852][I][esp-idf:000][md_reader]: D (51610160) micro_decoder.audio_reader: HTTP read complete

[10:07:32.856][I][esp-idf:000][md_reader]: D (51610161) micro_decoder.decoder_source: Reader finished

[10:07:32.928][S][media_player]: ‘Media Player’ >> PLAYING

[10:07:32.928][S][media_player]: Volume: 100%

[10:07:35.275][I][esp-idf:000][md_decoder]: D (51612582) micro_decoder.decoder_source: Decode finished

[10:07:35.401][S][media_player]: ‘Media Player’ >> IDLE

[10:07:35.401][S][media_player]: Volume: 100%

[10:07:59.756][S][media_player]: ‘Media Player’ >> PLAYING

[10:07:59.756][S][media_player]: Volume: 100%

[10:08:00.465][I][esp-idf:000][md_decoder]: D (51637772) micro_decoder.decoder_source: Decode finished

[10:08:00.576][S][media_player]: ‘Media Player’ >> IDLE

[10:08:00.576][S][media_player]: Volume: 100%

[10:08:01.026][S][text_sensor]: ‘Current device time’ >> ‘10:08’

[10:08:02.832][I][respeaker_xvf3800:483]: Beam lock released

[10:08:03.083][I][respeaker_xvf3800:483]: Beam lock released

[10:08:03.936][I][esp-idf:000][md_reader]: D (51641243) micro_decoder.http_client: Connected: status=200 content-type=‘audio/flac’

[10:08:03.939][I][esp-idf:000][md_reader]: I (51641244) micro_decoder.audio_reader: Streaming http://192.168.1.65:8123/api/tts_proxy/feXp40rNm8i2cXM3iUy_Dw.flac (FLAC)

[10:08:03.977][I][esp-idf:000][md_reader]: D (51641284) micro_decoder.audio_reader: HTTP read complete

[10:08:03.981][I][esp-idf:000][md_reader]: D (51641285) micro_decoder.decoder_source: Reader finished

[10:08:04.075][S][media_player]: ‘Media Player’ >> PLAYING

[10:08:04.075][S][media_player]: Volume: 100%

[10:08:07.048][I][esp-idf:000][md_decoder]: D (51644352) micro_decoder.decoder_source: Decode finished

[10:08:07.160][S][media_player]: ‘Media Player’ >> IDLE

[10:08:07.160][S][media_player]: Volume: 100%

[10:08:16.795][S][media_player]: ‘Media Player’ >> PLAYING

[10:08:16.795][S][media_player]: Volume: 100%

[10:08:17.476][I][esp-idf:000][md_decoder]: D (51654782) micro_decoder.decoder_source: Decode finished

[10:08:17.581][S][media_player]: ‘Media Player’ >> IDLE

[10:08:17.581][S][media_player]: Volume: 100%

[10:08:20.225][I][respeaker_xvf3800:483]: Beam lock released

[10:08:20.482][I][respeaker_xvf3800:483]: Beam lock released

[10:08:20.587][I][esp-idf:000][md_reader]: D (51657886) micro_decoder.http_client: Connected: status=200 content-type=‘audio/flac’

[10:08:20.587][I][esp-idf:000][md_reader]: I (51657886) micro_decoder.audio_reader: Streaming http://192.168.1.65:8123/api/tts_proxy/SzW11o3xTcm3PstaZaUO2Q.flac (FLAC)

[10:08:20.828][S][media_player]: ‘Media Player’ >> PLAYING

[10:08:20.828][S][media_player]: Volume: 100%

[10:08:20.920][I][esp-idf:000][md_reader]: D (51658221) micro_decoder.audio_reader: HTTP read complete

[10:08:20.928][I][esp-idf:000][md_reader]: D (51658221) micro_decoder.decoder_source: Reader finished

[10:08:23.707][I][esp-idf:000][md_decoder]: D (51661002) micro_decoder.decoder_source: Decode finished

[10:08:23.824][S][media_player]: ‘Media Player’ >> IDLE

[10:08:23.824][S][media_player]: Volume: 100%

[10:08:47.438][S][media_player]: ‘Media Player’ >> PLAYING

[10:08:47.438][S][media_player]: Volume: 100%

[10:08:48.121][I][esp-idf:000][md_decoder]: D (51685412) micro_decoder.decoder_source: Decode finished

[10:08:48.233][S][media_player]: ‘Media Player’ >> IDLE

[10:08:48.233][S][media_player]: Volume: 100%

[10:08:51.182][I][respeaker_xvf3800:483]: Beam lock released

[10:08:51.307][I][respeaker_xvf3800:483]: Beam lock released

[10:08:52.239][I][esp-idf:000][md_reader]: D (51689545) micro_decoder.http_client: Connected: status=200 content-type=‘audio/flac’

[10:08:52.244][I][esp-idf:000][md_reader]: I (51689546) micro_decoder.audio_reader: Streaming http://192.168.1.65:8123/api/tts_proxy/8Kv-HHITZbKXCyHsxkxp9A.flac (FLAC)

[10:08:52.299][I][esp-idf:000][md_reader]: D (51689607) micro_decoder.audio_reader: HTTP read complete

[10:08:52.302][I][esp-idf:000][md_reader]: D (51689608) micro_decoder.decoder_source: Reader finished

[10:08:52.362][S][media_player]: ‘Media Player’ >> PLAYING

[10:08:52.362][S][media_player]: Volume: 100%

[10:08:54.595][I][esp-idf:000][md_decoder]: D (51691902) micro_decoder.decoder_source: Decode finished

[10:08:54.702][S][media_player]: ‘Media Player’ >> IDLE

[10:08:54.702][S][media_player]: Volume: 100%

[10:08:59.547][S][media_player]: ‘Media Player’ >> PLAYING

[10:08:59.547][S][media_player]: Volume: 100%

[10:09:00.234][I][esp-idf:000][md_decoder]: D (51697532) micro_decoder.decoder_source: Decode finished

[10:09:00.346][S][media_player]: ‘Media Player’ >> IDLE

[10:09:00.346][S][media_player]: Volume: 100%

[10:09:01.051][S][text_sensor]: ‘Current device time’ >> ‘10:09’

[10:09:03.165][I][respeaker_xvf3800:483]: Beam lock released

[10:09:03.295][E][voice_assistant:936]: Error: stt-no-text-recognized - No text recognized

[10:09:03.302][I][respeaker_xvf3800:483]: Beam lock released

[10:09:29.909][I][respeaker_xvf3800:528]: Version request successful: 1.0.7

INFO ESPHome 2026.6.4

INFO ESPHome 2026.6.4

INFO Loaded validated config cache for respeaker-xvf-satellite-example.yaml, skipping validation.

INFO Starting log output from respeaker-xvf3800-assistant.local using esphome API

INFO Successfully resolved respeaker-xvf3800-assistant.local in 2.910s

INFO Successfully connected to respeaker-xvf3800-assistant @ fd61:6735:43b:1:e272:a1ff:fef9:6e18 in 0.008s

INFO Successful handshake with respeaker-xvf3800-assistant @ fd61:6735:43b:1:e272:a1ff:fef9:6e18 in 0.019s

[10:09:45.610][E][esp32.crash:332]: *** CRASH DETECTED ON PREVIOUS BOOT ***

[10:09:45.617][E][esp32.crash:335]: Reason: Fault - LoadProhibited

[10:09:45.617][E][esp32.crash:339]: Crashed core: 1

[10:09:45.618][E][esp32.crash:340]: PC: 0x4207EC53 (fault location)

WARNING Decoded 0x4207ec53: select_check_waiters at /COMPONENT_LWIP_DIR/lwip/src/api/sockets.c:2660

(inlined by) event_callback at /COMPONENT_LWIP_DIR/lwip/src/api/sockets.c:2617

[10:09:47.154][E][esp32.crash:305]: BT0: 0x4207EC50 (backtrace)

WARNING Decoded 0x4207ec50: event_callback at /COMPONENT_LWIP_DIR/lwip/src/api/sockets.c:2621

[10:09:48.682][E][esp32.crash:305]: BT1: 0x42091D65 (backtrace)

WARNING Decoded 0x42091d65: lwip_netconn_do_connected at /COMPONENT_LWIP_DIR/lwip/src/api/api_msg.c:1408 (discriminator 1)

[10:09:50.230][E][esp32.crash:305]: BT2: 0x42087FBD (backtrace)

WARNING Decoded 0x42087fbd: tcp_process at /COMPONENT_LWIP_DIR/lwip/src/core/tcp_in.c:926 (discriminator 1)

(inlined by) tcp_input at /COMPONENT_LWIP_DIR/lwip/src/core/tcp_in.c:449 (discriminator 1)

[10:09:51.778][E][esp32.crash:305]: BT3: 0x4208CC2A (backtrace)

WARNING Decoded 0x4208cc2a: ip4_input at /COMPONENT_LWIP_DIR/lwip/src/core/ipv4/ip4.c:786

[10:09:53.348][E][esp32.crash:305]: BT4: 0x42090AAE (backtrace)

WARNING Decoded 0x42090aae: ethernet_input at /COMPONENT_LWIP_DIR/lwip/src/netif/ethernet.c:186

[10:09:54.898][E][esp32.crash:305]: BT5: 0x42082252 (backtrace)

WARNING Decoded 0x42082252: tcpip_thread_handle_msg at /COMPONENT_LWIP_DIR/lwip/src/api/tcpip.c:179

(inlined by) tcpip_thread at /COMPONENT_LWIP_DIR/lwip/src/api/tcpip.c:148

[10:09:56.424][E][esp32.crash:363]: Use: addr2line -pfiaC -e firmware.elf 0x4207EC53 0x4207EC50 0x42091D65 0x42087FBD 0x4208CC2A 0x42090AAE 0x42082252

[10:09:56.424][I][app:151]: ESPHome version 2026.6.4 compiled on 2026-07-08 16:06:03 +0800

[10:09:56.425][I][app:153]: Project formatbce.Respeaker XVF3800 Satellite version 2026.6.0

[10:09:56.425][I][app:158]: ESP32 Chip: ESP32-S3 rev0.2, 2 core(s)

So the wake words appear to work, and it will listen and I can see in the activity field it responding to time requests but the no sound output and crashing have me confused.
Hopefully it is something simple, thanks in advance for any assistance.

Yes, sorry, wake words moved. I will update config shortly.

P.S. updated

I’m trying to build with ESPhome 2.6.5 and I get a validation error:
Invalid configuration for the specified microphone. The micro_wake_word component requires a 16000 sample rate.

I just rebuilt from scratch on 2026.6.5, No errors. Check your config.

I found my mistake and moved past it. Thanks. I do have another problem:
I’m trying to use the modes described here: “https://deepwiki.com/respeaker/reSpeaker_XVF3800_USB_4MIC_ARRAY/3.2-led-control-commands”, i.e.
Mode Descriptions
Value Name Behavior Active Parameters
0 Off All LEDs disabled None
1 Breath Pulsing animation with configured color LED_COLOR, LED_BRIGHTNESS, LED_SPEED
2 Rainbow Animated spectrum cycling LED_BRIGHTNESS, LED_SPEED
3 Single Color Static solid color LED_COLOR
4 DoA Direction of arrival indication LED_DOA_COLOR (base and indicator)

I don’t know if I can, and have not been able to figure out how (if I can).
Any guidance would be appreciated!
Thanks, Willem Riede.

My XVF3800 plays sounds extremely quietly compared to the Respeaker Lite. Is this normal, or is it just my unit?
I’ve tested it on various speakers, but it’s either quiet or even quieter.

Through JST connector?

I use jack, so I don’t know…

You can’t use that, if you use my config.

Yes, through JST connector.