(Mis)Understanding USB Audio
I’ve read a lot of discussions/threads (in various places), and had numerous discussions (online and in-person) that demonstrate an enormous level of misunderstanding relating to USB audio - especially UAC2 (USB Audio Class 2) - which is the USB audio specification that almost all modern DACs utilize.
Lots of magical attributes are assigned to USB Audio, most of which are either due to faulty assumptions, lack of understanding, or pure flights of fantasy couched in technical terms intended to support either subjective or objective perspectives.
NOTE: Before you go reaching for your pitchforks … what this (and possible subsequent) posts does NOT say is that there cannot be differences in audible, or measured, results resulting from different USB systems. A USB system being the aggregate of USB source, chipset, cabling and USB receiver.
But it will address some of the common misconceptions and why, while differences may exist, they cannot be for the reasons usually claimed.
Everything here can be validated via familiarity within the USB 2.0 specification, including the UAC2 components there-of.
USB Audio/UAC2 Does NOT Guarantee Bit-Perfect Delivery
There are USB protocols that do (e.g. bulk-transfer mode for USB storage); USB Audio/UAC2 just isn’t one of them.
UAC2 sends data using the Isochronous transfer mode. This is intended for high-bandwidth, time-sensitive, data transmission where dropped/corrupted packets are non-critical.
Isochronous transfer mode does NOT include a checksum, nor any error-correction/detection mechanism. It is also unidirectional. Thus, there is no built-in way for the sender to know if data was even received, nor for a receiver to detect bad data, much less correct it or request it be resent.
UAC2 partially addresses this by including its own CRC within the protocol itself (i.e. one level up from the transfer mechanism). This adds the ability for the receiver to detect if incoming data is bad. But since there is still no error-correction code/mechanism, nor a retry/resend mechanism, it significantly limits what can be done when bad data is received.
A DAC receiving bad data via UAC2 only has a few options:
- Mute its output until good data arrives (i.e. you get dropouts).
- Limit the output level for data in that frame.
- Play the data as-is and hope for the best.
Better DACs tend to take the first approach.
If nothing else, this approach indicates that you have a problem – which might be a faulty cable, a broken device, or simply that the source is overloaded and unable to maintain the necessary transfer rate.
It also guarantees you don’t suddenly wind up with full-level output out of nowhere (which is a pitfall of the last approach).
Beyond that, USB audio it’s a send-only, non-correctable, transmission mode that doesn’t guarantee packet receipt at all , much less that the received packets are correct!
(The only thing that gets sent to the sender is an async control that tells it to send the next packet faster or slower (and the timing constraints/variations there are very limited).
USB Audio/UAC Data Corruption Rates
Fortunately, data corruption/loss using to-spec cables (including observing the length limitations in the USB 2.0 specification) in a properly functioning system are rare.
How rare?
I’ve run tests that simply stream audio constantly, validating the CRCs and logging any errors, and gone for days without seeing a single bad packet/frame.
Now, repeat that with an out-of-spec cable (a large number of “audiophile” or “boutique” cables) and things can change markedly.
For those without suitable analyzers and test equipment, a simple and often-revealing test with weird-and-wonderful boutique/out-of-spec USB cables is to use them with a storage device and benchmark a big transfer. Because USB storage transfers ARE error correctable, when transmission errors occur the transfer rate DROPS.
And the practical upshot of that is that if your boutique cable cannot maintain the same data transfer rate for storage applications as a <$10 Amazon Basics cable it is because it is not transferring data reliably, and that absolutely WILL affect USB 2.0 audio performance (the exact results depend on what the DAC does with data that’s corrupt).
(More to come).