Thank you for your donation!

mpd not outputting native DSD to Fiio DAC
Hi guys,

Been using my Pi3 with a Allo Boss 1.2 DAC on my main HiFi for a couple of years, to be honest the DAC is some orders of magnitude below the level of the rest of the system but it's been good enough for the time being. Lately I've been getting itchy for a more suitable DAC which I'll be wanting to connect to the Pi via USB.
With this is mind I thought I'd get round to playing about with one of my portable USB DAC/headphone amps hooked up to the Pi, just to see it working with DAC over USB. It's a Fiio Q1 MkII which supports 32/384PCM and upto DSD256 natively. Works and sounds pretty brilliant in comparision to the Boss so it might stay for now but that's another thing.

Problem is mpd isn't outputting native DSD to the DAC, this is immediately clear as the DAC has a DSD indicator light which isn't lighting up. This works fine when playing DSD with USB Audio Player Pro on Android for example.

In Moode's MPD Config screen, Volume Control, DSD over PSM and SoX resampling are disabled.
MPD's documentation for DSD doesn't bring up any gotchas either.

This is what Audio Info shows when playing some DSD 128.

Audio information
Input / Output
Source:      NAS/Music/Jazz, Funk/Louis Armstrong - Mack The Knife (1952-2017) [DSD128]/09-High Society Calypso.dsf
Encoded at:      DSD128, 1 bit, 11.288 Mbps Stereo
Decoded to:      PCM, 32 bit, 384 kHz, Stereo, 24.576 Mbps
Destination:      Local
Output rate:      32 bit, 384 kHz, Stereo, 24.576 Mbps
DSP operations
Volume ctl:      
Resampling:      off
Polarity inv:      off
Crossfade:      off
Crossfeed:      off
Parametric EQ:      off
Graphic EQ:      off
Replaygain:      off
Normalize vol:      off
Chip options:      None
Audio Device
Device:      USB audio device
Interface:      USB
Formats:      U8, S16_LE
Platform:      Pi-3B 1GB v1.2

So is this mpd? alsa? Does anyone have any advice or tips for where to look next?
To determine what MPD/ALSA thinks the USB audio device supports run the command below while a dsf file is playing and MPD DSD over PCM setting is set to No and resampling is Disabled.

cat /proc/asound/card1/pcm0p/sub0/hw_params

If native DSD capability was detected then the value of the format: field should be DSD_U16_BE or DSD_U32_BE.

You could also try the command below. Run it after playback is stopped.

Thanks Tim,

So it seems that alsa's not recognising the Q1 as being DSD capable, bummer...

$ cat /proc/asound/card1/pcm0p/sub0/hw_params
format: S32_LE
subformat: STD
channels: 2
rate: 384000 (384000/1)
period_size: 32768
buffer_size: 131072

4) Digital USB Audio Class output interface hw:1,0 (or hw:Q1,0)
 - card name         = Q1                                                          
 - card label        = FiiO Q1                                                     
 - interface name    = USB Audio                                                   
 - usb audio class   = 2 - isochronous asynchronous                                
 - character device  = /dev/snd/pcmC1D0p                                           
 - encoding formats  = S32_LE, SPECIAL, S16_LE                                     
 - monitor file      = /proc/asound/card1/pcm0p/sub0/hw_params                     
 - stream file       = /proc/asound/card1/stream0
So reading up on alsa, turns out the "SPECIAL" encoding format is referring to DoP.
Enabling DoP in the mpd config makes that DSD indicator light up, this was unexpected as it works with native DSD on USB Audio Player Pro but there it is. At least mpd doesn't need to convert it in software now.

Thanks again.
Post the link to the ALSA information that describes the SPECIAL format. I'd be interested in reading it.

How do you know the other player is actually outputting native DSD bitstream? It could also be outputting DoP.
I just looked up USB Audio Player Pro. Here's a snippet from the product description



When you have a DAC capable of DSD (Direct Stream Digital), you can even play DSD (.dsf/.dff) files natively, providing a 1-bit digital stream (over PCM using the DoP protocol) like the Super Audio CD of past times! ...

Sure looks to me like it employs DoP also.

UAPP does do DoP and native but they are selectable options, native doesn't fallback to DoP if selected.
Selecting native DSD in UAPP works on the Fiio yet does not work on a DAC without native DSD support (like my Cyrus Soundkey for example).
It looks like both the FiiO DAC and the USB player software only support DoP but their product descriptions use the words "native DSD". I dunno what to make of that :-0
Oops, here's the link to the DAC FAQ. It appears that only DoP is supported.
Good find Tim, cheers.

Anyways, Im happy its working now.

Forum Jump: