DIYINHK XMOS Multichannel 32ch USB to/from I2S/DSD SPDIF Interface

The specific chip used by DIYINHK is the middle-of-the-line XU216-512 which corresponds to some pretty serious horsepower: 16 logical cores for a total of 2000 MIPS, 512KB SRAM, 2MB FLASH.

So, what can we do with all this horsepower you say? It’s simple. Tons of channels of high-resolution audio. Plus I2S inputs, besides the usual outputs. Plus DSD1024. Plus use a cool OLED display as a VU meter.

The board I bought came with the default firmware, which supports:

6 channel 384kHz I2S output

4 channel 384kHz I2S input

spdif output

OLED VU meter

Volume up/down control button

Here is a video of it in action:

A maximum 32 channels can be supported with the right firmware (not provided by DIYINHK).

The board (a 4-layer design, btw) comes with three high quality NDK NZ2520SD Ultra low phase noise oscillators. There is provision for powering two of the oscillators externally, by removing a ferrite bead and applying power through one of the headers.

The board is not USB powered. It needs a relatively beefy 3.3V power supply, capable of providing a maximum of 800mA (even though a typical power consumption is in the neighborhood of 570mA). Beware, a weak power supply or an inadequate connector will cause to board to not power up.

It comes with a fully featured Thesycon driver for Windows. Linux & Mac OS don’t need a driver.

An interesting detail is that the Windows 10 driver that is available only supports stereo operation and no multichannel (v2.26). If you want multichannel you’ll have to go back to Windows 7 (v1.67) (or perhaps Linux or Mac OS, it isn’t clear..).

DIYINHK’s site says that the latest available driver is v2.26, but I did not find such a driver in their downloads section, so I emailed them about it. They sent me a link for an even newer driver, v3.20.

The board has a ton of exposed I/O, split into three 0.1″ headers. These are the pinouts, according to DIYINHK:

Now, if these pinouts look somewhat cryptic to you, you are not alone. I will try to clarify things a bit.

This is the most interesting header:

I have marked in red the power supply input. It is a good idea to use all of the pins for making the connections, since ~800mA is nothing to sneeze at.

The pins in green are the I2S outputs. For 2 channel operation you will need to connect the DATA, BCK & LRCK pins. The rest of the output channels should be available at pins DO2, DO3 and DO4. I say “should” because I haven’t tested them. I should repeat that multichannel operation with the provided driver is only possible at the moment with Windows 7 (and possibly Linux & Mac OS).

The pins in yellow are the I2S DATA inputs. For 2 channel operation you will need to connect the DIO1, BCK & LRCK pins. The rest of the input channels should be pins DIO2, DIO3 and DIO4. The same multichannel restrictions I mentioned above apply to the I2S inputs.

The OLED screen is connected to one of the side headers, like this:

The left header is the XSYS connector for uploading firmware to the XMOS.

An easy way would be with an LM317 based regulator. Just be sure to supply it with a low enough DC voltage at its input so that it doesn’t throttle do to the large input to output voltage difference. A good choice of input voltage would be ~7VDC. But a Salas Reflektor-D would make for a much better power supply, just beware that you will be running it at its thermal limits, with a ~800mA CCS. A good solution would be the new Ref-D mini with its mosfets mounted to a bigger heat sink or the case’s bottom (if it’s big enough).

Regarding the F1, I’m not sure it’s a better sounding board. I can’t really theorize. I can see that it has galvanic isolation, a bad thing if you will be using it with the Soekris 1021 but good if you will use it with the 1121.

as far as using it to supply I2S signal from a PC goes is there any preference which one to use? i thought the things that you have done with Arduino are really cool and I want to use it. would it not be possibe with the stereo version?

For use with a DAC I would probably go with the stereo edition (blue board). Regarding the Arduino stuff, it doesn’t really make a difference. The Arduino doesn’t care which USB to I2S interface is used.

will it do to use with the XMOS usb to I2S blard (the blue bloard)? the things that you said about the power supply mostly went over my head. i searched the Silas reflector and it only found a group buy from 2014 🙁

