XMOS-based Asynchronous USB to I2S interface

It looks, that i solved the problem.

First thing - Buffalo II DAC has a switch at the digital input. It should be "ON" when you want connect spdif and should be "OFF" when you want connect i2s or dsd. On my dac the switch was in ON position ....

The strange noise dissappeared, but there was a break every 12 seconds when listening to SBT and every 20s when listening to Notebook.

I resetted completely SBT, installed new 7.8 beta firmware, than EDO app and than update to a newest kernel from Triode - all problems dissappeared.

I will test notebook in a few days, but it looks, that my SBT/WaveIO/Buffalo II are now correctly set and adjusted. :D:D:D :hohoho:
 
Lucian,

You wrote:
You can place another one there or I advice you to extend the
bypass network by adding more in parallel to lower the local impedance
.

What is your suggestion?
Well, not too much besides adding one-two more in parallel with values not too far from each other to avoid antiresonance effect. I would go on other decoupling scheme involving Murata and TDK products. I guess there are more than two years ago when I found some EMI filters that got my attention but are harder to solder for a regular DIYer and comes in 0603 package (imperial) with 4 electrodes. There's not such a footprint on actual WaveIO card. I still suggest to place your 3.3Vreg close to the isolator power pins. It will make your life much easier :)
Merry Christmas,
L
 
Last edited:
Member
Joined 2012
Paid Member
Hello,

it looks awesome! I would like to know if it's working fine with modern Linux kernels?
Is it detected as audio output device?
Anyone tried to get bit perfect output with bypassing the Pulse Audio?


Best regards :hohoho:


I am running linux kernel 3.3.2 in a Debian Pogoplug and it works fine with the WaveIO. i play music with alsa in MPD and it outputs bit perfect data as long as the bit rate is not specified in mpd.conf.
 
I am running linux kernel 3.3.2 in a Debian Pogoplug and it works fine with the WaveIO. i play music with alsa in MPD and it outputs bit perfect data as long as the bit rate is not specified in mpd.conf.

I hope you don't mind me jumping in here, but can I ask if you have tried high-res >=96k with the Pogoplug? Any pops or clicks? (Have you also verified that it is being detected as async. ie. Class 2 USB?)

(I had no end of problems with a Raspberry Pi, before I gave up, but I think that says more about the Pi's USB driver than anything else.)
 
Personally I gave up the Raspberry and took a mini-itx motherboard.

Me too! ;)

Yes, the ethernet on the Pi is via USB hub. I haven't found one person who has successfully got any Class 2 USB audio device working with Pi. Sure, you can fiddle around with alsa buffer settings until you are blue in the face and end up 99% there, a very occasional pop or click, but it seems impossible to get it perfect. There was a bug report where someone had debugged packet loss, USB was dropping packets under load, which would explain a lot.

I'd still be interested in hearing from anyone who has used the WaveIO successfully with more powerful ARM chips, like the Cortex 8/9, maybe with a Pandaboard or Beagleboard? Anyone?
 
Member
Joined 2012
Paid Member
I hope you don't mind me jumping in here, but can I ask if you have tried high-res >=96k with the Pogoplug? Any pops or clicks? (Have you also verified that it is being detected as async. ie. Class 2 USB?)

(I had no end of problems with a Raspberry Pi, before I gave up, but I think that says more about the Pi's USB driver than anything else.)


My tda1541a dac with I2S input supports 96 kHz max, so I have not tried higher sampling rate. However, definitely 96 kHz material passes through to the dac with no glitches.
 
Not sure at all, but it is possible that USB Audio Class 2, although recognized by recent Linux kernels, only works on i386 architectures, not ARM ones.

I have a CuBox (Marvell Armada 510 SoC) CuBox that performs very good - kernel and MPD are compiled for ultimate performance for WAV, AIFF and DSD. Base filesystem built with debootstrap.

Have also started the works for a iMX.6 quad core (Freescale) 2GB RAM system.
The 2GB RAM (4GB later) are "needed" for buffering / caching playlists in RAM...

These two systems have gigabit network and SATA.
Most of the other ARM systems do not have gigabit and SATA, and often have most of the IO implemented over USB and are thus not recommended for use with USB 2.0 audio adapters.
A USB connected network or USB connected HDD / SSD / Flash storage should be avoided...

EDIT: For optimal performance clock on USB adapter, USB clock on ARM board, ARM CPU and ethernet clocks are changed from the typical 300 ppm (up to 500 ppm) to custom 20 ppm / less than 1 ps jitter clocks.
Kernel are custom configured and USB / ALSA drivers are custom configured / patched and also MPD are custom configured and patched to allow for my configuring options.
 
Last edited:
My tda1541a dac with I2S input supports 96 kHz max, so I have not tried higher sampling rate. However, definitely 96 kHz material passes through to the dac with no glitches.

Any chance you could ssh to the device,

Code:
cat /proc/asound/card1/stream0

and post the output, while playing 96kHz? (You might have to change card1 to whatever index the WaveIO has been recognised at.)
 
Not sure at all, but it is possible that USB Audio Class 2, although recognized by recent Linux kernels, only works on i386 architectures, not ARM ones.

No reason why that should be the case. It shouldn't matter what the architecture is as long as the code for the usb driver is good. We know that the alsa driver works just fine with the card, as long as it is recent enough.
 
I have a CuBox (Marvell Armada 510 SoC) CuBox that performs very good - kernel and MPD are compiled for ultimate performance for WAV, AIFF and DSD. Base filesystem built with debootstrap.

Thanks, Ray. I'll order one. I'm not looking to run mpd, rather squeezelite, which is a software player that is controlled from Logitech Media Server (SqueezeBoxServer).
 
Well, not too much besides adding one-two more in parallel with values not too far from each other to avoid antiresonance effect. I would go on other decoupling scheme involving Murata and TDK products. I guess there are more than two years ago when I found some EMI filters that got my attention but are harder to solder for a regular DIYer and comes in 0603 package (imperial) with 4 electrodes. There's not such a footprint on actual WaveIO card. I still suggest to place your 3.3Vreg close to the isolator power pins. It will make your life much easier :)
Merry Christmas,
L

I guess you mean the Murata EMIFIL NFM/L/R/E range? excellent parts, they look like 4 terminal but are 3 terminal. they come in larger than 0603 these days, right up to 2220
 
Member
Joined 2012
Paid Member
Any chance you could ssh to the device,

Code:
cat /proc/asound/card1/stream0
and post the output, while playing 96kHz? (You might have to change card1 to whatever index the WaveIO has been recognised at.)




Luckit Luckit USB Audio 2.0 at usb-orion-ehci.0-1.1, high speed : USB Audio

Playback:
Status: Running
Interface = 1
Altset = 1
URBs = 8 [ 8 8 8 8 8 8 8 8 ]
Packet Size = 1024
Momentary freq = 96003 Hz (0xc.0018)
Feedback Format = 16.16
Interface 1
Altset 1
Format: S32_LE
Channels: 2
Endpoint: 1 OUT (ASYNC)
Rates: 44100, 48000, 88200, 96000, 176400, 192000
Data packet interval: 125 us