Roon Client: Crashes when connecting to microRendu + DAC

Roon Core Machine

sonicTransporter i5 (no internal drive) running sonictransport v2.8
Roon v1.8 (build 831)

Networking Gear & Setup Details

Ethernet
Switch: 3com OfficeConnect Dual Speed 16 plus
Router: SonicWall TZ300

Connected Audio Devices

microRendu (sonictransport v2.8) → USB → ifi nano iDSD

Number of Tracks in Library

42,362 tracks

Description of Issue

In the middle of listening to a track, the music stopped and I realized the Mac Roon Client crashed. It consistently crashed one second after starting the client thereafter. Android Client would hang without a core connection. I prevented the crashing by shutting down Roon Server and selecting as audio the default device on my Mac with a line feed to my stereo; so, I am not dead in the water, just not using my preferred choice. If I try to switch to uRendu, the client immediately crashes.

Below is the server log. I suspect that my DAC is busted, though uRendu displays healthy DAC Diagnostics and is running Roon Ready just fine. “Connection refused” implies uRendu or DAC. Fundamentally, Roon Client should be handling the exception instead of crashing.

10/27 21:47:46 Trace: [MacProSysOut] [zoneplayer/raat] sync System Output: realtime=11214458487950 rtt=500us offset=-55778185512us delta=-374us drift=37187us in 884.7015s (42.033ppm, 151.321ms/hr)
10/27 21:47:48 Info: [brokerserver] Client connected: 192.168.168.170:65039
10/27 21:47:48 Trace: [raat] [sood] Refreshing device list
10/27 21:47:48 Trace: [raatserver] [sood] Refreshing device list
10/27 21:47:49 Debug: [easyhttp] [2648] POST to https://discovery.roonlabs.net/1/query returned after 450 ms, status code: 200
10/27 21:47:49 Trace: SENT NONFINAL DistributedBroker.ConnectResponse={ BrokerId=47a77f82-9ca0-46da-9b19-6df19c1b5300 BrokerName='sonictransport' }
10/27 21:47:49 Trace: SENT NONFINAL DistributedBroker.UpdatesChangedResponse={ IsSupported=True WasJustUpdated=False Status='UpToDate' HasChangeLog=False CurrentVersion={ MachineValue=100800831 DisplayValue='1.8 (build 831) stable' Branch='stable' } }
10/27 21:47:49 Trace: [push] restarting connection (Unable to read data from the transport connection: interrupted.)
10/27 21:47:49 Trace: [push] retrying connection in 98963ms
10/27 21:47:50 Info: [brokerserver] Client disconnected: 192.168.168.170:65039
10/27 21:47:50 Trace: [raat] RAATServer discovered: RaatServer MacMini2 @ 192.168.168.170:9200
10/27 21:47:50 Info: [raatserver] GOT SERVER 58e7de23-32ce-ea0e-83d2-94b33438a9e9::adb53bea-a686-4f39-bd4a-4ba431c8b424 @ 192.168.168.170:9200 MacMini2 PROTOVER=1 RAATVER=1.1.38
10/27 21:47:50 Trace: [raatserver] [RaatServer MacMini2 @ 192.168.168.170:9200] connecting (attempt 1)
10/27 21:47:50 Trace: [raatserver] [RaatServer MacMini2 @ 192.168.168.170:9200] connected
10/27 21:47:50 Trace: [rnet/RnetJsonClient] SENT {"request":"enumerate_devices","subscription_id":"0"}
10/27 21:47:50 Trace: [rnet/RnetJsonClient] GOT NONFINAL {"status": "Success", "devices": [{"device_id": "AppleHDAEngineOutput:1B,0,1,2:0", "name": "Built-in Output", "type": "coreaudio", "vendor": "Apple Inc."}, {"config": {"unique_id": "9e314f0b-530e-e6bd-96b5-60a62a8f588a", "external_config": {}, "volume": {"type": "coreaudio", "device": "default"}, "output": {"name": "System Output", "type": "coreaudio", "device": "default"}}, "device_id": "default", "name": "System Output", "type": "coreaudio", "is_system_output": true}]}
10/27 21:47:50 Trace: [devicedb] [autodetect] No Match for DeviceAutodetectData[Type=Local Vendor=Apple Inc. Model=Built-in Output]
10/27 21:47:50 Info: [raatserver] GOT DEVICE adb53bea-a686-4f39-bd4a-4ba431c8b424::AppleHDAEngineOutput:1B,0,1,2:0 Type=coreaudio Name=Built-in Output Vendor=Apple Inc.
10/27 21:47:50 Info: [raatserver] GOT DEVICE adb53bea-a686-4f39-bd4a-4ba431c8b424::default Type=coreaudio Name=System Output
10/27 21:47:50 Trace: [rnet/RnetJsonClient] SENT {"request":"enable_device","device_id":"default","subscription_id":"11"}
10/27 21:47:50 Trace: [rnet/RnetJsonClient] GOT NONFINAL {"status": "DeviceChanged", "device": {"config": {"unique_id": "9e314f0b-530e-e6bd-96b5-60a62a8f588a", "external_config": {}, "volume": {"type": "coreaudio", "device": "default"}, "output": {"name": "System Output", "type": "coreaudio", "device": "default"}}, "device_id": "default", "discovery_data": {"raat_version": "1.1.38", "tcp_port": 65044, "unique_id": "9e314f0b-530e-e6bd-96b5-60a62a8f588a", "vendor": "N/A", "version": "N/A", "model": "N/A", "protocol_version": "3"}, "name": "System Output", "type": "coreaudio", "is_system_output": true}}
10/27 21:47:50 Info: [raatserver] [System Output] connecting (attempt 1)
10/27 21:47:50 Trace: [rnet/RnetJsonClient] GOT NONFINAL {"status": "Success"}
10/27 21:47:50 Trace: [System Output] [raatclient] Initializing RAAT session
10/27 21:47:50 Trace: [System Output] [raatclient] Loading script raat.dat:base.lua as module base [1088 chars]
10/27 21:47:50 Trace: [System Output] [raatclient] Loading script raat.dat:dkjson.lua as module dkjson [22416 chars]
10/27 21:47:50 Trace: [System Output] [raatclient] Loading script raat.dat:protocol.lua as module protocol [2045 chars]
10/27 21:47:50 Trace: [System Output] [raatclient] Loading script raat.dat:roon_tcp.lua [43548 chars]
10/27 21:47:50 Trace: [System Output] [raatclient] RAAT Session initialized in 23ms
10/27 21:47:50 Trace: [System Output] [raatclient] SENT [2]{"request":"info"}
10/27 21:47:50 Trace: [System Output] [raatclient] SENT [3]{"request":"set_client_type","client_type":"Roon"}
10/27 21:47:50 Trace: [System Output] [raatclient] GOT [2] {"info":{"unique_id":"9e314f0b-530e-e6bd-96b5-60a62a8f588a"},"flags":{"has_write_chmap":true},"source_selection":{"info":[],"is_supported":false},"volume":{"info":{"config":{"device":"default","type":"coreaudio"}},"is_supported":true},"platform":{"uname":{"version":"Darwin Kernel Version 20.6.0: Mon Aug 30 06:12:21 PDT 2021; root:xnu-7195.141.6~3/RELEASE_X86_64","sysname":"Darwin","machine":"x86_64","nodename":"MacMini2.local","release":"20.6.0"},"os":"osx"},"output":{"info":{"config":{"device":"default","type":"coreaudio","name":"System Output"}},"supported_formats":"96000/24/1|2,96000/16/1|2,44100/16/1|2,88200/24/1|2,48000/16/1|2,88200/16/1|2,44100/24/1|2,48000/24/1|2"},"status":"Success","transport":{"info":[],"is_supported":false}}
10/27 21:47:50 Trace: [raatserver] [System Output] connected
10/27 21:47:50 Info: [transport] creating endpoint for raat device 9e314f0b-530e-e6bd-96b5-60a62a8f588a
10/27 21:47:50 Trace: [System Output] [raatclient] SENT [4]{"request":"subscribe_transport"}
10/27 21:47:50 Trace: [System Output] [raatclient] SENT [5]{"request":"subscribe_controls","controller_id":"47a77f82-9ca0-46da-9b19-6df19c1b5300"}
10/27 21:47:50 Trace: [dspengine] created new dsp config {"version":3,"items":[{"type":"bs2b","enabled":false},{"type":"parametric_equalizer","enabled":false},{"type":"audeze_presets","enabled":false}]}
10/27 21:47:50 Trace: [transport/audeze] picking preset lowlatency
10/27 21:47:50 Trace: [transport/audeze] picked null preset!
10/27 21:47:50 Trace: [System Output] [raatclient] GOT [3] {"status":"Success"}
10/27 21:47:50 Trace: [System Output] [raatclient] GOT [5] {"action":"Changed","status":"Success","controls":{"volume":{"info":{"config":{"device":"default","type":"coreaudio"}},"mute":false,"min":0.0,"step":1.0,"type":"number","value":100,"max":100.0}}}
10/27 21:47:50 Trace: [zone MacMini] Loading
10/27 21:47:50 Trace: [zone MacMini] Suspend
10/27 21:47:50 Info: [zone MacMini] Canceling Pending Sleep
10/27 21:47:50 Trace: [MacMini] [zoneplayer/raat] Endpoint System Output Initial State: Idle
10/27 21:47:50 Info: [transport] created zone MacMini
10/27 21:47:50 Info: [transport] with endpoint System Output (23:1:9e314f0b-530e-e6bd-96b5-60a62a8f588a) [IsAvailable=True]
10/27 21:47:50 Trace: [MacProSysOut] [HighQuality, 32/44 WAV => 24/44] [100% buf] [PLAYING @ 4:51/5:09] Fantaisie Op. 79 Pour Flûte Et Piano - Eric Le Sage, Performer - Emmanuel Pahud, Performer - Gabriel Fauré, Composer / Gabriel Fauré
10/27 21:47:50 Trace: [zone MacMini] Loaded Queue=0 Tracks Swim=Inactive AutoSwim=True Loop=Disabled Shuffle=False
10/27 21:47:53 Trace: [prebuffer] short read: 0 / 8820 fill=433356
10/27 21:47:53 Info: [stats] 5826mb Virtual, 2847mb Physical, 1036mb Managed, 0 Handles, 77 Threads
10/27 21:47:55 Trace: [MacProSysOut] [HighQuality, 32/44 WAV => 24/44] [78% buf] [PLAYING @ 4:56/5:09] Fantaisie Op. 79 Pour Flûte Et Piano - Eric Le Sage, Performer - Emmanuel Pahud, Performer - Gabriel Fauré, Composer / Gabriel Fauré
10/27 21:47:59 Trace: [raatserver] [RaatServer MacMini2 @ 192.168.168.170:9200] lost client connection. Retrying
10/27 21:47:59 Trace: [raatserver] [RaatServer MacMini2 @ 192.168.168.170:9200] connecting (attempt 1)
10/27 21:47:59 Info: [transport] destroyed zone MacMini was playing? False
10/27 21:47:59 Trace: [zone MacMini] Suspend
10/27 21:47:59 Info: [zone MacMini] Canceling Pending Sleep
10/27 21:47:59 Info: [zone MacMini] Canceling Pending Sleep
10/27 21:47:59 Warn: [rnet/RnetJsonClient] failed to connect Connection refused
10/27 21:47:59 Trace: [raatserver] [RaatServer MacMini2 @ 192.168.168.170:9200] client connection failed. Retrying in 500ms
10/27 21:47:59 Trace: Successful POST response from https://push.roonlabs.com/push/1/connect
10/27 21:47:59 Trace: [push] connecting to 35.237.106.222:9204
10/27 21:47:59 Trace: [push] connected
10/27 21:47:59 Trace: [raatserver] [RaatServer MacMini2 @ 192.168.168.170:9200] connecting (attempt 2)
10/27 21:47:59 Warn: [rnet/RnetJsonClient] failed to connect Connection refused
10/27 21:47:59 Trace: [raatserver] [RaatServer MacMini2 @ 192.168.168.170:9200] client connection failed. Retrying in 750ms

