Roon lost control of the Audio device - HQP Desktop

Hi folks,

  • Roon 1.8 Build 918 on Win11. Core running on VMWare VM, also Win11, same Roon Build.
  • HQPlayer Desktop 4.17.2, licensed
  • i7 10700K 32GB RAM, SSD.
  • Wireless network, but in this case all networking is local between the VM and the host - Core on Guest and HQPlayer on host.

Output either WASAPI–>Soekris DAC2541 or ASIO–>Soekris DAC 2541 or NULL

Behavior
Playback to HQPlayer has been fine until last night. Normal operation has been over the course of several months.

Now I get “Roon lost control of the Audio device” immediately after playback begins. This behavior will happen about 90% of attempts, and regardless of output (ASIO, WASAPI or NULL). Playback light lights up on Roon, HQP shows Roon connection change (for example set to CD and then Roon will override correctly) and playback fails immediately.

I have restarted all elements, uninstalled and reinstalled HQP and confirmed that local playback using HQP+Client works correctly

If I Clear Data on HQPlayer Desktop, reselect the Soekris output over WASAPI or ASIO playback is sometimes successful. On manual track change the issue will recur again almost every time. If I alter any HQP setting it will occur 100%. Once HQP is in this state it is ‘stuck’.

If I use HQPlayer Client to play back local content, that is successful, and once successful there is a greater chance that Roon will behave, but this is maybe a 50% success rate.

Below is a log after a clear data, selection of the Soekris WASAPI endpoint and enable of logging as the only config changes, then restart of HQP. There are two playback attempts, both failed, in the log. Subsequent attemps with ASIO and NULL output have the same result.

I get the same error when using Network Audio Daemon in various tests.

Below are NAA output and the HQP Log File.

Any suggestions are welcome.

NAA output

[D:\Media Players\HQPlayer\NAD\networkaudiod.exe] (27200): start 384000/32/2 [pcm]
[D:\Media Players\HQPlayer\NAD\networkaudiod.exe] (27200): ASIO output set channels: 2 (2)
[D:\Media Players\HQPlayer\NAD\networkaudiod.exe] (27200): ASIO output set sampling rate: 384000 (384000)
[D:\Media Players\HQPlayer\NAD\networkaudiod.exe] (27200): ASIO output channels: 0 in / 2 out
[D:\Media Players\HQPlayer\NAD\networkaudiod.exe] (27200): ASIO output channel map:
[D:\Media Players\HQPlayer\NAD\networkaudiod.exe] (27200):      0: Analogue 1
[D:\Media Players\HQPlayer\NAD\networkaudiod.exe] (27200): ASIO output SampleFormat 18, 32-bit
[D:\Media Players\HQPlayer\NAD\networkaudiod.exe] (27200):      1: Analogue 2
[D:\Media Players\HQPlayer\NAD\networkaudiod.exe] (27200): enter streaming mode
[D:\Media Players\HQPlayer\NAD\networkaudiod.exe] (27200): ASIO output channels: 0 in / 2 out
[D:\Media Players\HQPlayer\NAD\networkaudiod.exe] (27200): ASIO output channel map:
[D:\Media Players\HQPlayer\NAD\networkaudiod.exe] (27200):      0: Analogue 1
[D:\Media Players\HQPlayer\NAD\networkaudiod.exe] (27200):      1: Analogue 2
[D:\Media Players\HQPlayer\NAD\networkaudiod.exe] (27200): ASIO output buffer sizes: 64/4096/16384 granularity: -1
[D:\Media Players\HQPlayer\NAD\networkaudiod.exe] (27200): ASIO output using ASIO default buffer size
[D:\Media Players\HQPlayer\NAD\networkaudiod.exe] (27200): ASIO output using ASIO buffer size: 4096
[D:\Media Players\HQPlayer\NAD\networkaudiod.exe] (27200): ASIO output latencies: 5632/4800
[D:\Media Players\HQPlayer\NAD\networkaudiod.exe] (27200): ASIO output not using ASIO output ready notifications
[D:\Media Players\HQPlayer\NAD\networkaudiod.exe] (27200): ASIO output engine started at 384 kHz, 2 channels, 4096 sample buffer (2 channels)
[D:\Media Players\HQPlayer\NAD\networkaudiod.exe] (27200): ASIO output engine running at: 384000
[D:\Media Players\HQPlayer\NAD\networkaudiod.exe] (27200): leave streaming mode
[D:\Media Players\HQPlayer\NAD\networkaudiod.exe] (27200): stop
[D:\Media Players\HQPlayer\NAD\networkaudiod.exe] (27200): ASIO output engine stopped


**HQP Log:**
* 2022/03/26 10:18:43 Starting...
  2022/03/26 10:18:43 Signalyst HQPlayer 4 Desktop v4.17.2
  2022/03/26 10:18:43 Engine selected: 
  2022/03/26 10:18:43 Windows version: 10.0
  2022/03/26 10:18:47 Restore GUI state
  2022/03/26 10:18:47 MP3 decoders:
  2022/03/26 10:18:47 	AVX
  2022/03/26 10:18:47 	x86-64
  2022/03/26 10:18:47 	generic
  2022/03/26 10:18:47 	generic_dither
  2022/03/26 10:18:47 Supported MP3 decoders:
  2022/03/26 10:18:47 	AVX
  2022/03/26 10:18:47 	x86-64
  2022/03/26 10:18:47 	generic
  2022/03/26 10:18:47 	generic_dither
  2022/03/26 10:18:47 Current MP3 decoder: generic_dither
  2022/03/26 10:18:47 libDSP version 24.0.0
  2022/03/26 10:18:47 HQPlayer Engine version 4.53.2
  2022/03/26 10:18:47 Processors physical=8 logical=16 performance=8 efficiency=0 groups=1 packages=1 nodes=1
  2022/03/26 10:18:47 Number of processor cores: 8
  2022/03/26 10:18:47 Number of performance core groups: 1
  2022/03/26 10:18:47 Core mask: 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101010101010101
  2022/03/26 10:18:47 CPU brand name: GenuineIntel
  2022/03/26 10:18:47 Core pinning enabled
  2022/03/26 10:18:47 Pool mask: 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010101010101010 / [0] 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010101010101010
  2022/03/26 10:18:47 Pool: {1,3,5,7,9,11,13,15}
  2022/03/26 10:18:47 Pool threads: 8
  2022/03/26 10:18:47 Initial parallel threads: 8
  2022/03/26 10:18:47 Number of logical cores: 16
  2022/03/26 10:18:47 Core pinning:
  2022/03/26 10:18:47 	0: [0:0] 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010101
  2022/03/26 10:18:47 	0m: [0:0] 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001
  2022/03/26 10:18:47 	1: [0:0] 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101010100000000
  2022/03/26 10:18:47 	1m: [0:0] 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000
  2022/03/26 10:18:47 DSP thread pools enabled (3 / 4)
  2022/03/26 10:18:47 DSP pipelines enabled
  2022/03/26 10:18:47 Pipelined engine enabled
  2022/03/26 10:18:47 DirectSDM disabled
  2022/03/26 10:18:47 Audio engine: wasapi
  2022/03/26 10:18:47 Input set channels: 2 (2)
  2022/03/26 10:18:47 WASAPI output found endpoints:
  2022/03/26 10:18:47 	'Speakers (3- Soekris dac1xx1)' (0)
  2022/03/26 10:18:47 	'Line 1 (Virtual Audio Cable)' (1)
  2022/03/26 10:18:47 	'Speakerphone (Polycom CX100)' (2)
  2022/03/26 10:18:47 	'Realtek Digital Output (Realtek(R) Audio)' (3)
  2022/03/26 10:18:47 	'Speakers (Realtek(R) Audio)' (4)
  2022/03/26 10:18:47 	'C49RG9x (Intel(R) Display Audio)' (5)
  2022/03/26 10:18:47 WASAPI output period time set
  2022/03/26 10:18:47 WASAPI output open audio endpoint GUID: {0.0.0.00000000}.{03ede157-308f-4e33-9343-9bd348039889}
  2022/03/26 10:18:47 WASAPI output currently using: 'Speakers (3- Soekris dac1xx1)'
  2022/03/26 10:18:47 WASAPI output type: Speakers
  2022/03/26 10:18:47 WASAPI output engine initialized
  2022/03/26 10:18:47 WASAPI output discover rates for 2 channels
  2022/03/26 10:18:47 WASAPI output formats available:
  2022/03/26 10:18:47 	44100/24 (32)
  2022/03/26 10:18:47 	48000/24 (32)
  2022/03/26 10:18:47 	88200/24 (32)
  2022/03/26 10:18:47 	96000/24 (32)
  2022/03/26 10:18:47 	176400/24 (32)
  2022/03/26 10:18:47 	192000/24 (32)
  2022/03/26 10:18:47 	352800/24 (32)
  2022/03/26 10:18:47 	384000/24 (32)
  2022/03/26 10:18:47 	44100/16 (16)
  2022/03/26 10:18:47 	48000/16 (16)
  2022/03/26 10:18:47 	88200/16 (16)
  2022/03/26 10:18:47 	96000/16 (16)
  2022/03/26 10:18:47 	176400/16 (16)
  2022/03/26 10:18:47 	192000/16 (16)
  2022/03/26 10:18:47 	352800/16 (16)
  2022/03/26 10:18:47 	384000/16 (16)
  2022/03/26 10:18:47 WASAPI output engine uninitialized
  2022/03/26 10:18:47 WASAPI output format discovery complete
  2022/03/26 10:18:47 Input set channels: 2 (2)
  2022/03/26 10:18:47 Normal buffers
  2022/03/26 10:18:47 Volume max: 0
  2022/03/26 10:18:47 Volume min: -60
  2022/03/26 10:18:47 PCM gain compensation: 1 (0 dB)
  2022/03/26 10:18:47 Set volume: -60 +
  2022/03/26 10:18:47 Automatic rate family disabled
  2022/03/26 10:18:47 Full pause processing
  2022/03/26 10:18:47 SDM conversion parameters (8, 0)
  2022/03/26 10:18:47 DSD 6 dB gain disabled
  2022/03/26 10:18:47 Control active volume range: -60 - 0 dB
  2022/03/26 10:18:47 Listen discovery on ::
  2022/03/26 10:18:47 Listen discovery on 0.0.0.0
  2022/03/26 10:18:47 Set filter: 6 / 24
  2022/03/26 10:18:47 Set oversampling: 6 / 22
  2022/03/26 10:18:47 Set dither: 5
  2022/03/26 10:18:47 Set modulator: 6
  2022/03/26 10:18:47 Requested output rate: 384000
  2022/03/26 10:18:47 WASAPI output set sampling rate: 384000 (384000)
  2022/03/26 10:18:47 Automatic output rate switching enabled
  2022/03/26 10:18:47 Set volume: 0 +
