XMOS 384Khz Asynchronous USB to I2S

This device uses the latest generation of XMOS processors, not used by any other maker as far as I know, which should be superior for 2 reasons. Firstly, it has the USB receiver built in (USB Physical Layer or USB PHY for short), not as a separate component, and secondly the USB (called the analogue node in the datasheet) uses a higher clock speed (48Mhz). In theory, these changes should allow greater timing accuracy and signal integrity, and thus lower jitter.

diyinhk xmos

It uses an LP5900 3.3V very low noise regulator and Fox Xpresso oscillators for the MCLK. The regulator is excellent; the oscillators (xo’s) are very good, but not the best you can buy (Crystek CCHD-957). However, the best cost US$30 each so this choice of xo is a good compromise between price and performance.

Very Good Design and Layout

Design and Layout

The datasheets for these XMOS chips declare that their device is designed for use with 2-layer PCBS like this one, to keep costs down. The chip code is not listed in XMOS’ part code list because the markings say it is an engineering sample. However, it’s size (1cm) means it is most likely similar to the XS1-U6A-64. So it seems it is a six-core, 500Mhz, 64K processor. The whole board is only slightly larger than my thumb.

The ground plane is continuous except for three very short traces, which are power connections.

The first is under the Atmel IC (AT25DF041A) and it connects pin 3 and pin 8 of the Atmel. The  BCLK output trace runs under the Atmel and connects to pin 2 before following a trace to the XMOS. Data and LRCLK run outside the Atmel and connect to pins 5  and 6  respectively, so it seems likely this power trace is in the ground plane under the BCLK trace. This trace is tiny and it’s easy to run a wire perpendicular across it by carefully removing some of the green solder screen around it and soldering in the bypass wire, as shown in the picture below. This is the pin out for the Atmel :

The second power trace is near CN1 and connects the 5V USB supply with the VSUP input pins. It crosses another supply line on the top side, which is the 1.8V supply for the 48Mhz xo, at an angle of about 45 degrees. There’s no need to do anything about this. The third power trace near CN1 is in the ground plane directly under the I2S MCLK trace. The easiest way to improve this is to cut the xo power trace on the top side so the trace in the ground plane is floating, then the trace in the ground plane can soldered into the ground plane. The cut power trace on the top side can be re-connected using a ferrite bead on the top side.

One other point to note is the absence of ferrites in the power supply lines for the xo’s, so I added one, as above, and another further back in the power trace, near the smaller Fox xo.  So, it is quite easy to improve the routing and provide a continuous plane under all the I2S traces, and although I have done this, it made no obvious difference to the sound quality.

DXIO Ground Plane

The board gets noticeably warm in use. This XMOS uses a 5V supply from the USB  into M1 M2 H1, and a 3.3V supply regulated by the LP5900 from the USB into M6 M7 L6. It can also use one 3.3V supply according to the datasheet. It has two DC-DC converters inside that create its internal voltage supplies. The whole board uses ~175mA largely independent of the sample rate, however, higher sample rates increase the temperatures. Other versions of the XMOS reportedly use over twice this amount because they use linear regulators instead of smps. The current through the LP5900 into VDDIO, the Atmel and the 2 Fox xo is about 50mA and the rest is for VSUP and the 48Mhz xo.

XMOS Power Circuit

XMOS Power Circuit

Power Requirements

Power Requirements. VSUP can be 5.5V to 4.5V or 3.6V to 3.0V

The two internal DC-DC converters have similar specs, and they are both switching converters working at 1Mhz, with huge amounts of ripple and noise. 10mV is worse than my laptop’s brick supply. The LP5900 is 6.5uV which is a factor of 1500 times, or 64dB, quieter.

Very Noisy Internal DC-DC Switching :(

Very Noisy Internal DC-DC Switching

Of course, I would like to reduce the noise levels. The first option is to try to filter the noise with some additional capacitance in parallel to the current 22uF caps, shown below. The current LC filter starts to become effective around 15Khz and has an impedance of 0.5 ohms.  http://circuitcalculator.com/lcfilter.htm

Two 22uF caps

Two 22uF caps. 1.0V on the left, 1.8V on the right.

The other option is to remove the 4.7uH coils and fit low noise regulators and then remove power into VSUP to turn off the DC-DC converters. This will be the most effective solution, if it is possible. The datasheet suggests M1 and M2 are the input for the internal converters. It also says that they can be turned off and on in the registry, but as I cannot change the code, I would have to try cutting the shared trace into M1 and M2, which is the trace between the GND markings above.

Perhaps more important than this is to isolate the output to stop the switching and processor noise from this XMOS and the PC getting into the DAC. For this, I have a high-speed board with an NVE 715 isolator, Potato flipflops, and 150Mhz Epson SAW oscillator to re-clock the signals.


The ASIO driver can be downloaded from the Ebay ad. I installed it on W7 64bit with no difficulties. I closed all programs, plugged it in, and installed from the setup.exe file. It did not need a re-boot.

As expected, with two warnings to click through :


In Foobar 2000, it shows the driver as version 1.63.0, same as above, and it’s possible to control buffer size, latency, channel mapping, volume, and power use. The boxes don’t allow firmware upgrades or changes to input/output streams or bit depth. It works with WASAPI event and push, and Kernel Streaming, but all are limited to 24bit, whereas the ASIO driver should be running with 32bits, which will mean Foobar’s volume control will have little or no effect on sound quality. However, I have yet to confirm if it is 32 or 24 bits, and there is conflicting info in the driver settings. The datasheet says it is capable of 32 bit and it could use this internally but it seems it has been limited to 24 bit to avoid errors.


Foobar 2000 Windows


Buffer needs 8192 samples for 192Khz sample rate



Volume and Power Settings

Volume and Power Settings

Clock Source = Current Sample Rate

Clock Source = Current Sample Rate

Streams are fixed. Only 24 bit output ?

Output Streams are fixed at 24 bit output.

Custom Channel Mapping is 32bit.

Custom Channel Mapping says ASIO is 32bit.

Control Panel Properties

Control Panel Properties

Control Panel Driver Details

Control Panel Driver Details

In addition to the driver, a Spy Tool is also installed and this allows real-time monitoring of the device.


Channels says 24 bit output


Streams says 16 in and 32 out (iso packets)

The package also installs a well-known tool to monitor DPC  latency monitor, to see how busy your PC is with the background services it is running. It isn’t so relevant for asynch USB devices like this and the CM6631A. It is important for synchronous devices like Tenor Te7022L, TI PCM2707, etc.

AMD A6 Quad Core Dual GPU 17" Notebook

AMD A6 Quad Core Dual GPU 17″ Notebook


I connected the XMOS to a DAC to test it. Unfortunately, after I did, the PC no longer detected it. I tried various connections and found the problem was Data and Ground connections.  It seems that if Data is connected, the XMOS is fussy about the sequence of powering up the DAC and the XMOS, and any shared ground connections.

After quite a lot of testing, I solved the problem by simply adding 20R impedance resistors on the I2S output, in the pads provided. Of course, I cut the traces between the solder pads before soldering on the resistors.

I am happy to say that it sounds very good, although it either needs to be isolated, or given clean power. I compared it to the same seller’s CM6631 and the XMOS has better sound definition, although it is more expensive, doesn’t have spdif output, and doesn’t have 32bit data. The XMOS’ noise levels affect the DAC’s sound quality so although I can hear great definition, there was also the effect of HF noise giving a slight rough edginess, which clean power and isolation will remove.