Sendspin not working (custom build)

Hi everyone;

I am trying to build some sendspin receivers, but I am having difficulties.

It seems that when I begin to play audio through the device, it reboots.
Unfortunately I do not see a reason in the logs, is there some extended debugging ?

here is one of the devices (this one is pcm5102)

INFO Starting log output from 172.16.0.168 using esphome API
INFO Successfully resolved sendspin-rx3 @ 172.16.0.168 in 0.000s
INFO Successfully connected to sendspin-rx3 @ 172.16.0.168 in 5.134s
INFO Successful handshake with sendspin-rx3 @ 172.16.0.168 in 0.057s
[09:14:59.080][I][app:194]: ESPHome version 2025.12.6 compiled on Jan 17 2026, 09:14:30
[09:14:59.081][C][logger:261]: Logger:
[09:14:59.081][C][logger:261]:   Max Level: DEBUG
[09:14:59.081][C][logger:261]:   Initial Level: DEBUG
[09:14:59.088][C][logger:267]:   Log Baud Rate: 115200
[09:14:59.088][C][logger:267]:   Hardware UART: USB_SERIAL_JTAG
[09:14:59.089][C][logger:274]:   Task Log Buffer Size: 768
[09:14:59.116][C][psram:016]: PSRAM:
[09:14:59.116][C][psram:019]:   Available: YES
[09:14:59.117][C][psram:021]:   Size: 2048 KB
[09:14:59.145][C][sendspin.text_sensor:016]: Sendspin 'Sendspin Track Title'
[09:14:59.153][C][sendspin.text_sensor:016]: Sendspin 'Sendspin Track Artist'
[09:14:59.161][C][sendspin.text_sensor:016]: Sendspin 'Sendspin Album'
[09:14:59.185][C][i2s_audio.speaker:074]: Speaker:
[09:14:59.185][C][i2s_audio.speaker:074]:   Pin: 1
[09:14:59.185][C][i2s_audio.speaker:074]:   Buffer duration: 100
[09:14:59.185][C][i2s_audio.speaker:080]:   Timeout: 500 ms
[09:14:59.185][C][i2s_audio.speaker:088]:   Communication format: std
[09:14:59.204][C][captive_portal:118]: Captive Portal:
[09:14:59.223][C][wifi:1132]: WiFi:
[09:14:59.223][C][wifi:1132]:   Connected: YES
[09:14:59.224][C][wifi:897]:   Local MAC: 9C:13:9E:F4:02:54
[09:14:59.230][C][wifi:904]:   IP Address: 172.16.0.168
[09:14:59.232][C][wifi:908]:   SSID: [redacted]
[09:14:59.232][C][wifi:908]:   BSSID: [redacted]
[09:14:59.232][C][wifi:908]:   Hostname: 'sendspin-rx3'
[09:14:59.232][C][wifi:908]:   Signal strength: -60 dB ▂▄▆█
[09:14:59.232][C][wifi:908]:   Channel: 1
[09:14:59.232][C][wifi:908]:   Subnet: 255.255.255.0
[09:14:59.232][C][wifi:908]:   Gateway: 172.16.0.1
[09:14:59.232][C][wifi:908]:   DNS1: 172.16.0.1
[09:14:59.232][C][wifi:908]:   DNS2: 0.0.0.0
[09:14:59.240][C][esphome.ota:092]: Over-The-Air updates:
[09:14:59.240][C][esphome.ota:092]:   Address: sendspin-rx3.local:3232
[09:14:59.240][C][esphome.ota:092]:   Version: 2
[09:14:59.242][C][esphome.ota:099]:   Password configured
[09:14:59.256][C][safe_mode:018]: Safe Mode:
[09:14:59.256][C][safe_mode:018]:   Successful after: 60s
[09:14:59.256][C][safe_mode:018]:   Invoke after: 10 attempts
[09:14:59.256][C][safe_mode:018]:   Duration: 300s
[09:14:59.263][C][web_server.ota:241]: Web Server OTA
[09:14:59.277][C][api:211]: Server:
[09:14:59.277][C][api:211]:   Address: sendspin-rx3.local:6053
[09:14:59.277][C][api:211]:   Listen backlog: 4
[09:14:59.277][C][api:211]:   Max connections: 8
[09:14:59.283][C][api:218]:   Noise encryption: YES
[09:14:59.304][C][mdns:194]: mDNS:
[09:14:59.304][C][mdns:194]:   Hostname: sendspin-rx3
[09:15:16.837][I][sendspin.websocket:132][httpd]: client opened a connection
[09:15:16.842][I][sendspin.hub:227][httpd]: Handshake done, a new connection was opened
[09:15:17.100][D][sendspin.hub:654]: Group update - state: stopped, id: 029e0054-6cf9-4bff-88ab-fda4d2ae2ba1, name: 
[09:15:17.109][D][sendspin.hub:563][httpd]: Connected to server Music Assistant with id 197f3086a63a47a5a0a25606609acad8
[09:15:27.304][D][text_sensor:097]: 'Sendspin Track Title': Sending state 'Ministry Of Sound_Kandi Lounge_2010_05_01_qrip'
[09:15:27.308][D][text_sensor:097]: 'Sendspin Track Artist': Sending state 'Kandi Lounge'
[09:15:27.311][D][text_sensor:097]: 'Sendspin Album': Sending state 'Ministry Of Sound'
[09:15:27.335][D][sendspin.hub:654]: Group update - state: playing, id: 029e0054-6cf9-4bff-88ab-fda4d2ae2ba1, name: 
[09:15:27.344][D][sendspin.hub:417][httpd]: Stream Started
[09:15:27.344][I][sendspin.hub:420][httpd]: Requesting high performance networking for playback
[09:15:27.346][D][media_player:096][httpd]: 'Sendspin Player' - Setting
[09:15:27.351][D][media_player:103][httpd]:   Media URL: sendspin://test
[09:15:27.361][D][media_player:109][httpd]:  Announcement: no
[09:15:27.369][D][sendspin_media_source:257]: Started generate task for pipeline 0
[09:15:27.384][D][sendspin_media_source:266]: Pipeline 0 starting
[09:15:27.384][D][sendspin_media_source:271]: Pipeline 0 running
[09:15:27.384][I][sendspin_media_source:725][Sendspin_0]: Processed new codec header
[09:15:27.388][D][speaker_source_media_player:303]: State changed to PLAYING
[09:15:28.149][D][i2s_audio.speaker:102]: Starting
[09:15:28.156][D][i2s_audio.speaker:106]: Started
[09:15:28.157][D][ring_buffer:034][speaker_task]: Created ring buffer with size 19200
INFO Processing unexpected disconnect from ESPHome API for sendspin-rx3 @ 172.16.0.168
WARNING Disconnected from API
INFO Successfully resolved sendspin-rx3 @ 172.16.0.168 in 0.000s
INFO Successfully connected to sendspin-rx3 @ 172.16.0.168 in 0.008s
INFO Successful handshake with sendspin-rx3 @ 172.16.0.168 in 0.055s