* 2022/03/26 10:18:47 Control server allow remote control
+ 2022/03/26 10:18:51 Control connection from 192.168.198.105:51123
+ 2022/03/26 10:18:52 Control started from 192.168.198.105:51123
& 2022/03/26 10:18:52 Stop...
& 2022/03/26 10:18:53 Set transport (240): 
& 2022/03/26 10:18:53 Playlist clear
& 2022/03/26 10:18:53 Playlist add URI: http://192.168.198.105:30000/4b56cb46b177427fb0903ab6ea9f8d0a/stream.raw
  2022/03/26 10:18:53 Offload: resampler=disabled convolution=disabled
& 2022/03/26 10:18:53 Play
  2022/03/26 10:18:53 Stream buffer 7056000/70560
  2022/03/26 10:18:53 Offload: resampler=disabled convolution=disabled
+ 2022/03/26 10:18:53 Playback engine running
  2022/03/26 10:18:53 Rate or blocksize change triggered
  2022/03/26 10:18:53 Rate: 44100, block size: 9408, frame size: 588
  2022/03/26 10:18:53 Block size: 9408 (sample: 8)
  2022/03/26 10:18:53 Playback engine ratio: 8.70748
  2022/03/26 10:18:53 Filter: poly sinc
  2022/03/26 10:18:53 Dither: triangular probability density function for 24-bit
  2022/03/26 10:18:53 Set volume: 0 +
  2022/03/26 10:18:53 Offload: resampler=disabled convolution=disabled
  2022/03/26 10:18:53 Initialization complete, starting audio engine
  2022/03/26 10:18:53 Teams: 1
  2022/03/26 10:18:53 Places: 1
  2022/03/26 10:18:53 Parallel threads: 8
  2022/03/26 10:18:53 Nested parallelism: 4
  2022/03/26 10:18:53 Parallel pipelines: 4
+ 2022/03/26 10:18:53 WASAPI output engine running...
  2022/03/26 10:18:53 WASAPI output period time set
  2022/03/26 10:18:53 WASAPI output open audio endpoint GUID: {0.0.0.00000000}.{03ede157-308f-4e33-9343-9bd348039889}
  2022/03/26 10:18:53 WASAPI output currently using: 'Speakers (3- Soekris dac1xx1)'
  2022/03/26 10:18:53 WASAPI output type: Speakers
  2022/03/26 10:18:53 WASAPI output engine initialized
  2022/03/26 10:18:53 WASAPI output device period (default/min, ms): 10/3
  2022/03/26 10:18:53 WASAPI output using device default WASAPI period size
  2022/03/26 10:18:53 WASAPI output trying to use 10 ms for WASAPI period size.
  2022/03/26 10:18:53 WASAPI output initialize audio device using 384000/24 (32), 2 channels
  2022/03/26 10:18:53 WASAPI output buffer size 3840
  2022/03/26 10:18:53 WASAPI output engine started at 384 kHz / 24 bits / 2 channels, 3839 frames buffer (2/2 channels)
  2022/03/26 10:18:53 WASAPI output engine starting at: 384000
! 2022/03/26 10:18:53 clHQPlayerEngine::Execute(): clStreamReaderHTTP::Read(): read max loop
  2022/03/26 10:18:53 Stop request (reset)
& 2022/03/26 10:18:53 Stop...
  2022/03/26 10:18:54 WASAPI output engine uninitialized
- 2022/03/26 10:18:54 WASAPI output engine stopped
- 2022/03/26 10:18:54 Playback engine stopped
& 2022/03/26 10:18:54 ...stopped
  2022/03/26 10:18:54 Set volume: 0 +
- 2022/03/26 10:18:54 Control ended from 192.168.198.105:51123
+ 2022/03/26 10:19:01 Control connection from 192.168.198.105:51124
+ 2022/03/26 10:19:02 Control started from 192.168.198.105:51124
& 2022/03/26 10:19:02 Stop...
& 2022/03/26 10:19:02 Playlist clear
& 2022/03/26 10:19:02 Playlist add URI: http://192.168.198.105:30000/929849f27bf94fb9912a2429cd0a77b2/stream.raw
  2022/03/26 10:19:02 Offload: resampler=disabled convolution=disabled
& 2022/03/26 10:19:02 Play
  2022/03/26 10:19:03 Stream buffer 7056000/70560
  2022/03/26 10:19:03 Offload: resampler=disabled convolution=disabled
