Here’s a write up on the issue I pulled together with the help of Claude reviewing the log file:
Summary
Grouped zone playback consistently fails to advance to the next track at transitions when 2 or more RAAT endpoints are grouped. All endpoints drop out simultaneously, Roon kills the stream, and playback halts — requiring a manual Next press to continue. Individual playback to any single endpoint is stable indefinitely. The issue is 100% reproducible and occurs within the first two or three track transitions of nearly every listening session.
This appears to be the same bug as ESU1GA (grouped zone playback drops at track transitions with 5 RAAT endpoints)
Roon Core
Hardware: Roon Nucleus (dedicated appliance)
Software: RoonServer v2.62 (build 1641) production
Network: Hardwired Gigabit Ethernet to unmanaged switch
Network
Ubiquiti Dream Router 7
Netgear GS116NA unmanaged switch (Nucleus and Couch - J2 endpoint both connected here)
Dedicated 5GHz/6GHz SSID on the UDR-7 for RoPieee endpoints only (separate from general household WiFi)
Grouped Zone Configuration
Zone name: Office - RME ADI 2 + Bedroom - J2 + Couch - J2
Three RAAT endpoints, all running RoPieee:
Endpoint|DAC|Connection|Clock Master Priority|Resync Delay
Couch - J2, Combo384 Amanero (Amanero Technologies), Wired Ethernet,1 (highest), 50ms
Bedroom - J2, Combo384 Amanero (Amanero Technologies), WiFi (5GHz/6GHz), Default, 50ms
Office - RME ADI 2, ADI-2 DAC (51100448) by RME, WiFi (5GHz/6GHz), Default, 50ms
Description of Issue
When playing music to the grouped zone, playback fails to advance automatically at track transitions. All three endpoints report dropouts simultaneously, Roon kills the stream with “Too many dropouts (>3s dropped out in the last 30s)”, and playback halts. The track does not advance. Manual intervention (pressing Next) is required each time.
Critical observations:
- Playing to any single endpoint in isolation is stable for hours without any dropout.
- The failure occurs with any two or more endpoints grouped — it is not specific to a three-endpoint group. A two-endpoint group fails as often as a three-endpoint group.
- All endpoints report dropouts at the exact same moment.
- The issue occurs exclusively at track transitions. Mid-track playback is stable.
- The buffer level across all endpoints is observed draining to ~12% in the seconds before each dropout storm.
What I Have Ruled Out:
WiFi: The wired Couch - J2 endpoint drops out simultaneously with the two wireless endpoints. A WiFi fault would not affect the wired endpoint. WiFi is not the cause.
Group size: Tested 2-endpoint and 3-endpoint grouped zones. Failure rate is identical. This is not a throughput issue that scales with the number of streams.
Clock synchronization: Set Couch - J2 (wired) as clock master priority 1, 50ms resync delay on all three endpoints. No improvement.
Background audio analysis: Restricted to 01:00–05:00 window. No improvement.
Zone configuration conflict: After each reboot, manually rebuilt the zone group to ensure no overlapping zone configurations. Confirmed clean zone state before each test.
Log Evidence:
All failures follow the same pattern. The following is from a test session on March 28, 2026, playing a 142-track Tidal playlist immediately after a clean reboot and manual zone rebuild.
Session timeline:
21:09:56 — Playback starts. Couch - J2 (Combo384 Amanero) correctly selected as clock master.
21:11:01 — First track transition: succeeds. OnToNext → \_Advance (Track) → Playing. Clean, no hesitation.
21:11:08 — Second track (“My House - SHAGGO”, 24/48 TIDAL FLAC) begins playing.
21:11:15 — All three endpoints report \[12% buf\] at position 4:31/4:37. Buffer critically low with 6 seconds remaining.
21:11:20 — Still \[12% buf\] at 4:36/4:37. One second remaining.
21:11:22 — Dropout storm begins simultaneously on all three endpoints.
21:11:25 — “Too many dropouts. Killing stream.” InvalidOperationException cascade on multiple worker threads.
21:11:48 — BufferingTrack == NextTrack during ClearQueuedMedia, setting \_stop_on_next_track_transition. Playback halts.
Buffer drain before dropout
03/28 21:11:15 Trace: \[Office - RME ADI 2\] \[Enhanced, 24/48 TIDAL FLAC => 32/48\] \[12% buf\] \[PLAYING @ 4:31/4:37\] My House - SHAGGO
03/28 21:11:15 Trace: \[Bedroom - J2\] \[Enhanced, 24/48 TIDAL FLAC => 32/48\] \[12% buf\] \[PLAYING @ 4:31/4:37\] My House - SHAGGO
03/28 21:11:15 Trace: \[Couch - J2\] \[Enhanced, 24/48 TIDAL FLAC => 32/48\] \[12% buf\] \[PLAYING @ 4:31/4:37\] My House - SHAGGO
03/28 21:11:20 Trace: \[Office - RME ADI 2\] \[Enhanced, 24/48 TIDAL FLAC => 32/48\] \[12% buf\] \[PLAYING @ 4:36/4:37\] My House - SHAGGO
03/28 21:11:20 Trace: \[Bedroom - J2\] \[Enhanced 3.8x, 24/48 TIDAL FLAC => 32/48\] \[12% buf\] \[PLAYING @ 4:36/4:37\] My House - SHAGGO
03/28 21:11:20 Trace: \[Couch - J2\] \[Enhanced, 24/48 TIDAL FLAC => 32/48\] \[12% buf\] \[PLAYING @ 4:36/4:37\] My House - SHAGGO
Dropout storm — all three endpoints fail simultaneously
03/28 21:11:22 Trace: \[Combo384 Amanero\] \[raatclient\] GOT \[13\] {“status”:“Dropout”,“samples”:18130}
03/28 21:11:22 Trace: \[ADI-2 DAC (51100448)\] \[raatclient\] GOT \[46\] {“status”:“Dropout”,“samples”:10723}
03/28 21:11:22 Trace: \[Combo384 Amanero\] \[raatclient\] GOT \[46\] {“samples”:16836,“status”:“Dropout”}
03/28 21:11:22 Trace: \[Combo384 Amanero\] \[raatclient\] GOT \[13\] {“status”:“Dropout”,“samples”:24000}
03/28 21:11:22 Trace: \[ADI-2 DAC (51100448)\] \[raatclient\] GOT \[46\] {“status”:“Dropout”,“samples”:24000}
03/28 21:11:22 Trace: \[Combo384 Amanero\] \[raatclient\] GOT \[46\] {“samples”:24000,“status”:“Dropout”}
03/28 21:11:25 Warn: \[Office - RME ADI 2 + Bedroom - J2 + Couch - J2\] \[zoneplayer/raat\] Too many dropouts (>3s dropped out in the last 30s). Killing stream
Stack trace (consistent across all occurrences)
03/28 21:11:25 Critical: threadpoolsynchronizationcontext: System.InvalidOperationException: Attempted to Read() without access in Thread\[Id=111, Name=Worker (14)\]
at Sooloos.Concurrency.SharedObject`2.Read[U](Func`2 getval)
at Sooloos.Broker.Transport.RaatZonePlayer.ev_too_many_dropouts(Endpoint endpoint)
at Sooloos.Broker.Transport.RaatZonePlayer.Endpoint.OnDropout(Int32 frames)
at Sooloos.ThreadPoolSynchronizationContext.<>c__DisplayClass14_0.<\_Dispatch>b__0(Object )
This exception fires on multiple concurrent worker threads (threads 100–152 observed) in rapid succession as each endpoint’s dropout handler fires simultaneously.
Race condition flag — track transition halted
03/28 21:11:48 Info: \[Office - RME ADI 2 + Bedroom - J2 + Couch - J2\] \[zoneplayer\] BufferingTrack == NextTrack during ClearQueuedMedia, setting \_stop_on_next_track_transition
This flag causes Roon to halt at the end of the current track rather than advancing. Playback does not resume until the user manually presses Next.
Steps to Reproduce:
Create a grouped zone with 2 or more RAAT endpoints (RoPieee on Raspberry Pi).
Play a Tidal album or playlist.
Wait for a track transition.
Dropout storm occurs at the transition; playback halts and does not advance automatically.
Reproduction is consistent within the first few transitions of every session.
Expected Behavior:
Grouped zone playback should transition between tracks automatically without dropping all streams or halting.
Workarounds Attempted (none effective):
Set wired endpoint as clock master priority 1 — no improvement.
Set 50ms resync delay on all three endpoints — no improvement.
Restricted background audio analysis to 01:00–05:00 window — no improvement.
Tested 2-endpoint grouped zones — fails at same rate as 3-endpoint groups.
Rebuilt zone group after each reboot to eliminate zone configuration conflicts — issue persists.