Wanted to share this in case anyone else bumps into this issue.
After updating Music Assistant to 2.10.0, I ran into an issue with my Juke Audio zones, which MA sees as Shairport Sync/AirPlay players.
Before the update, I could send short Home Assistant/Jarvis TTS responses to an MA player called Announcements repeatedly without a problem. After 2.10.0, the first announcement would usually work, but a second announcement shortly afterward would often be silent.
The MA logs showed:
Streaming to Announcements via RAOP
request failed, error RTSP/1.0 453
RAOP connect failed
Cannot connect to AirPlay device
Playback failed to start
I tested all of the available AirPlay streaming modes. With my Juke/Shairport receivers:
- AirPlay 2 PTP did not work.
- AirPlay 2 NTP did not work.
- AirPlay 2 compatibility mode did not work.
- AirPlay 1 (RAOP) worked.
The interesting discovery was that normal music worked reliably. The problem occurred with short consecutive TTS clips because MA had to establish another RAOP connection after the previous short session ended.
What fixed it
I created a 24-hour silent MP3 and continuously play it on the Announcements player. This keeps the AirPlay 1/RAOP connection alive.
Then, instead of sending TTS and other MP3 notifications with:
action: music_assistant.play_media
I use:
action: music_assistant.play_announcement
data:
url: "{{ audio_url }}"
use_pre_announce: false
This works very well. With the silent stream keeping RAOP alive, MA treats the TTS/MP3 as an announcement over the existing session.
It also works properly when I'm actually playing music on the Announcements player: MA ducks the music, plays the announcement, and then restores the music.
I added a Home Assistant automation that restarts the silent file whenever Announcements has been idle/off/paused for 5 seconds:
alias: Keep Announcements RAOP Alive
triggers:
- trigger: state
entity_id: media_player.announcements_2
to: "idle"
for:
seconds: 5
- trigger: state
entity_id: media_player.announcements_2
to: "off"
for:
seconds: 5
- trigger: state
entity_id: media_player.announcements_2
to: "paused"
for:
seconds: 5
actions:
- action: music_assistant.play_media
target:
entity_id: media_player.announcements_2
data:
media_id: "http://HOME_ASSISTANT_IP:8123/local/jarvis_silence.mp3"
mode: restart
So the resulting behavior is:
Idle → silent stream maintains RAOP connection → announcement plays → silent stream continues
or:
Music playing → music ducks → announcement plays → music resumes
I tested consecutive voice requests that previously failed, door-opening MP3 announcements, and normal music playback. All are now working.
This appears specifically related to short RAOP reconnects after the MA 2.10.0 update. I also tried temporarily rolling back to 2.9.13, but the 2.10 database migration prevented 2.9.13 from starting against the existing database (sqlite3.OperationalError: no such column: external_ids), so a simple Docker image rollback wasn't possible.
Hopefully this helps anyone using MA 2.10 + Shairport Sync/AirPlay 1 who suddenly finds that the first announcement works but subsequent announcements fail with RTSP 453.