+ 2022/03/26 10:19:03 Playback engine running
  2022/03/26 10:19:03 Rate or blocksize change triggered
  2022/03/26 10:19:03 Rate: 44100, block size: 9408, frame size: 588
  2022/03/26 10:19:03 Block size: 9408 (sample: 8)
  2022/03/26 10:19:03 Playback engine ratio: 8.70748
  2022/03/26 10:19:03 Filter: poly sinc
  2022/03/26 10:19:03 Dither: triangular probability density function for 24-bit
  2022/03/26 10:19:03 Set volume: 0 +
  2022/03/26 10:19:03 Offload: resampler=disabled convolution=disabled
  2022/03/26 10:19:03 Initialization complete, starting audio engine
  2022/03/26 10:19:03 Teams: 1
  2022/03/26 10:19:03 Places: 1
  2022/03/26 10:19:03 Parallel threads: 8
  2022/03/26 10:19:03 Nested parallelism: 4
  2022/03/26 10:19:03 Parallel pipelines: 4
+ 2022/03/26 10:19:03 WASAPI output engine running...
  2022/03/26 10:19:03 WASAPI output period time set
  2022/03/26 10:19:03 WASAPI output open audio endpoint GUID: {0.0.0.00000000}.{03ede157-308f-4e33-9343-9bd348039889}
  2022/03/26 10:19:03 WASAPI output currently using: 'Speakers (3- Soekris dac1xx1)'
  2022/03/26 10:19:03 WASAPI output type: Speakers
  2022/03/26 10:19:03 WASAPI output engine initialized
  2022/03/26 10:19:03 WASAPI output device period (default/min, ms): 10/3
  2022/03/26 10:19:03 WASAPI output using device default WASAPI period size
  2022/03/26 10:19:03 WASAPI output trying to use 10 ms for WASAPI period size.
  2022/03/26 10:19:03 WASAPI output initialize audio device using 384000/24 (32), 2 channels
  2022/03/26 10:19:03 WASAPI output buffer size 3840
  2022/03/26 10:19:03 WASAPI output engine started at 384 kHz / 24 bits / 2 channels, 3839 frames buffer (2/2 channels)
  2022/03/26 10:19:03 WASAPI output engine starting at: 384000
! 2022/03/26 10:19:03 clHQPlayerEngine::Execute(): clStreamReaderHTTP::Read(): read max loop
  2022/03/26 10:19:03 Stop request (reset)
& 2022/03/26 10:19:03 Stop...
  2022/03/26 10:19:04 WASAPI output engine uninitialized
- 2022/03/26 10:19:04 WASAPI output engine stopped
- 2022/03/26 10:19:04 Playback engine stopped
& 2022/03/26 10:19:04 ...stopped
  2022/03/26 10:19:04 Set volume: 0 +
- 2022/03/26 10:19:04 Control ended from 192.168.198.105:51124
  2022/03/26 10:19:08 Store GUI state
& 2022/03/26 10:19:08 Playlist save: C:\Users\xxxxxxxx\AppData\Local\HQPlayer\current.m3u8
  2022/03/26 10:19:08 Shutting down...
* 2022/03/26 10:19:08 Exit

This is one of the cases where HQPlayer is not getting data properly from Roon and gives up.

We are looking into this.

Any software updates between things working and not working? Of course Windows has tendency to update itself without telling.

Thanks for looking into this, Jussi.

Last updates in Windows Update log are 2022-03-09, but as you say there may be something regardless.

The reason I am running Roon Core in a VM is I have a dual boot home/work setup. I’ll flip over to the work partition and see what that does. All was fine yesterday on the work partition.

OK, the work partition seems to be free of this issue. I notice that I am running HQP Desktop 4.17.1 on the work partition, so I will try a downgrade on the troublesome one and report back.

OK, downgraded to 4.17.1 from 4.17.2. Deleted all the HQP folders in Program files and %LOCALAPPDATA%, so a fresh install.

HQP asked for the license, license import worked fine. I then tried to set the output, and there were no ASIO or WASAPI sources listed. I tried an import which didn’t fix it, though no error was thrown. So I did a clear data and a restart and the endpoint lists were populated.

So far so good…it seems there may be something in 4.17.2 causing this, as I am unable to reproduce the behavior. All is working as expected now.

