Head-Fi.org › Forums › Misc.-Category Forums › DIY (Do-It-Yourself) Discussions › Any "drop in" solutions for asynchronous USB?
New Posts  All Forums:Forum Nav:

Any "drop in" solutions for asynchronous USB?

post #1 of 16
Thread Starter 

I understand that there isn't likely anything off the shelf that I could install into a DAC, but if anyone has had any experience taking apart commercial USB to Spdif converters, I'd love to hear from you.  Looking for a simple install (like jumpering output to input). 

post #2 of 16

I don't think there are.

 

Unfortunately the USB Audio Device Class Definition document is written in the most impenetrable style which seems intended to disguise rather than clarify how the system operates. This is not the first system I have encountered where you can read seemingly endless pages without achieving the faintest glimmer of understanding of what the authors are talking about. Canbus is another such system.

 

RS232 serial data is straightforward to understand. The data transmission can be controlled by dedicated connections such as RTS (request to send) and CTS (clear to send) or by software flow control characters (XON\XOFF). These make it easy to manage the data and clocks, which would otherwise be problematic, as differences in clock rate could soon accumulate to the point where transmission errors would occur. Data is sent faster than it can be used (by e.g. a printer) in bursts, and buffered. When the buffer approaches empty another high-speed frame of data is sent. This makes it possible for the clock at the receiving end to be totally independent of that at the transmit end.

 

When USB audio was designed, no consideration seems to have been given to making this most basic way of ensuring low jitter at the DAC the primary mode of operation, i.e. a low jitter clock located at the DAC. All the effort seems to have gone into making it possible to have NO clock at the DAC, other than a clock derived from the intrinsic timing embedded in the datastream.

 

This is a similar type of system to that which was adopted for S/PDIF and AES/EBU, although in these cases there is perhaps more justification, as in that case multiple devices in the system may be required to synch to the same clock.

 

Asynchronous USB is consequently difficult. The easiest assured way to implement it would be under USB Audio Class 2, because (as I understand it) the features supporting it are built into the driver. Asynchronous USB should also possible under USB Audio Class 1 (I think) but I have been unable to understand the definition sufficiently to exploit it.

 

This is the best of my understanding. As I said already the documentation surrounding these subjects is impenetrable in the extreme, and the guys who do understand it are so snotty it's impossible to get a direct answer out of them without thumbscrews.

 

USB Audio Class2 is not supported under Windows. It is supported under Linux and Mac OS. Consequently, if you want asynch USB under Windows you have no option but to buy a system with a custom driver. There are some systems out there such as the Xmos using the Thesycon driver, but they are expensive. I believe they're plug'n'play under Linux and Mac.

 

There is an asynchronous FIFO project over on diyaudio, I haven't dug into it, but I believe it does some kind of buffering and reclocking.

 