I have tried a number of power supplies, so it doesnt seem to be power related.
I have logger set to debug level.
here is the yaml for this device:

#########################
# External components (Sendspin + audio pipeline pieces)
#########################
external_components:
  # Audio pipeline helpers used by speaker_source / media_source stacks
  - source: github://pr#12253
    components: [mixer]
    refresh: 0s
  - source: github://pr#12254
    components: [resampler]
    refresh: 0s
  - source: github://pr#12256
    components: [audio]
    refresh: 0s
  - source: github://pr#12258
    components: [media_player]
    refresh: 0s

  # Sendspin itself (+ mdns for discovery)
  - source: github://pr#12284
    components: [mdns, sendspin]
    refresh: 0s

  # Media source + speaker_source media_player
  - source: github://pr#12429
    components: [file, http_request, media_source, speaker_source]
    refresh: 0s


#########################
# I²S bus (PCM5102 wiring)
#########################
i2s_audio:
  id: i2s_out
  i2s_bclk_pin: GPIO2   # BCK
  i2s_lrclk_pin: GPIO45  # LCK/WS


#########################
# Speaker (stereo) -> PCM5102
#########################
speaker:
  - platform: i2s_audio
    id: pcm5102_speaker
    i2s_audio_id: i2s_out
    dac_type: external
    i2s_dout_pin: GPIO1  # DIN on PCM5102
    channel: stereo
    sample_rate: 48000
    bits_per_sample: 32bit
    buffer_duration: 100ms


#########################
# Sendspin hub + audio source
#########################
sendspin:
  id: sendspin_hub
  task_stack_in_psram: true
  # Optional tuning (often shown in examples)
  # kalman_process_error: 0.01

media_source:
  - platform: sendspin
    id: sendspin_source