This power supply will not be enough – it can only do up to 500mA at 3.3V. Look for one based on the LM317. The Salas Reflektor-D has become a classic high performance shunt power supply but it is a bit more challenging to build (and pretty expensive compared to an LM317 reg). The group buy that you found is probably still going, if you feel up to it.

Yes, I tried the latest drivers, but no multichannel support. I asked Diyinhk, but they tell me to mod the firmware for enable DSD multichannel. I have not studied a lot, but it seems to be more than one way to upload the firmware. The 1,67 driver also has a tab for firmware upload…
There ia also some info here: http://www.xcore.com/forum/viewtopic.php?f=47&t=4458&start=0

Can I have your help in a matter of connecting a DIYINHK multichannel board?

I’m attempting to hook an Alientek D8 digital amplifier to this board via i2s and
it hasn’t worked ‘out of the box’ …
I thought there was good reason to believe the connection would be straightforward:
the D8’s USB input connects directly to an XMOS based daughter board and removing the board revealed labels next to the pins!
I got a power supply with the DIYINHK board and soldered both in my amateurish way and
they seem to work: 8 channels (4 stereos) are accessible through a
suitable /etc/asound.conf configuration on a RPi3, and the VU meter shows a PCM signal getting through.
so that end looks ok.
and the D8 player itself plays (with the Xmos daughter board in place).

I also tried linking GND’s directly.
then I tried linking MCK >> MCLK …. I guessed that the daughter board was feeding the main board pcb with a high frequency clock and that the DIYINHK should substitute for that.
but I do not know, in fact, whether MCLK is an input or output.

there is one more pin to the daughter board that I have not identified: SPD.

so nothing working for now. I do not have an oscilloscope. is there an oscilloscope android app that I could, at least, make simple ‘signal present’ checks with ?!
apart from suspecting my dodgy soldering the only other thing I can think of is a master/slave mismatch on the i2s. My only reason for thinking this not so likely is that both
the daughter board formerly in the D8 and the DIYINHK board are XMOS so perhaps configured the same way.

Hi there kris,
Your wiring looks OK so the first thing I would check would be the frequencies of the original XMOS’ oscillators. If they’re different than the DIYINHK’s oscillators, you have a problem. Considering that the original XMOS board had on-board oscillators I would assume that it is providing the MCLK to the DAC board.

I’m afraid that most of these signals are too high to be detected by any PC’s sound card, much less by a smartphone’s mic. There is no substitute for an oscilloscope in this case.

thanks for the feedback. I’ve asked on diyaudio for anyone to measure their D8. If nothing comes of that I may buy a usb oscilloscope with android interface. but I live in hope I shall not have to!
meanwhile, I have the driver source and am on the verge of setting up the dev environment.
do you know whether the Xcore Xmos must operate with only particular clock frequencies?
if, as you suggest, the frequencies are different, is it likely the DIYINHK Xmos could have its master clocks factored up/down via software?
thought I’d ask before plunging into a dedicated xmos forum!
cheers.

I have almost zero experience with the XMOS environment, but I’ve read-up a bit on their USB Audio 2.0 library and it seems that you can factor down your master clocks via software, so using 44MHz instead of 22MHz (or the opposite) should be OK.

thanks for that. read it.
however, I think it unlikely the clocks are other than 24/22.
there was one pin labelled SPD which I couldn’t identify.
could you hazard an educated guess as to it’s function?

Doubtful. While specc’ed at 800mA, the ADM7150ARDZ can only achieve that when its input-to-output voltage (dropout voltage) is very low, i.e. under 1V. Otherwise, it will throttle due to thermal constraints.
So, if you can manage to feed the board with precisely the right AC voltage necessary for outputting 3.3V with less that 1V dropout, you may be in luck. But that would mean a custom transformer outputting ~4V, so it would probably be easier to just choose some other power supply.

Oh, that probably has to do with the newer batches using switching power supplies for the core of the XMOS. In that case you might be ok with the first diyinhk PS that you linked. The guys at diyinhk can definitely clarify that.

“”””The board (a 4-layer design, btw) comes with three high quality NDK NZ2520SD Ultra low phase noise oscillators. There is provision for powering two of the oscillators externally, by removing a ferrite bead and applying power through one of the headers.””””

What V and mA they would need each? The same 3.3 (800vA) ? Did you try this option?