DSD Direct (again)

Hi gkkpch,
after a reinstall (necessary because the remotePI plugin had locked the system) the DSD are no longer played correctly.
This is the log: logs.volumio.org/volumio/3it4TIS.html
I hope you can figure out where the problem is
Thank you

Hi gkkpch,
one last information: obviously in DSD over PCM the DAC sounds and indicates the right frequency.

Hello everyone,
I got to try Volumio also on an Odroid C2. As with the Tinkerboard S, DSD direct can not be used here, only DSD over PCM works. It’s a real shame, because Tinkerboard and Odroid are much more performing than Pi 3. Is an update scheduled? Moreover, Volumio for Odroid is still at ver.2.513

As I started this thread, I would like to share my ultimate solution to the ‘DSD’ enigma.

First, I exchanged the USB DAC for one which I was sure it has native (Linux) DSD support (iFi Nano iDSD). And indeed it worked, albeit with some fast rate stuttering (like a vibrato effect) and other sonic artifacts, that got progressively worse as the bit rate increased (from DSD64, 128, 256), irrespective of source (LAN, USB, microSD). It didn’t matter whether I used mpd or Squeezelite: same results.
Eventually, I tracked the problem down to buffer settings, ALSA settings etc. I found that with the right combination of settings I could minimize the stuttering. Minimize but not eradicate. Those settings are critical but counter-intuitive, I think.
I tried several other distros, such as moode and piCorePlayer with much the same results.

I then decided to do away with a USB DAC and went looking for a DSD capable I2S DAC, that take the form of a HAT in case of the Raspberry. There are surprisingly few DAC Hats that support native DSD. Most of the well-known DAC HATs are strictly PCM only. (BTW: watch out for DACs with a TI 5100 series DAC chip (PCM5102), some claim DSD support but they just convert DSD to PCM).

Eventually I came up with the Aoide Ugeek DAC II Hifi Sound Card on AliExpress: 32-bit/384KHz PCM and native DSD256 supported. They offer special versions of Volumio with drivers for the DAC built-in, on SourceForge. They also manufacture other SBC add-ons, which are supported through SourceForge as well: sourceforge.net/projects/u-geek . The current Aoide ‘special’ Volumio version is v2.555, so it’s the latest release. I bought the DAC including the special case that holds both the RPI and the HAT for about EUR 60, so approx. US$ 67. The DAC chip is an ESS9018K2M. Note: there’s only one seller that offers HAT and case as a package.

Putting it all together was a cinch, the package included studs, Allen screws and a matching Allen wrench.

What can I say? It all works flawlessly without any stuttering or other sonic artifacts, even at the highest bit rates (DSD256 & DxD). Sound quality is very good: sweet, detailed, transparent, balanced, in a few words. In Volumio all you need to do is make the right settings in the Playback options: I2S DAC on, and select Aoide DAC II from the drop-down list Output Device and DAC model. DSD Playback Mode was already set to DSD Direct. Oh, I almost forgot: the DAC includes its own headphone amp with output jack as well (haven’t tried it).

I have one question for the developers, though: is the Aoide DAC II already included in the ‘standard’, official Volumio distro or do I need to keep getting the ‘special’ Ugeek version from SourceForge for new Volumio releases ?

Thanks to all contributors to this thread!
Cheers,
Marco

Really interesting product! If I can not solve the problem with my USB DAC I will buy an Aoide …

No, there is no support for it, this will only happen when the manufacturer (like all the other ones) gets driver support into the official raspberry kernel.
Otherwise we would have to add and maintain the driver ourselves, for which we do not have the resources.

Yes, I understand completely and your policy for this is 100% correct.

I don’t understand why they haven’t submitted the drivers for inclusion into the Raspberry kernel, or indeed the Linux kernel. Something proprietary going on, perhaps? But then, SourceForge is hardly the place for proprietary software, is it?

Anyway, I posted a request on their forum for inclusion of the drivers into the Raspberry and Linux kernels. Let’s see what happens, or if they respond at all.

Cheers,
Marco

Beware, though, whether the manufacturer can supply the right drivers for your system. On their SourceForge pages they give instructions for several different platforms but you’ll have to browse all the files to find the right files and/or installation method of the drivers.

As to the USB Audio issues on the RPI 3B+, I have come to the conclusion that USB Audio (officially UAC 2.0) for the RPI 3B+ is not a viable option if you want to play hi-res music files. The stuttering I mentioned in an earlier post, occurs regardless of DAC brand & model, AND regardless of system. I tested my USB DACs (7 different ones in the end) and they all support DSD Native and DSD DoP. The systems I tried included Volumio, piCorePlayer, moOde player, DietPi, Roopieee, Raspian, and one or two others. I fooled around with all kinds of settings, tried settings from other people etc. etc. Also tried several different power supplies (and measured voltage and current draw, which was very instructive). I played files locally and remotely (both ‘push’ and ‘pull’), using different media servers, different players (mpd, squeezelite etc). The outcome of all these experiments was always the same: stuttering and other sonic artifacts to varying degrees with hi-res music, usually starting at ≥ 24-bit/96KHz.

I surmise that the RPI architecture of the USB implementation is responsible for this. USB shares a bus with the Ethernet connection, leading to data packet collisions for example, and high data rate streams that overwhelms the shared bus. It could be worse with the 3B+ as the data rate on the bus has increased from 100 Mbit (standard 3B) to 300 Mbit (3B+).

There’s no problem with processor (CPU) load as I monitored it during all experiments. Even with the highest bit rates, CPU load was kept low and with hi-res music (up to DSD256) never even spiked over ca. 10-12 percent, and averaged below 10%. Using a resampler, transcoder or EQ, such as SoX, however, impacts the CPU load severely.

Still, if somebody has overcome said sonic problems with RPI & USB Audio, I would be very interested. After all, a DAC HAT will never have the same flexibility that a USB DAC offers.

Cheers,
Marco

Perhaps they did submit, but it happens that drivers for the kernel are not accepted because developers were not following the required coding standards, and developers were not willing to or did not have the resources to go the extra mile. Perhaps this is the case here, who knows?

Yes I‘ m curious too.

True. But the plot thickens, because the kernel drivers seem to be here on GitHub: github.com/howardqiao/aoide-dac-drivers . Included here are also the Volumio patches (up to v2.555). I did a (very) quick scan but couldn’t find any source files apart for a number of shell scripts and dacs.json, cards.json etc. entries (haven’t looked into all archives, just two or three). There are drivers for other Aoide gear, too.

Of course, like you say, they may have been rejected for some reason, though I have seen some seriously crappy and/or incomplete drivers been admitted to the Linux kernel (Pioneer N-50A comes to mind…, I hope I don’t offend anyone…). From a user standpoint I can’t fault the Aoide drivers so far. But that hardly counts for anything when it comes to adhering to any standards, understandable (and necessary!) but sometimes standards stand in the way of innovation. WAY off topic, sorry for that.

I’ll try to stay on top of this, and inform you if anything happens here. Meanwhile, I’m one happy camper with Volumio & Aoide DAC!

Cheers,
Marco

Hello gkkpch,

I’ve tried again with the lastest version of Volumio but now it wont even start a playback with DSD files.
Maybe the folowing information can help:

NAGRA DAC at usb-0000:00:1a.0-1.1, high speed : USB Audio

Playback:
Status: Stop
Interface 1
Altset 1
Format: S32_LE
Channels: 2
Endpoint: 1 OUT (ASYNC)
Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000
Data packet interval: 125 us
Interface 1
Altset 2
Format: SPECIAL
Channels: 2
Endpoint: 1 OUT (ASYNC)
Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000
Data packet interval: 125 us

As a reminder I’m on a RPi 3B+

I really hope you can do something.

Thank you.

Tiago

Hi Marco,

I can confirm that DSD DIRECT is NOW working with build 2.565 with cubox / nuprime dac-9
the dac is now switching to d 2.8 or 5.6 (i see it on my led panel)

Thank you so much and sorry for my late reply…

Best regards, Yohan

(for other users who need to build for cubox i4:
git clone github.com/volumio/Build build
cd to /build and type in that case
./build.sh -b armv7 -d cuboxi -v 2.565

Latest version does not help me, state the exact version please.
This needs to be checked (I’m not doing RPI kernels).

Yes, nice to see confirmation.
But, this is platform dependent: this platform is cubox, with its own kernel.
Do not assume this as working on other platforms!!!

Yes, i know that Platform / kernel / Dac used is very important…
In my case, i can confirm that DSD direct is now working :smiley:

Sorry. It is version 2.565

Apologies for the delay reacting to this - somehow I missed your reply. I’m running Volumio on PI

Sorry, PI what?

Raspberry Pi 3 running 2.526

Despite Vendor ID 20b1 I cannot play back native DSD with iFi Pro iDSD. Just DoP.
The DAC display shows PCM 768 with every DSD audiofile (64, 128 and 256).
Playing the same files with wtfplay 0.7 (wtfplay-project.org), the DAC display shows the correct DSD sampling rates.

On Your DAC compatibility list I see iFi micro iDSD and nano iDSD but not Pro iDSD.
Can You add the Pro iDSD to the next X86 kernel?

Thank You

Best regards
klisse

Linux volumio 3.18.25 #4 SMP Mon Feb 12 18:30:53 CET 2018 GNU/Linux
Volumio for PC (X86/X64) Version: 2.575

lsusb
Bus 001 Device 002: ID 20b1:3009 XMOS Ltd

cat /proc/asound/card5/stream0
iFi (by AMR) iFi Pro iDSD at usb-0000:00:1a.7-1, high speed : USB Audio
Playback:
Status: Stop
Interface 1
Altset 1
Format: S32_LE
Channels: 2
Endpoint: 1 OUT (ASYNC)
Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000, 705600, 768000
Data packet interval: 125 us
Interface 1
Altset 2
Format: S16_LE
Channels: 2
Endpoint: 1 OUT (ASYNC)
Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000, 705600, 768000
Data packet interval: 125 us
Interface 1
Altset 3
Format: SPECIAL
Channels: 2
Endpoint: 1 OUT (ASYNC)
Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000, 705600, 768000
Data packet interval: 125 us