DSD audio over USB

XCore Project reviews, ideas, videos and proposals.
New User
Posts: 3
Joined: Mon Jan 30, 2012 4:54 pm

DSD audio over USB

Post by Stef »

Version: 1.1
Status: Beta
License: Custom Licence
Download: /files/project_builds/DSD over USB v1.1.zip

The project implements the open standard proposed by DCS for the playback of DSD encoded audio over USB without the need of special driver as presented by Andreas Koch (Playback Designs), Andy McHarg (dCS), and Rob Robinson (Channel D) in release version 1.0.

The DSD audio data are encapsulated in 176.4kHz/24bit PCM samples with an alternating set of "headers" that enables the compatible devices to recognize the DSD signal and the incompatible ones to output a low volume harmless noise.

More info in DCS' document "Playback of DSD Audio over USB – A Suggested Open Standard" and Positive Feedback issue 59 article "Announcing the DSD Open Standard Movement".
The project is implemented on the USB Audio 2.0 Ref Design (XS1-L1) two channel interface and it is based on the original 3.3 source code provided by XMOS.
The XS1-L1 outputs DSD signals on the I2S pins with the following mapping:

1. Bit Clock - SCLK

2. Left channel DSD data - LRCK

3. Right channel DSD data - DAC DATA
Current State:

It accepts all sampling rates and changes DSD/I2S on the fly. (tested with a Sabre32 DAC[the same pins accept I2S & DSD] - works fine)
At 176.4kHz sampling rate the output is set to PCM or DSD based on the first 8 bits of each set of stereo samples as described in the standard version 1.0.

By default it is set on PCM output and only if 32 consecutive DSD-marked samples are detected it switches to DSD output. (tested with in-house modified mpd - works fine)
SPDIF output and ADC Inputs are disabled - only I2S output is functional. (resources reservation)
DSD output is clocked at 2822400 bits per sec.
Compiled using XDE 11.2.0 (use this or more recent version to upload binary to the device)
It accepts 32bit integer samples.
It accepts 384kHz PCM. (352.8kHz are not supported due to hardware limitations)

Extra features available on custom firmware*:

22.5792MHz clock instead of 11.2896MHz
352.8kHz support
SPDIF output up to 192kHz (176.4kHz included)
DoP v1.1 support
DSD128 output clocked at 5644800 bits per sec.
DSD128 support using 352.8kHz DoP v1.1 encapsulation.
DSD indicator pin.
Separate DSD - I2S signal pins.

*contact the author for details & licensing
Compatible playback software:

1. none seamless DSD playback (version 1.0 compatible) application at release time.

2. any application that playbacks wav files, with a properly transcribed dsd file to 176.4k/24 wav file according to the standard. (tested - works fine - Test File std v1.0. Use this tool DSDtoPCM encapsulate Tool v1.1.)

WARNING: Requires bitperfect output (no volume adjustment, signal processing, resampling etc)!


1. There are many applications available nowadays (free & commercial) for all major operating systems.

2. New version of DSDtoPCM encapsulate Tool corrects few bugs and adds support for DSD128 files (encapsulated @352.8k/24b)

The provided binary file may be redistributed and used only in non-profit and non-commercial applications, and with the proper acknowledgement to the present project.


a)The author reserves all rights not expressly granted.

b)You may not modify the binary file.

c)You may not profit from any use of the binary file.

d)You may not decompile or reverse engineer the binary file.

For any other usage and the detailed license contact the author.

1. Test with standard v1.0 compatible applications whenever they are released...

2. Optimize code (if possible)


1. Done. No problem found.

2. Done. Room for further improvement and more features addition.
*Special thanks to the beta tester N.D.*

Before using it read carefully all the description. Usage beyond the specified may have undesirable effects.


User avatar
Respected Member
Posts: 298
Joined: Thu May 12, 2011 11:14 am

Post by phalt »

Pun intended.
I like the warning about damaging hearing!
User avatar
XCore Expert
Posts: 850
Joined: Thu Dec 10, 2009 9:20 pm
Location: Bristol, UK

Post by Ross »

hmm, need a way to switch the device into DSD mode I guess... A different interface maybe?
User avatar
Experienced Member
Posts: 112
Joined: Sun Sep 05, 2010 3:39 pm

Post by nassim »

good project and demonstration of using XMOS as DSP for audio application, and hope that you continued to fix and update all warning cases :)
it look that a great work has been done in this project and thank you for sharing us :)
User avatar
Experienced Member
Posts: 112
Joined: Sun Sep 05, 2010 3:39 pm

Post by nassim »

nice photo, if you can a just small video demonstration that will be great
Posts: 1
Joined: Tue Feb 07, 2012 9:27 pm

Post by gergoos »

Stef what happens when u play a FLAC of your DSD-packed WAV?
wud be a great format if that can be made to play seamlessly.
New User
Posts: 3
Joined: Mon Jan 30, 2012 4:54 pm

Post by Stef »

Any lossless compression scheme (i.e. flac, alac etc) will not alter the data of the WAV file, hence it will play correctly.
But it is not efficient to increase the size of a DSD file 50% (for every 16bits, 8bits are added) and then compress it.
The proper way is to make the playback software DSD aware.
In any way there is a lossless DSD compression scheme: DST.
I believe soon there will be proper plugins for the most popular applications.
Waiting for the standard's finalization...
Posts: 1
Joined: Mon May 14, 2012 8:05 am

Post by tangram »

I ripped some SACD's with a PS3 and converted them with the DSDtoPCM encapsulate Tool. It works like a charm...
Unfortunately I'm not able to play them ;-)
Is there a timeframe when some Firmware is capable of playing those files, espacially with a dCS Debussy?
And by the the way, great idea and great work!
Posts: 1
Joined: Sun Jun 24, 2012 1:02 pm

Post by pete001 »


just tried to flash the downloaded DSD file to my XS1-L1 USB Audio 2.0 device, but I always get the error message.

DSD: Error: F03005 (XB handler) Header tag incorrect

Flashing of usb_audio.xe from XMOS works without any problems. I tried xflash 11.2.0' (build 1871) and the newest one, but no success.

I am totally new to the XMOS device, so any help would be welcome.

Stupid me! Because of missing .zip extension I didn't realized that the file is an archive!
Now it works! :-))
Posts: 8
Joined: Sat Mar 31, 2012 3:56 pm

Post by gaboca0527 »

Hi Stef,

Please help me!
I downloaded this usb-audio.xe to the XR USB AUDIO 2.0 Reference Design circuit.
If I play an encapsulatd pcm file in Foobar player, I can hear the music, but there is also a huge white noise under the music. Noise level is almost the same as the music level.

Of course I use foobar with maximum volume and without any sound process.
I use CS4398 DAC, but if I connect directly an analog amplifier to the DSDA or to the DSDB channels, I also can hear the music and the same white noise. So in my opinion the noise was generated in the xmos circuit, does not depend on the CS4398 circuit.

One more thing.
After flashing I receive an error message:
Error: F03098 Factory image and boot loader cannot be write-protected on flash device on "node0".
Site 0 has finished.
xflash succeded.
What does it mean?