#########################
# Media players
# 1) sendspin = group/transport control entity
# 2) speaker_source = the *actual* player that outputs audio to your I²S speaker
#########################
media_player:
  # Optional: control a Sendspin group (play/pause/next/prev, etc.)
  #- platform: sendspin
  #  id: sendspin_group
  #  name: Sendspin Group

  # Required: actual audio playback endpoint
  - platform: speaker_source
    id: sendspin_player
    name: Sendspin Player
    media_speaker: pcm5102_speaker
    sources:
      - sendspin_source
    # Optional guardrails:
    # volume_min: 0.0
    # volume_max: 1.0


#########################
# Metadata sensors (title/artist/album) from Sendspin
#########################
text_sensor:
  - platform: sendspin
    id: sendspin_title
    name: "Sendspin Track Title"
    type: title

  - platform: sendspin
    id: sendspin_artist
    name: "Sendspin Track Artist"
    type: artist

  - platform: sendspin
    id: sendspin_album
    name: "Sendspin Album"
    type: album

Can someone else try and see if they experience the same issue?

Edit:

esphome:
  name: sendspin-rx3
  friendly_name: Sendspin RX3

esp32:
  board: esp32-s3-devkitc-1
  framework:
    type: esp-idf

psram:
  mode: quad
  speed: 80MHz

# Enable logging
logger:
  level: DEBUG

Edit2:

I have tried on a second esp32-s3 unit, this time with a max98357a i2s amplifier module
and the same result.

[09:20:21.868][I][sendspin.websocket:132][httpd]: client opened a connection
[09:20:21.872][I][sendspin.hub:227][httpd]: Handshake done, a new connection was opened
[09:20:22.141][D][sendspin.hub:654]: Group update - state: stopped, id: fee5d06c-a298-4685-8cba-1ed69a3f649c, name: 
[09:20:22.148][D][sendspin.hub:563][httpd]: Connected to server Music Assistant with id 197f3086a63a47a5a0a25606609acad8
[09:20:39.200][D][text_sensor:097]: 'Sendspin Track Title': Sending state 'Ministry Of Sound_Kandi Lounge_2010_05_01_qrip'
[09:20:39.202][D][text_sensor:097]: 'Sendspin Track Artist': Sending state 'Kandi Lounge'
[09:20:39.206][D][text_sensor:097]: 'Sendspin Album': Sending state 'Ministry Of Sound'
[09:20:39.241][D][sendspin.hub:654]: Group update - state: playing, id: fee5d06c-a298-4685-8cba-1ed69a3f649c, name: 
[09:20:39.245][D][sendspin.media_player:050]: State changed to PLAYING
[09:20:39.252][D][sendspin.hub:417][httpd]: Stream Started
[09:20:39.252][I][sendspin.hub:420][httpd]: Requesting high performance networking for playback
[09:20:39.255][D][media_player:096][httpd]: 'Sendspin Player' - Setting
[09:20:39.259][D][media_player:103][httpd]:   Media URL: sendspin://test
[09:20:39.264][D][media_player:109][httpd]:  Announcement: no
[09:20:39.279][D][sendspin_media_source:257]: Started generate task for pipeline 0
[09:20:39.289][D][sendspin_media_source:266]: Pipeline 0 starting
[09:20:39.291][D][sendspin_media_source:271]: Pipeline 0 running
[09:20:39.297][I][sendspin_media_source:725][Sendspin_0]: Processed new codec header
[09:20:39.299][D][speaker_source_media_player:303]: State changed to PLAYING
[09:20:40.156][D][i2s_audio.speaker:102]: Starting
[09:20:40.168][D][i2s_audio.speaker:106]: Started
[09:20:40.170][D][ring_buffer:034][speaker_task]: Created ring buffer with size 19200

followed by the esp rebooting.

Edit again: I have tried an entirely different type of esp32-s3 dev board purchased over a year ago and the same thing. so I dont think its a bad batch

Is it overflowing?

I have no idea? How can I check?

If you intend to test something that is still in alpha you would be better off following the discord discussions where the developers are sorting these issues out. The rebooting issues have been worked on over the last 2 weeks and are now pretty much sorted, if you compile with the dev version of Esphome as recommended it should be OK now.

As of the last esphome stable release it may also be fixed, I have not tried it yet so can’t be sure.

2 Likes

Where are they talking about it? Which channel?

Music assistant, channel and a bit on the esphome channel.

Sendspin is a music assistant thing not a home assistant thing.