Problem playing DSD files [solved: underpowered machine]


I’ve been trying out RoonServer and have some problems with playing DSD files.

DAC: Ayre QB-9DSD (DoP, max. DSD64)*
OS: Linux (Voyage Linux, slimmed down version of Debian Jessie)
Kernel: 4.5.2 (compiled latest stable to get Alsa 1.0.29)
Music files are stored on a local (e)sata drive
Computer: Soekris NET6501, 1.6GHz Intel Atom, 2GB memory.
Roon version: both server & client 1.2 64bit, build 128
DAC settings: set to max 24bits/192kHz/DSD64

Originally I had kernel 3.16.7 (Alsa 1.0.28) This was playing mostly fine (apart from an occasional hickup) at 44.1kHz/16bits. However, at PCM96, PCM192, DSD64 there were many hickups (short pause followed by a click). Interestingly, when using RoonBridge and RoonServer as a network client (and running RoonServer on a MBP-2011), all formats were playing fine on Linux/Ayre.

To get the recommended Alsa version 1.0.29 I had to compile a new kernel. I doubt any distribution is shipping with Alsa 1.0.29 currently, so I compiled kernel 4.5.2 which should include the latest version of Alsa. It seems that PCM192 files are playing fine now. However, the problem with DSD64 files remains unchanged (though maybe less).

Observations (notes):

  • Playing the same files via MPD ( works without a glitch.
  • Occasionally a DSD file plays without a problem, most of the time there are glitches as described. (sometimes every 10 seconds, sometimes once a song).
  • Now playing a number of DSD files without a problem (haven’t had that before). Went to Dac settings (forgot that will kick of the device [Transport: Roon lost control of endpoint], resuming play … and now the issue is back…
  • I don’t see anything suspecious in the logs of both RoonServer, and RAATServer (some notifications GOT/SENT/NAK, starting playback messages).
  • There is enough ram available, cpu ussage (for Roon related processes) is around 21% for DSD, which is higher that I’m used to, but shouldn’t be a problem.

Any idea on how to fix this?

Kind regards, Maarten

*) The dac is connected to the Linux computer (local playback)

That machine is woefully underpowered to run Roon Server. To run the MPD equivalent, run Roon Bridge on it and run Roon Server elsewhere. Roon Server is doing way more than MPD. Roon is doing database indexing, importing new content, metadata updates, metadata retrieval and processing, radio analysis, library metrics and heuristics, audio analysis for normalization, etc… all that and more is stuff MPD does not do.

Things may appear to work fine for small libraries and when idle, but as soon as Roon tries to do anything substantial in the background, your single core Atom is going to lose a timely context switch over to the audio playback. You will have endless troubles running Roon on a single core machine. The problem is not total CPU power… it’s all about the time slice given to Roon’s background processing, that isn’t given to anything else.

I know it is underpowered and I know Roon goes way beyond MPD, that’s why I’m trying it out. At the moment I haven’t got another Linux computer to test this setup with. Nonetheless, as for the reported issue, playing 192kHz files seems to require 50% more CPU usage compared with DSD64 and these files play fine. While I can’t be for sure the underspecified system is the root cause… it does seem odd to me. In addition, I do not see any relation between the issue and CPU usage as displayed by the command ‘top’.

Top doesn’t tell you about forced context switches. Top is a very bad tool to determine the impact on anything near-realtime.

The experience you are having is exactly what happens when the machine is underpowered. Specifically in this case, single-core.

Ok, fair answer. Thanks for your fast replies and this amazing piece of software!!!