I’m not with Roon support, but I’ve seen lots of those logs over the years and there’s something peculiar in what you excerpted: I don’t see anything involving a Sonic Transporter or a microRendu, just a Mac (MacMini2). Are those the logs from the core (Sonic Transporter) or from the Mac? Also, it looks like whatever the logs are from “thinks” it is a Mac and operating as a RAAT server, that is, a Roon core. Hum…

Connect the DAC to the Roon Core hardware directly via USB, see if it plays normally.

sonicTransporter is the music server running Roon Server, Fernando. You are correct there is no explicit reference to sonicTransporter in the entire log, probably because this music server is merely the hardware.

The MacMini2 reference involves the Roon Client that is running on my Mac Mini.

Thank you for that suggestion, Peter. While the sonicTransporter has no USB digital out, I could connect it to my Mac Pro and select the DAC for audio output. I was able to successfully play tracks through the DAC, which narrows root cause to the microRendu.

No, there’s something wrong there. If the logs were from the sonicTransporter, which is a Linux-based server, they’d look rather different. Where did you exactly get those log excerpts from? From your data so far, I’m suspecting that you are actually running your Roon core on the Mac, not on the sonicTransporter.

I got the log excerpts from sonicTransporter’s ‘Roon Server Diagnostic’.

After a discussion in the Sonore forum on Audiophile Style, I was able to determine that Mac and Android Roon Clients failed to play a track in the microRendu zone, with the Mac client crashing immediately whenever I tried to switch from an internal Mac speaker to microRendu and the Android client hanging with the never-ending busy Roon icon. On the other hand, iPhone and iPad Roon clients had no trouble switching to and playing that track in the microRendu zone. All clients are up to date with v1.8b831.