The only other thing I did recently (maybe two days ago) was try Network Audio Daemon for Windows. After switching settings back to use HQP–>WASAPI directly there was a bit of instability - it didn’t want to use the configured filter and shaper for saome reason, but a clear data and import of settings sorted that, so not sure if it’s got anything to do with it.

Let me know if you want me to reproduce any of this and send logs etc…happy to assist.

In 4.17.2 I disabled extra network buffer for Roon source with the assumption that both are within the same high speed local network. This reduces some delays on Roon <-> HQPlayer interoperation and shouldn’t cause any issues. But seems like this exposes some rare issue sometimes. We are trying to figure out why it happens.

1 Like

I too am getting lots of “Roon lost control of the audio device” errors with HQPlayer desktop version 4.17.2 especially with high bitrate PCM files. Never had this problem with V4.17.1 or earlier versions. I am running Roon core on a QNAP NAS.

Unfortunately the same behavior on my system, so I returned to version 4.17.1 and now it’s perfect.

I’m getting dropouts with Qobuz and Roon which will result in this, which makes sense if the stream from Roon is dropping out or stuttering.

I have a notion having Roon output to a virtual audio cable and feeding that into HQP may stabilize things and point the finger firmly at Roon. I’ll see if I can do some playing around with it over the weekend.

This is not a satisfactory workaround as rate changes won’t be catered for, or will be resampled in the VAC which is low fidelity, but as a diagnostic tool it may be useful.

OK, the 18.1 updates corrects for the dropouts, being much more tolerant of the Roon stream issues. Thanks, @jussi_laako for your efforts in compensating for this. I recognize that it must be frustrating to have to do so.

Hopefully you and the Roon devs can isolate the issue(s) leading to this.

1 Like

I also get the same dropout behavior for any version after 4.17.1. @jussi_laako I’d love to be able to upgrade to the latest versions. Can we get an option to enable the extra network buffer for Roon?

No, because it will screw up the Roon position display and many other aspects. Roon is not like regular streaming you have with HQPlayer Client, or UPnP. It is a realtime audio feed from Roon to HQPlayer where you want to have a little buffer as possible.

When it comes to internet streams and such, it is up to Roon to do the buffering. When you are playing through Roon, HQPlayer doesn’t know if you are playing internet stream, or a file from a local disk.

If you have streaming problems (I haven’t experienced such in my testing), you can also use Qobuz with standalone HQPlayer though, you don’t need to go through Roon. That way you get all the buffering options (two options with freewheel being current default).

Thanks for pointing me in the direction of buffering options. I seemed to have resolved the issue by increasing the HQPlayer “Buffer time” to 250ms as well as increasing the Roon “Resync Delay” to 500ms.

2 Likes

so, @jussi_laako, does that make sense that increasing those HQP and Roon buffer values will have a positive effect on the “roon lost control of the audio device” errors?

Hadn’t happened for the longest time, but now it seems to be happening lately, so I’d love to find the magic bullet to fix it.

I’m not sure about Roon settings. At HQPlayer side, “Buffer time” specifies size of the DAC’s hardware buffer (if driver allows adjusting it - macOS doesn’t and some ASIO drivers don’t either).

It would be interesting to know what errors end up in HQPlayer log when such happens. Some network timeout perhaps?

next time it happens I can look at HQPlayer. Are the log files something I could see or send you or paste here?

Please rather send it over email to me, it adds unnecessary noise on the thread.

On Windows, log file is at “%LOCALAPPDATA%\HQPlayer” and on macOS and Linux at “~/.hqplayer”. It is plain text file you can easily read.

On HQPlayer Embedded there’s a link in web interface to view the log file.

1 Like

ok, it just happened, so I went to the mac where HQP resides.

In that location I see five .xml files and one .m3u8 file.

Nothing called “log”

Do you have logging enabled in hqplayer desktop app? It’s in the preferences at the bottom near the multicore dsp and adaptive output rate.

2 Likes

I do now! Thank you @ffk

2 Likes