Any "drop in" solutions for asynchronous USB?
Apr 12, 2013 at 12:11 PM Thread Starter Post #1 of 16

FraGGleR

Headphoneus Supremus
Joined
Aug 30, 2009
Posts
2,766
Likes
129
Location
Chicago
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). 
 
Apr 12, 2013 at 5:53 PM 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
 
Apr 13, 2013 at 1:41 PM Post #4 of 16
Quote:
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.
 
Apr 14, 2013 at 6:02 AM Post #7 of 16
Anyone tried the miniSTREAMER ?It features the Tenor TE7022.
 
http://www.minidsp.com/products/usb-audio-interface/ministreamer
 
Apr 14, 2013 at 6:08 AM Post #8 of 16
Quote:
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

 
Apr 14, 2013 at 6:09 AM 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.
 
Apr 14, 2013 at 12:51 PM Post #10 of 16
Quote:
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.
 
Apr 16, 2013 at 5:53 PM Post #11 of 16
Apr 16, 2013 at 11:09 PM Post #12 of 16
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.
 
May 9, 2013 at 12:50 PM 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.
 
May 9, 2013 at 4:00 PM Post #14 of 16
Quote:
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.
 
May 15, 2013 at 1:24 AM 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.
 

Users who are viewing this thread

Back
Top