One thing that was not ordinary about the track, that I was playing through microRendu, was that it is a mono track of Duke Ellington’s Reminiscing In Tempo - Part 1, the fourteenth track of a CD titled The Chronological Duke Ellington 1935-1936; I had played through the previous thirteen tracks, so it seems odd that they would play fine until I got to this track. Just for the record, this track is 32-bit float at 44.1KHz, my standard format for all of my music, with a True Peak Loudness of 0.0 db. Note that each Roon zone holds whatever playlist you set it up with. Therefore, this track was associated with microRendu, while something else was associated with the Mac Pro internal speaker that the Mac and Android clients never had trouble playing through.

So this suggests that the Mac and Android clients have a flaw that this track reveals. Thanks to the IOS clients, I was able to recover by selecting something else to play from Qobuz in the microRendu zone, and the Mac and Android clients were good to go after that. If none of my clients had been able to play this track, how would I have been able to recover? Is there a way to clear the playlist for the microRendu and effectively recover that way?

Please convert it to FLAC (must not be AIFF) and see if you experience the same crash.

Thank you for that suggestion, Peter. All of my music files are WAV. In preparation for converting that track to FLAC, I decided to flirt with trouble and play that track. It played fully without issue. Then, I played the entire album, again without issue. That experience suggests that some other condition(s) were taking place when the Mac Roon client crashed and that the track I was playing was not a factor.

What disturbs me is that, if I had not had on hand an IOS Roon client, I might not have been able to recover from that seemingly permanent failure associated with the microRendu zone. Replacing that track with another format, such as FLAC (as you suggested), or simply removing the track might have resolved the matter. Clearing the queue would have been ideal, especially if the root cause was a damaged queue list. But I know of no way to do that except from a running client. Would clearing the Roon Server Cache accomplish this? I can’t remember trying this idea. To clear the queue, is there an alternative to the Roon client?