DSD Playback with MPD and iFi Nano iDSD DAC

There is a relatively easy way to play DSD music on Linux.

What is required:

  1. iFi Nano iDSD USB DAC,
  2. MPD sound server,
  3. Sonore‘s SACD-Extract tool,
  4. recent Linux kernel (>=3.18) and ALSA lib (>=1.0.29)

iFi Nano iDSD USB DAC

This inexpensive battery-powered small DAC and a kind of headphone amplifier works as an external USB soundcard.

No special drivers needed, on Linux it goes well with ordinary snd-usb-audio.

The box supports both stereo PCM up to 32/384kHz and stereo DSD up to 11.2/12.4MHz, that is more that enough for the most audiophiles.

Don’t forget to update it’s firmware (available from iFi website, unfortunately firmware update works on Windows only).

Kernel and ALSA

Recent Linux kernels (>=3.18) and ALSA lib (>=1.0.29) have “quirks” needed to support of native DSD playback on some XMOS chips (Nano iDSD has a XMOS chip).

Without these “quirks” iFi Nano iDSD can do only DoP (DSD over PCM) playback.

Check ALSA and kernel version (as user), load USB audio driver (as root), and check if iFi Nano works:

~$ aplay --version
aplay: version 1.0.29 by Jaroslav Kysela <[email protected]>
~$ uname -r
4.0.5
~# modprobe snd-usb-audio
~$ aplay -l
...
card 1: AudioDOP2 [iFi (by AMR) HD USB Audio (DOP2],
device 0: USB Audio [USB Audio]
Subdevices: 0/1
Subdevice #0: subdevice #0

MPD sound server

Music Player Daemon understands both dsf and dff file formats, and supports native DSD playback, DoP, and on-the-fly DSD to PCM conversion.

MPD requires some patching to enable native mode with iFi Nano. Without this patch MPD with iFi Nano can do only DoP and DSD-to-PCM.

The patch for specific MPD version can be downloaded from Github.

Native DSD configuration for patched MPD:

...
audio_output {
type			"alsa"
enabled			"yes"
name			"Local USB iFi Nano iDSD"
device			"hw:1"
mixer_type		"none"
replay_gain_handler	"none"
auto_resample	        "no"
auto_channels	        "no"
auto_format		"no"
use_mmap		"yes"
dop			"no"
dsd_usb			"no"
dsd_native		"yes"
dsd_native_type		"2"
}
...

SACD extract tool

sacd_extract tool (a part of SACD-Ripper for PS3) extracts tracks from SACD ISOs, and converts them to dsf/dff files.

The application is open source, ready-made binaries for Windows and Linux can be found on the Internet. The source code can be downloaded from Github.

Compiling sacd_extract from source:

~$ cd sacd-ripper/tools/sacd_extract/
~$ cmake .
~$ make
~$ ./sacd_extract -h

Conclusions

All the above done, DSD playback goes very simply.

  1. Extract 2-channel dsf/dff files from a SACD ISO;
  2. Turn on iFi Nano;
  3. Start MPD;
  4. Enjoy!

PS: Besides iFi Nano iDSD some other USB DACs (e.g. iFi Micro iDSD) are suitable for native DSD playback as above — check for updates here.

Links: