MPD with native DSD mode support

Hi all,

As you may have noticed, I have been experimenting lately with various DSD configurations.

Having a DAC with a DIYINHK usb to i2s interface which supports native DSD, I tried to bypass DoP and make it work in native mode.

Both latest rpi and udoo kernels support native DSD mode for various usb interfaces. You can explore latest dev rpi kernel tree here and see the supported devices: … b/quirks.c

In addition since alsa 1.0.29 there is native DSD support. I decided to test native mode (by disabling DoP option in mpd.conf plus an additional line) and it was not possible to make it work.

I had a conversation with the main MPD developer (Max) in MPD forum and he told me that DSD_U32_BE format needed for my usb interface is not currently supported by official MPD, which at the moment only supports DSD_U8. You can read the whole topic here:

The next step was to patch MPD 0.19.9 with this code:

Using the experimental package I created I was able to use my DIY DAC in native DSD mode.

I have already uploaded the PKGBUILD and all other files needed in order to create an Archlinux package: … native-dsd

There is no package yet uploaded. I will wait until MPD 0.20 is out in order to decide what exactly I will do.

My first choice will always be vanilla MPD. However if in next versions there’s still not support for all DSD formats needed, I will create an extra package for everyone that wants to try DSD reproduction in native mode and i place it in the unofficial Playground Repository.

I still can’t understand the advantages of native DSD, when there’s DoP protocol that can successfully transfer unaltered DSD, but anyway it’s up to us to experiment and decide.

Stay tuned!



PS. If you want to discuss about it, please visit Archphile forum!