Hi, sorry for the slow response. I’ve been out and about and carrying out some more experiments when I wasn’t.
Long story short: I have replaced all 3 of my Mac mini Endpoints (Audio Devices?) with Raspberry Pi 4■■ running RoPieee. My Roon Server is still the 2012 i7 Mac mini running Sonoma. This is enabled by using the Open Core Legacy Patcher software.
This setup has run Planet Rock internet radio perfectly for over 2 days with 2 endpoints in a group. Over 48 hours without a single dropout - a record in my household! All I did was change the Endpoints. The router, DNS, hubs, switches, cables, DACs etc all remained exactly the same.
Conclusion:
- There is something with the Mac minis that Roon does not accommodate.
- Like all good problems, there are several root causes.
So what causes problems?
- Time Machine
There are quite a few posts on the Forum stating that you should not run Time Machine on a Mac running Roon.
The Problem is actually much worse than that. I’ve demonstrated that any Mac running Roon as a Remote and Time Machine connected to your network will cause all your Roon Endpoints to dropout when Time Machine kicks off - even if that machine is not playing anything via Roon. The mere fact that it exists on your network and is running Time Machine and Roon will cause dropouts with internet radio. However, in my experience it is only internet radio that has this problem. Streaming from Qobuz or local stored music is unaffected. So somehow streaming from an internet radio station is different.
Interestingly, using an iOS device, an iPhone or iPad, as a Remote does not cause dropouts. There are Warnings in the Roon Server log file but no dropouts. But iOS does not use Time Machine.
Example Warn messages that appear at the start of dropouts:
01/19 11:25:17 Warn: [.NET ThreadPool Worker] could not run /usr/sbin/diskutil info -plist '.timemachine/RoonServer Time Capsule._afpovertcp._tcp.local./2AFA0EF9-5A60-4498-9EEE-7C5AA35921E3/Data' -- Exit code was: 1
02/08 12:44:22 Warn: [Worker (15)] [Lounge BiFrost + Kitchen DSD + Front Office DSD] [zoneplayer/raat] Too many dropouts (>3s dropped out in the last 30s). Killing stream
- Using Mac minis as Endpoints
After making sure that Time Machine is turned off on every Mac mini that is running Roon, I stop seeing dropouts associated with the Warning "Too many dropouts (>3s dropped out in the last 30s). Killing stream"was still getting dropouts.
However even with Time Machine turned off on all machines running Roon, I was still getting dropouts. I reviewed my complete system again and it occurred to me that the Mac minis I’ve been using for Endpoints and the Roon Server are quite old. But the Roon Server machine is running macOS Sonoma and the Endpoints are running Sequoia even though they are not supported by Apple. This is achieved using the Open Core Legacy Patcher. I wondered if the Patcher was causing some problems.
I did not fancy buying several new Mac minis to prove the point. But I have been considering finding out about Raspberry Pis for some time. So I have bought 3 second hand Raspberry Pi Model 4■■ and installed the RoPieee implementation of ROON. I am now using these as my 3 Endpoints and retained a 2012 Mac mini running Sonoma as the Roon Server - no Endpoint.
So whilst I still do not understand what is wrong with the Mac minis, I think this experiment proves the it was the Mac minis that were causing the problem. Nothing to do with DNS, Routers, hubs, switches etc.
- Having said all that, a couple of hours ago I started Roon Remote on the Roon Server Mac mini and added in a third Endpoint. I realise that I had originally started the 2 day successful experiment running from my iPhone rather than using Roon on the Roon Server. As I finished typing this summary, the system dropped out. The Roon Server log leading to the stoppage is:
02/11 01:05:10 Trace: [Worker (11)] [Kitchen DSD + Front Office DSD + Lounge BiFrost] [zoneplayer/raat] sync HIFI DSD -> Bifrost Gen 5 result: Success
02/11 01:05:10 Info: [8] [stats] 45852mb Virtual, 1975mb Physical, 914mb Managed
02/11 01:05:11 Trace: [Broker:Transport] [Front Office DSD] [LowQuality, 24/48 MP3 => 24/48] [100% buf] [PLAYING @ 56:52] Dead Ringer For Love - Meatloaf
02/11 01:05:13 Trace: [.NET ThreadPool Worker] [Bifrost Gen 5] [raatclient] GOT [943] {"samples":5641,"status":"Dropout"}
02/11 01:05:13 Trace: [.NET ThreadPool Worker] [HIFI DSD] [raatclient] GOT [66347] {"samples":8009,"status":"Dropout"}
02/11 01:05:13 Trace: [.NET ThreadPool Worker] [HIFI DSD] [raatclient] GOT [15] {"samples":10658,"status":"Dropout"}
02/11 01:05:14 Trace: [.NET ThreadPool Worker] [Bifrost Gen 5] [raatclient] GOT [943] {"samples":24000,"status":"Dropout"}
02/11 01:05:14 Trace: [.NET ThreadPool Worker] [HIFI DSD] [raatclient] GOT [66347] {"samples":24000,"status":"Dropout"}
02/11 01:05:14 Trace: [.NET ThreadPool Worker] [HIFI DSD] [raatclient] GOT [15] {"samples":24001,"status":"Dropout"}
02/11 01:05:14 Trace: [.NET ThreadPool Worker] [Bifrost Gen 5] [raatclient] GOT [943] {"samples":24000,"status":"Dropout"}
02/11 01:05:14 Trace: [.NET ThreadPool Worker] [HIFI DSD] [raatclient] GOT [66347] {"samples":24000,"status":"Dropout"}
02/11 01:05:14 Trace: [.NET ThreadPool Worker] [HIFI DSD] [raatclient] GOT [15] {"samples":24000,"status":"Dropout"}
02/11 01:05:15 Trace: [.NET ThreadPool Worker] [Bifrost Gen 5] [raatclient] GOT [943] {"samples":24000,"status":"Dropout"}
02/11 01:05:15 Trace: [.NET ThreadPool Worker] [HIFI DSD] [raatclient] GOT [66347] {"samples":24000,"status":"Dropout"}
02/11 01:05:15 Trace: [.NET ThreadPool Worker] [HIFI DSD] [raatclient] GOT [15] {"samples":24960,"status":"Dropout"}
02/11 01:05:15 Trace: [Broker:Transport] [Kitchen DSD] [LowQuality, 24/48 MP3 => 24/48] [100% buf] [PLAYING @ 56:54] Dead Ringer For Love - Meatloaf
02/11 01:05:15 Trace: [Broker:Transport] [Lounge BiFrost] [LowQuality, 24/48 MP3 => 24/48] [PLAYING @ 56:54] Dead Ringer For Love - Meatloaf
02/11 01:05:15 Trace: [.NET ThreadPool Worker] [Bifrost Gen 5] [raatclient] GOT [943] {"samples":24000,"status":"Dropout"}
02/11 01:05:15 Trace: [.NET ThreadPool Worker] [HIFI DSD] [raatclient] GOT [66347] {"samples":24000,"status":"Dropout"}
02/11 01:05:15 Trace: [.NET ThreadPool Worker] [HIFI DSD] [raatclient] GOT [15] {"samples":24001,"status":"Dropout"}
02/11 01:05:16 Trace: [.NET ThreadPool Worker] [Bifrost Gen 5] [raatclient] GOT [943] {"samples":24000,"status":"Dropout"}
02/11 01:05:16 Trace: [.NET ThreadPool Worker] [HIFI DSD] [raatclient] GOT [66347] {"samples":24000,"status":"Dropout"}
02/11 01:05:16 Trace: [.NET ThreadPool Worker] [HIFI DSD] [raatclient] GOT [15] {"samples":24000,"status":"Dropout"}
02/11 01:05:16 Trace: [Broker:Transport] [Front Office DSD] [LowQuality, 24/48 MP3 => 24/48] [100% buf] [PLAYING @ 56:54] Dead Ringer For Love - Meatloaf
02/11 01:05:16 Trace: [.NET ThreadPool Worker] [Bifrost Gen 5] [raatclient] GOT [943] {"samples":24000,"status":"Dropout"}
02/11 01:05:16 Warn: [Worker (10)] [Kitchen DSD + Front Office DSD + Lounge BiFrost] [zoneplayer/raat] Too many dropouts (>3s dropped out in the last 30s). Killing stream
02/11 01:05:16 Trace: [Worker (10)] [Kitchen DSD + Front Office DSD + Lounge BiFrost] [zoneplayer/raat] too many dropouts. stopping stream
02/11 01:05:16 Trace: [Worker (10)] [Kitchen DSD + Front Office DSD + Lounge BiFrost] [zoneplayer/raat] Endpoint HIFI DSD State Changed: Playing => Prepared
02/11 01:05:16 Trace: [Worker (10)] [HIFI DSD] [raatclient] SENT [1690]{"request":"end_stream"}
02/11 01:05:16 Warn: [Broker:Transport] [zone Kitchen DSD + Front Office DSD + Lounge BiFrost] Track Stopped Due to Slow Media
02/11 01:05:16 Info: [RaatSender] [Kitchen DSD + Front Office DSD + Lounge BiFrost] [zoneplayer] advance didn't change the track. returning short read
02/11 01:05:16 Trace: [Broker:Transport] Attempting to play channel URL: icy://edge-bauerall-01-gos2.sharp-stream.com/planetrock.mp3
02/11 01:05:16 Warn: [119] [streammediafile] error reading stream: net_io_readfailure, Software caused connection abort
02/11 01:05:16 Info: [Worker (13)] [audio/env] [zoneplayer -> stream] All streams were disposed
02/11 01:05:16 Info: [Broker:Transport] [zone Kitchen DSD + Front Office DSD + Lounge BiFrost] OnPlayFeedback StoppedEndOfMediaUnnatural
02/11 01:05:16 Info: [Broker:Transport] [zone Kitchen DSD + Front Office DSD + Lounge BiFrost] OnPlayFeedback Stopped
02/11 01:05:16 Info: [Broker:Transport] [zone Kitchen DSD + Front Office DSD + Lounge BiFrost] Canceling Pending Sleep
02/11 01:05:16 Info: [Broker:Transport] [zone Kitchen DSD + Front Office DSD + Lounge BiFrost] Canceling Pending Sleep
02/11 01:05:16 Trace: [.NET ThreadPool Worker] [HIFI DSD] [raatclient] GOT [15] {"status":"Ended"}
02/11 01:05:16 Trace: [Broker:Transport] [Kitchen DSD] [LowQuality, 24/48 MP3 => 24/48] [100% buf] [STOPPED @ 0:00] Dead Ringer For Love - Meatloaf
02/11 01:05:16 Trace: [Broker:Transport] [Front Office DSD] [LowQuality, 24/48 MP3 => 24/48] [100% buf] [STOPPED @ 0:00] Dead Ringer For Love - Meatloaf
02/11 01:05:16 Trace: [Broker:Transport] [Lounge BiFrost] [LowQuality, 24/48 MP3 => 24/48] [STOPPED @ 0:00] Dead Ringer For Love - Meatloaf
02/11 01:05:16 Trace: [.NET ThreadPool Worker] [HIFI DSD] [raatclient] GOT [1690] {"status":"Success"}
02/11 01:05:16 Info: [Worker (12)] [audio/env] [zoneplayer -> stream -> endpoint] All streams were disposed
02/11 01:05:16 Info: [Worker (11)] [audio/env] [zoneplayer -> stream -> endpoint] All streams were disposed
02/11 01:05:16 Info: [Worker (14)] [audio/env] [zoneplayer] All streams were disposed
02/11 01:05:16 Info: [Worker (9)] [audio/env] [zoneplayer -> stream -> endpoint] All streams were disposed
02/11 01:05:16 Trace: [.NET ThreadPool Worker] [HIFI DSD] [raatclient] GOT [66347] {"samples":24000,"status":"Dropout"}
02/11 01:05:16 Debug: [Worker (10)] [raat/tcpaudiosource] disconnecting
02/11 01:05:16 Trace: [Worker (10)] [Kitchen DSD + Front Office DSD + Lounge BiFrost] [zoneplayer/raat] Endpoint HIFI DSD State Changed: Playing => Prepared
02/11 01:05:16 Trace: [Worker (10)] [HIFI DSD] [raatclient] SENT [68022]{"request":"end_stream"}
02/11 01:05:16 Trace: [.NET ThreadPool Worker] [HIFI DSD] [raatclient] GOT [66347] {"status":"Ended"}
02/11 01:05:16 Trace: [.NET ThreadPool Worker] [HIFI DSD] [raatclient] GOT [68022] {"status":"Success"}
02/11 01:05:16 Debug: [Worker (10)] [raat/tcpaudiosource] disconnecting
02/11 01:05:16 Trace: [Worker (10)] [Kitchen DSD + Front Office DSD + Lounge BiFrost] [zoneplayer/raat] Endpoint Bifrost Gen 5 State Changed: Playing => Prepared
02/11 01:05:16 Trace: [Worker (10)] [Bifrost Gen 5] [raatclient] SENT [945]{"request":"end_stream"}
02/11 01:05:16 Trace: [.NET ThreadPool Worker] [Bifrost Gen 5] [raatclient] GOT [943] {"status":"Ended"}
02/11 01:05:16 Trace: [.NET ThreadPool Worker] [Bifrost Gen 5] [raatclient] GOT [945] {"status":"Success"}
02/11 01:05:16 Debug: [Worker (10)] [raat/tcpaudiosource] disconnecting
02/11 01:05:16 Info: [Worker (10)] sleep 50ms after flush
02/11 01:05:16 Info: [Worker (10)] [Kitchen DSD + Front Office DSD + Lounge BiFrost] [zoneplayer] Playing: channel://icy%3a%2f%2fedge-bauerall-01-gos2.sharp-stream.com%2fplanetrock.mp3
02/11 01:05:16 Debug: [Worker (10)] Try making ICY request to icy://edge-bauerall-01-gos2.sharp-stream.com/planetrock.mp3
02/11 01:05:16 Warn: [Worker (9)] [Kitchen DSD + Front Office DSD + Lounge BiFrost] [zoneplayer/raat] Too many dropouts (>3s dropped out in the last 30s). Killing stream
02/11 01:05:16 Trace: [Worker (9)] [Kitchen DSD + Front Office DSD + Lounge BiFrost] [zoneplayer/raat] too many dropouts. stopping stream
02/11 01:05:17 Debug: [.NET ThreadPool Worker] [easyhttp] [4457] POST to https://api.roonlabs.net/internetradio/2/api/reporting/internetradioplayback/events?format=msgpack& returned after 419 ms, status code: 200, request body size: 172 B
02/11 01:05:17 Debug: [.NET ThreadPool Worker] [easyhttp] [4458] POST to https://api.roonlabs.net/internetradio/2/api/reporting/internetradioplayback/events?format=msgpack& returned after 422 ms, status code: 200, request body size: 171 B
02/11 01:05:17 Trace: [Worker (10)] Got ICY Stream Title [Dead Ringer For Love - Meatloaf]
02/11 01:05:17 Info: [Worker (10)] [Kitchen DSD + Front Office DSD + Lounge BiFrost] [zoneplayer] Open Result (Playing):Result[Status=Success]
02/11 01:05:17 Info: [Worker (10)] [Kitchen DSD + Front Office DSD + Lounge BiFrost] [zoneplayer] Aborting play because track changed
02/11 01:05:17 Info: [Worker (21)] [audio/env] [zoneplayer] All streams were disposed
02/11 01:05:17 Debug: [.NET ThreadPool Worker] [easyhttp] [4459] POST to https://api.roonlabs.net/internetradio/2/api/reporting/internetradioplayback/plays?format=msgpack& returned after 208 ms, status code: 200, request body size: 177 B
02/11 01:05:17 Debug: [.NET ThreadPool Worker] [easyhttp] [4460] POST to https://api.roonlabs.net/internetradio/2/api/reporting/internetradioplayback/plays?format=msgpack& returned after 429 ms, status code: 400
02/11 01:05:20 Trace: [Broker:Misc] [remoting/brokerserver] [initconn 192.168.1.94:51525=>192.168.1.249:9332] Connected
02/11 01:05:20 Trace: [Broker:Misc] [remoting/brokerserver] [initconn 192.168.1.94:51526=>192.168.1.249:9332] Connected
02/11 01:05:20 Trace: [Broker:Misc] [remoting/brokerserver] [initconn 192.168.1.94:51525=>192.168.1.249:9332] Resumed Session
02/11 01:05:20 Trace: [Broker:Misc] [remoting/remotingprotocolv2] resume send 88018 messages, 4137KiB
02/11 01:05:20 Trace: [Broker:Transport] [raat] [sood] Refreshing device list
02/11 01:05:20 Warn: [Broker:Misc] [remoting/brokerserver] [initconn 192.168.1.94:51526=>192.168.1.249:9332] failed: System.Exception: incomplete receive at Sooloos.Broker.Distributed.InitConnectionV2.Go()
02/11 01:05:20 Trace: [Broker:Transport] [raatserver] [sood] Refreshing device list
02/11 01:05:20 Debug: [.NET ThreadPool Worker] [easyhttp] [4461] POST to https://api.roonlabs.net/discovery/1/query returned after 170 ms, status code: 200, request body size: 74 B
02/11 01:05:25 Info: [8] [stats] 45861mb Virtual, 1976mb Physical, 932mb Managed
02/11 01:05:40 Info: [8] [stats] 45850mb Virtual, 1975mb Physical, 933mb Managed
02/11 01:05:44 Info: [.NET ThreadPool Worker] [remoting/serverconnectionv2] Client disconnected: 192.168.1.94:51457
So I don’t know. As a Systems Engineer, I can see where it’s going wrong from the log files. But I do not have enough understanding of how exactly Roon works. And I don’t have the diagnostic tools available to work out exactly what is going wrong.
But because of the variety of Warn messages I’m seeing, I’m pretty sure that there are either a couple of bugs (1 to do with a Time Machine interaction and another to do with macOS Sonoma and Sequoia) or a single timing or handshake bug that is having all sorts of downstream effects.
The really worrying thing is that my neighbour has a Sonos system, and that doesn’t work consistently either!
Good Night.