Intermittent Dropouts in Live Radio Playback on Roon ROCK (ref#U2UGEW)

Hi! What’s not quite right with Roon?

· None of the above quite fits

None of the above quite fits

· None of these quite match

Tell us what's going on

· I am running Roon ROCK on an Intel NUC 11th Gen i7 32GB version 2.64 build 1646 but I have had this issue on and off for the last. 2 years. I have a ubiquiti based netwrok and the ROCK server is connected to the network by ethernet. I have a problem when using Roon Live Radio where occasionally Roon Live Radio just stops playing. Somtimes this can be every few minutes. It is most obvious on my KitchenPi end point which is a ropieee end point but it is not exclusive to this end point - it just shows here as this end point is primarliy used like an internet radio albeit using Roon as the source. It looks as though Roon is internally treating the live radio stream as if it has "ended." Notice at each dropout: [STOPPED @ 0:00] — the seek position resets to zero and OnPlayFeedback Stopped fires (not Paused). As I understand it this is the same sequence Roon uses when it reaches the end of a track or queue item. For a live radio stream there is no "end," so something in Roon's stream handling logic is incorrectly concluding the stream is finished. I will attach a relevant example section from the logs:
04/09 06:38:18 [Local 04/09 07:38:18] Debug: [easyhttp] [94428] GET to https://as-hls-uk-live.akamaized.net/pool_74208725/live/uk/bbc_radio_two/bbc_radio_two.isml/bbc_radio_two-audio%3d320000.norewind.m3u8 returned after 72 ms, status code: 200, request body size: 0 B
04/09 06:38:18 [Local 04/09 07:38:18] Trace: [IQaudIODAC] [raatclient] GOT [11] {"time":71063590280759,"status":"Success"}
04/09 06:38:18 [Local 04/09 07:38:18] Debug: [easyhttp] [94431] GET to https://as-hls-uk-live.akamaized.net/pool_74208725/live/uk/bbc_radio_two/bbc_radio_two.isml/bbc_radio_two-audio=320000-277455736.ts returned after 85 ms, status code: 200, request body size: 0 B
04/09 06:38:18 [Local 04/09 07:38:18] Debug: [easyhttp] [94429] GET to https://api.roonlabs.net/internetradio/2/api/stations/7c828d71-6de4-4a86-962f-6f5c0b5e2072/metadata?format=msgpack&wait=False×tamp=-1& returned after 172 ms, status code: 200, request body size: 0 B
04/09 06:38:18 [Local 04/09 07:38:18] Debug: [easyhttp] [94430] POST to https://api.roonlabs.net/internetradio/2/api/reporting/internetradioplayback/events?format=msgpack& returned after 212 ms, status code: 200, request body size: 172 B
04/09 06:38:18 [Local 04/09 07:38:18] Debug: [query] Sooloos.Broker.Radio.Channel:1 dirty items, rebuild threshold: 2000, rebuilding? False
04/09 06:38:18 [Local 04/09 07:38:18] Debug: [query] Sooloos.Broker.Radio.Channel:1 dirty items, rebuild threshold: 2000, rebuilding? False
04/09 06:38:18 [Local 04/09 07:38:18] Debug: [query] Sooloos.Broker.Radio.Channel:1 dirty items, rebuild threshold: 2000, rebuilding? False
04/09 06:38:18 [Local 04/09 07:38:18] Debug: [query] Sooloos.Broker.Radio.Channel:1 dirty items, rebuild threshold: 2000, rebuilding? False
04/09 06:38:18 [Local 04/09 07:38:18] Debug: [query] Sooloos.Broker.Radio.Channel:1 dirty items, rebuild threshold: 2000, rebuilding? False
04/09 06:38:18 [Local 04/09 07:38:18] Debug: [query] Sooloos.Broker.Radio.Channel:1 dirty items, rebuild threshold: 2000, rebuilding? False
04/09 06:38:18 [Local 04/09 07:38:18] Debug: [query] Sooloos.Broker.Radio.Channel:1 dirty items, rebuild threshold: 2000, rebuilding? False
04/09 06:38:18 [Local 04/09 07:38:18] Debug: [query] Sooloos.Broker.Radio.Channel:1 dirty items, rebuild threshold: 2000, rebuilding? False
04/09 06:38:18 [Local 04/09 07:38:18] Info:
--[ SignalPath ]---------------------------------------------
SignalPath Quality = LowQuality
Elements:
Source Format=Aac 48000/24/2 Quality=LowQuality
Raat Device=IQaudIODAC
Output OutputType=Local_Alsa Quality=Lossless SubType= Model=IQaudIODAC
------------------------------------------------------------
04/09 06:38:19 [Local 04/09 07:38:19] Debug: [easyhttp] [94432] GET to https://as-hls-uk-live.akamaized.net/pool_74208725/live/uk/bbc_radio_two/bbc_radio_two.isml/bbc_radio_two-audio%3d320000.norewind.m3u8 returned after 86 ms, status code: 200, request body size: 0 B
04/09 06:38:19 [Local 04/09 07:38:19] Debug: [easyhttp] [94433] GET to https://as-hls-uk-live.akamaized.net/pool_74208725/live/uk/bbc_radio_two/bbc_radio_two.isml/bbc_radio_two-audio=320000-277455737.ts returned after 90 ms, status code: 200, request body size: 0 B
04/09 06:38:23 [Local 04/09 07:38:23] Debug: [easyhttp] [94434] GET to https://api.roonlabs.net/internetradio/2/api/stations/7c828d71-6de4-4a86-962f-6f5c0b5e2072/metadata?format=msgpack&wait=True×tamp=-1& returned after 187 ms, status code: 200, request body size: 0 B
04/09 06:38:23 [Local 04/09 07:38:23] Trace: [KitchenPi] [LowQuality, 24/48 AAC => 24/48] [100% buf] [PLAYING @ 0:05] The Radio 2 Breakfast Show - Gary Davies with Michaela Strachan!
04/09 06:38:24 [Local 04/09 07:38:24] Info: [stats] 10458mb Virtual, 1982mb Physical, 1158mb Managed, 824mb estimated Unmanaged, 424 Handles, 92 Threads, 0.65% of runtime in GC pauses, 22ms last GC pause duration
04/09 06:38:25 [Local 04/09 07:38:25] Debug: [easyhttp] [94435] GET to https://as-hls-uk-live.akamaized.net/pool_74208725/live/uk/bbc_radio_two/bbc_radio_two.isml/bbc_radio_two-audio%3d320000.norewind.m3u8 returned after 86 ms, status code: 200, request body size: 0 B
04/09 06:38:25 [Local 04/09 07:38:25] Debug: [easyhttp] [94436] GET to https://as-hls-uk-live.akamaized.net/pool_74208725/live/uk/bbc_radio_two/bbc_radio_two.isml/bbc_radio_two-audio=320000-277455738.ts returned after 87 ms, status code: 200, request body size: 0 B
04/09 06:38:28 [Local 04/09 07:38:28] Debug: [easyhttp] [94437] GET to https://api.roonlabs.net/internetradio/2/api/stations/7c828d71-6de4-4a86-962f-6f5c0b5e2072/metadata?format=msgpack&wait=True×tamp=-1& returned after 183 ms, status code: 200, request body size: 0 B
04/09 06:38:28 [Local 04/09 07:38:28] Trace: [KitchenPi] [LowQuality, 24/48 AAC => 24/48] [100% buf] [PLAYING @ 0:10] The Radio 2 Breakfast Show - Gary Davies with Michaela Strachan!
04/09 06:38:31 [Local 04/09 07:38:31] Debug: [easyhttp] [94438] GET to https://as-hls-uk-live.akamaized.net/pool_74208725/live/uk/bbc_radio_two/bbc_radio_two.isml/bbc_radio_two-audio%3d320000.norewind.m3u8 returned after 87 ms, status code: 200, request body size: 0 B
04/09 06:38:31 [Local 04/09 07:38:31] Debug: [easyhttp] [94439] GET to https://as-hls-uk-live.akamaized.net/pool_74208725/live/uk/bbc_radio_two/bbc_radio_two.isml/bbc_radio_two-audio=320000-277455739.ts returned after 98 ms, status code: 200, request body size: 0 B
04/09 06:38:33 [Local 04/09 07:38:33] Trace: [library] endmutation in 24ms
04/09 06:38:33 [Local 04/09 07:38:33] Debug: [easyhttp] [94440] GET to https://api.roonlabs.net/internetradio/2/api/stations/7c828d71-6de4-4a86-962f-6f5c0b5e2072/metadata?format=msgpack&wait=True×tamp=-1& returned after 197 ms, status code: 200, request body size: 0 B
04/09 06:38:33 [Local 04/09 07:38:33] Trace: [KitchenPi] [LowQuality, 24/48 AAC => 24/48] [100% buf] [PLAYING @ 0:15] The Radio 2 Breakfast Show - Gary Davies with Michaela Strachan!
04/09 06:38:38 [Local 04/09 07:38:38] Debug: [easyhttp] [94441] GET to https://as-hls-uk-live.akamaized.net/pool_74208725/live/uk/bbc_radio_two/bbc_radio_two.isml/bbc_radio_two-audio%3d320000.norewind.m3u8 returned after 106 ms, status code: 200, request body size: 0 B
04/09 06:38:38 [Local 04/09 07:38:38] Debug: [easyhttp] [94442] GET to https://as-hls-uk-live.akamaized.net/pool_74208725/live/uk/bbc_radio_two/bbc_radio_two.isml/bbc_radio_two-audio=320000-277455740.ts returned after 95 ms, status code: 200, request body size: 0 B
04/09 06:38:38 [Local 04/09 07:38:38] Debug: [easyhttp] [94443] GET to https://api.roonlabs.net/internetradio/2/api/stations/7c828d71-6de4-4a86-962f-6f5c0b5e2072/metadata?format=msgpack&wait=True×tamp=-1& returned after 182 ms, status code: 200, request body size: 0 B
04/09 06:38:38 [Local 04/09 07:38:38] Trace: [KitchenPi] [LowQuality, 24/48 AAC => 24/48] [100% buf] [PLAYING @ 0:20] The Radio 2 Breakfast Show - Gary Davies with Michaela Strachan!
04/09 06:38:39 [Local 04/09 07:38:39] Info: [stats] 10458mb Virtual, 1988mb Physical, 1161mb Managed, 827mb estimated Unmanaged, 424 Handles, 88 Threads, 0.65% of runtime in GC pauses, 13ms last GC pause duration
04/09 06:38:42 [Local 04/09 07:38:42] Trace: [library] endmutation in 25ms
04/09 06:38:43 [Local 04/09 07:38:43] Debug: [easyhttp] [94444] GET to https://api.roonlabs.net/internetradio/2/api/stations/7c828d71-6de4-4a86-962f-6f5c0b5e2072/metadata?format=msgpack&wait=True×tamp=-1& returned after 190 ms, status code: 200, request body size: 0 B
04/09 06:38:43 [Local 04/09 07:38:43] Trace: [KitchenPi] [LowQuality, 24/48 AAC => 24/48] [100% buf] [PLAYING @ 0:25] The Radio 2 Breakfast Show - Gary Davies with Michaela Strachan!
04/09 06:38:44 [Local 04/09 07:38:44] Debug: [easyhttp] [94445] GET to https://as-hls-uk-live.akamaized.net/pool_74208725/live/uk/bbc_radio_two/bbc_radio_two.isml/bbc_radio_two-audio%3d320000.norewind.m3u8 returned after 94 ms, status code: 200, request body size: 0 B
04/09 06:38:44 [Local 04/09 07:38:44] Debug: [easyhttp] [94446] GET to https://as-hls-uk-live.akamaized.net/pool_74208725/live/uk/bbc_radio_two/bbc_radio_two.isml/bbc_radio_two-audio=320000-277455741.ts returned after 90 ms, status code: 200, request body size: 0 B
04/09 06:38:48 [Local 04/09 07:38:48] Debug: [easyhttp] [94447] GET to https://api.roonlabs.net/internetradio/2/api/stations/7c828d71-6de4-4a86-962f-6f5c0b5e2072/metadata?format=msgpack&wait=True×tamp=-1& returned after 183 ms, status code: 200, request body size: 0 B
04/09 06:38:48 [Local 04/09 07:38:48] Trace: [KitchenPi] [LowQuality, 24/48 AAC => 24/48] [100% buf] [PLAYING @ 0:30] The Radio 2 Breakfast Show - Gary Davies with Michaela Strachan!
04/09 06:38:48 [Local 04/09 07:38:48] Trace: [KitchenPi] [zoneplayer/raat] sync IQaudIODAC: realtime=71093805689741 rtt=2500us offset=58081628689us delta=567us drift=390us in 30.3155s (12.881ppm, 46.372ms/hr)
04/09 06:38:51 [Local 04/

Tell us about your home network

· Router Ubiqiti UDR7 connected with cat6 to 2.5gbs switch in main distrbution cupboard which onward connects (using cat6) to further 1gbs switch local to Roon ROCK server. VPN used is tailscale for external access and ARC.

I should add that the Ropieee end point uses the API for control and that I am the only user of the Roon App/client and I am not pausing or stopping the output from the roon app/client it is just a random stop.

Hi @Marcus_Russell,

Thanks for writing in and for sharing your report!

From a fresh Roon Server diagnostic report, your server logs show constant communication with two API clients: 192.168.1.149 and 192.168.1.156. These are likely Roon Extension Managers or automation platforms, perhaps?

  • As a next step, temporarily disable all extensions in Settings > Extensions.
Extensions have the authority to send Stop or Pause commands. If an extension is misconfigured or a "Sleep Timer" script is running on one of those IPs, it will stop the Radio on the server regardless of what your remotes are doing.

With that, if the MacBook was grouped with your other streamers, and with the MacBook’s connection failed as shown in the logs (04:59:20 … Giving up), Roon will sometimes stop playback for the entire group to prevent the zones from falling out of sync.

  • Test out ungrouping all zones and play Roon Radio to a single wired streamer (like the Altair) to see if the behavior persists.
Feel free to reproduce the issue again and share the track name, and we’ll take another look as well.

Thanks Marcus, we’ll be monitoring for your reply! :+1:

Thanks for the prompt response. 192.168.1.149 is an extension manager only — happy to disable it for testing. 192.168.1.156 runs an extension manager plus my custom Roon HTTP API bridge that controls the KitchenPi zone via hardware buttons. Disabling it would remove my primary control mechanism, making normal use impossible. However, examining the logs around both dropout events, neither .149 nor .156 sends a com.roonlabs.transport:2/control command before the stop occurs. Both only receive the zones_changed notification after the fact. No zones are grouped in Roon in my setup. The pattern at each dropout is a bare [zone KitchenPi] Pause followed by OnPlayFeedback Stopped with no preceding control command from any API client. The HLS stream and network are healthy throughout (all HTTP 200, 100% buffer). Could there be an internal code path within Roon that triggers this Pause independently?

Ok I have a hypothesis.i noticed this endpoint often stops when I enter the room and in pondering why this might be I hit upon AirPlay. Given AirPlay devices broadcast their availability via mDNS/Bonjour, and Apple devices continuously scan for AirPlay-compatible targets when an iPhone or other Apple device sees an AirPlay receiver and “considers” it, the receiver software (ShairPort/RoPieee) may do prepare-to-receive work. It therefore could be that being probed or having a brief stream-handshake attempt is enough to cause the RoPieee endpoint to assert audio control — which would translate to “pause whatever else is playing.”

So I have disabled AirPlay in the RoPieee interface and will see if this reduces or eliminates the false stops. I will report back within a few days but meanwhile no further action from yourselves is required.