Dan Lavry (http://www.lavryengineering.com/splash.html) also has a reclocking DAC, I believe it is uprocessor based, and uses a buffering system with a low jitter VCXO whose frequency is adjusted infrequently by a 12-bit DAC to cause the buffer to empty and fill.

 

You might be interested to look at this solution http://wakibaki.com/audio.php#t1 which I designed a while ago. It is similar to the Lavry system, but instead of being microprocessor controlled it uses a comparatively simple finite state machine implemented in a CPLD to adjust the VCXO, again based on how full (or empty) the buffer becomes. A second CPLD clocks the information in. I never built this device, I just had the idea during an argument about asynch. USB so I wrote it up and wrote the VHDL to make it work in simulation as a proof of concept. I'm not actually convinced that jitter in regular USB systems is audible, and the work and cost involved in building it would be considerable, although I do have most of the components on hand.

 

w


Edited by wakibaki - 4/12/13 at 2:55pm
post #3 of 16

You can snag the Xmos USB 2.0 reference design from Digi-key....

 

http://www.digikey.com/scripts/dksearch/dksus.dll?vendor=0&keywords=880-1017-ND

 

 $150 is a little expensive and if you're looking for just a S/PDIF out you won't need half of the features that are built into the board but it's kinda fun to play with. :)


Edited by MisterX - 4/12/13 at 11:13pm
post #4 of 16
Thread Starter 
Quote:
Originally Posted by wakibaki View Post

I don't think there are.

 

Unfortunately the USB Audio Device Class Definition document is written in the most impenetrable style which seems intended to disguise rather than clarify how the system operates. This is not the first system I have encountered where you can read seemingly endless pages without achieving the faintest glimmer of understanding of what the authors are talking about. Canbus is another such system.

 

RS232 serial data is straightforward to understand. The data transmission can be controlled by dedicated connections such as RTS (request to send) and CTS (clear to send) or by software flow control characters (XON\XOFF). These make it easy to manage the data and clocks, which would otherwise be problematic, as differences in clock rate could soon accumulate to the point where transmission errors would occur. Data is sent faster than it can be used (by e.g. a printer) in bursts, and buffered. When the buffer approaches empty another high-speed frame of data is sent. This makes it possible for the clock at the receiving end to be totally independent of that at the transmit end.

 

When USB audio was designed, no consideration seems to have been given to making this most basic way of ensuring low jitter at the DAC the primary mode of operation, i.e. a low jitter clock located at the DAC. All the effort seems to have gone into making it possible to have NO clock at the DAC, other than a clock derived from the intrinsic timing embedded in the datastream.

 

This is a similar type of system to that which was adopted for S/PDIF and AES/EBU, although in these cases there is perhaps more justification, as in that case multiple devices in the system may be required to synch to the same clock.

 

Asynchronous USB is consequently difficult. The easiest assured way to implement it would be under USB Audio Class 2, because (as I understand it) the features supporting it are built into the driver. Asynchronous USB should also possible under USB Audio Class 1 (I think) but I have been unable to understand the definition sufficiently to exploit it.

 

This is the best of my understanding. As I said already the documentation surrounding these subjects is impenetrable in the extreme, and the guys who do understand it are so snotty it's impossible to get a direct answer out of them without thumbscrews.

 

USB Audio Class2 is not supported under Windows. It is supported under Linux and Mac OS. Consequently, if you want asynch USB under Windows you have no option but to buy a system with a custom driver. There are some systems out there such as the Xmos using the Thesycon driver, but they are expensive. I believe they're plug'n'play under Linux and Mac.

 

There is an asynchronous FIFO project over on diyaudio, I haven't dug into it, but I believe it does some kind of buffering and reclocking.

 

Dan Lavry (http://www.lavryengineering.com/splash.html) also has a reclocking DAC, I believe it is uprocessor based, and uses a buffering system with a low jitter VCXO whose frequency is adjusted infrequently by a 12-bit DAC to cause the buffer to empty and fill.

 

You might be interested to look at this solution http://wakibaki.com/audio.php#t1 which I designed a while ago. It is similar to the Lavry system, but instead of being microprocessor controlled it uses a comparatively simple finite state machine implemented in a CPLD to adjust the VCXO, again based on how full (or empty) the buffer becomes. A second CPLD clocks the information in. I never built this device, I just had the idea during an argument about asynch. USB so I wrote it up and wrote the VHDL to make it work in simulation as a proof of concept. I'm not actually convinced that jitter in regular USB systems is audible, and the work and cost involved in building it would be considerable, although I do have most of the components on hand.

 

w

Wow, quite some work you have done.  I am a plug and play kind of guy that is reasonably handy with a soldering iron, so I doubt I could even make 100% sense of just your descriptions.  Thank you, though for sharing your work.

 

Mister X, that looks like an interesting solution, but you are right in that it has more functionality than I need.  That being said, it is still cheaper than many products that are probably not any better engineered that I could take apart and install into my DAC case.  The Hiface 2 was something I was looking at, which seems to be a fairly stock implementation of the XMOS solution.  

 

I will keep poking around.  Hard to tell which ones might be good just looking at chipsets.  Don't want to go much over the $150 mark at the moment.

post #5 of 16
Thread Starter 

Just thought I'd share this as something that hits on almost all points for me: http://luckit.biz/new/?tcp_product=waveio

post #6 of 16

Interesting, I didn't know that this was this far advanced, or that the price was down to 99 euro. Thanks.

 

w

post #7 of 16

Anyone tried the miniSTREAMER ?It features the Tenor TE7022.

 

http://www.minidsp.com/products/usb-audio-interface/ministreamer

post #8 of 16
Quote:
Originally Posted by G.Trenchev View Post

Anyone tried the miniSTREAMER ?It features the Tenor TE7022.

 

http://www.minidsp.com/products/usb-audio-interface/ministreamer

It is not an asynchronous device. wink.gif

post #9 of 16

See if Audio-gd wont sell you a USB-32 board with the VIA chips with firmware allowing S/PDIF output (the default is I2S). It kicks the crap through XMOS solutions IMO.

post #10 of 16
Thread Starter 
Quote:
Originally Posted by Currawong View Post

See if Audio-gd wont sell you a USB-32 board with the VIA chips with firmware allowing S/PDIF output (the default is I2S). It kicks the crap through XMOS solutions IMO.

Good idea, I will shoot him an email.  Do you (or anyone else) happen to have tried a CM6631A based converter?  It is the one that Schiit and a couple other companies use.  I have found some boards based on that chipset as well.

 

Wish I had the time/money to experiment.

post #11 of 16

There's been some ongoing group buys for the Amanero Async USB board over at diyaudio: http://www.diyaudio.com/forums/vendors-bazaar/216474-usb-i2s-384khz-dsd-converter.html

Single unit price isn't so great, but if you can get in on the GB, you can get a break.. It's I2S only, but I don't think you specified..

More details here: http://amanero.com/

 

They include windows drivers if you are so inclined  


Edited by MrSlim - 4/16/13 at 2:58pm
post #12 of 16
Thread Starter 
Wow. That looks awesome, especially for the price, but unfortunately I am trying to hack something onto an existing dac and I dont think I have ready access to the I2s lines. Thanks for the heads up.
post #13 of 16

So I ordered this :

 

http://www.ebay.com/itm/XMOS-384kHz-high-quality-USB-to-I2S-PCB-with-ultralow-noise-6-5uV-regulator-/230961204617?pt=US_Amplifier_Parts_Components&hash=item35c65c4d89

 

Any thoughts on it?Looks promising.I plan to use it with PCM1793 or whatever.


Edited by G.Trenchev - 5/9/13 at 9:51am
post #14 of 16
Thread Starter 
Quote:
Originally Posted by G.Trenchev View Post

So I ordered this :

 

http://www.ebay.com/itm/XMOS-384kHz-high-quality-USB-to-I2S-PCB-with-ultralow-noise-6-5uV-regulator-/230961204617?pt=US_Amplifier_Parts_Components&hash=item35c65c4d89

 

Any thoughts on it?Looks promising.I plan to use it with PCM1793 or whatever.

This guy seems to like it:  http://hifiduino.wordpress.com/

 

He has been a great resource for me.  I now have a Musiland Monitor 01 USD 2012 that I have stripped down to just the board that I will be using in my DAC.  Good reviews, improved performance so far over my stock USB.

post #15 of 16

I just bought two Amanero boards. I'm about to embark on two projects based on the ES9023 DAC. One of the projects is a board designed by curryman over at diyaudio. It's a combo board that features a the ES9023 integrated with a buffer designed by Joachim Gerhard. I'm also going to use this... http://www.diyaudio.com/forums/digital-line-level/147817-ackodac-based-es9018-13.html#post3320259 ...to isolate the Amanero from the DAC. The acko board also features a re-clocker that I might experiment with. I don't mean the hijack the thread but the Amanero seems to have a lot of bang for the buck. It's prolly not as plug and play as you're looking for. I'm still quite a novice when it comes to DACs, clocking, isolation, multiple power supplies, and making it work together. I feel that with a bunch of research and sweat I can get through it.

New Posts  All Forums:Forum Nav:
  Return Home
Head-Fi.org › Forums › Misc.-Category Forums › DIY (Do-It-Yourself) Discussions › Any "drop in" solutions for asynchronous USB?