Audio over the USB without USB audio

Vincent Kars

WBF Technical Expert: Computer Audio
Jul 1, 2010
860
1
0
Some companies don’t use the USB audio standard.
They implement their own solution using bulk mode transfer.
Bulk mode is asynchronous by design.
As it is bulk mode,
  • No guarantee of bandwidth or minimum latency
  • Error detection via CRC, with guarantee of delivery.
In case of the standard USB audio isochronous mode it is exactly the reverse.
As long as the DAC is the only one connected to a internal hub, bandwidth is in general not the problem using USB high speed mode.

Inherent to a vendor specific solution is that he either supports your OS or not.
The advantage of USB audio is that it is natively supported by Win, OSX and Linux.
However in case of USB audio class 2 on Win you need a third party driver too.

A couple of examples: http://thewelltemperedcomputer.com/HW/USB_Vendor.htm
 

garylkoh

WBF Technical Expert (Speakers & Audio Equipment)
Sep 6, 2010
5,599
225
1,190
Seattle, WA
www.genesisloudspeakers.com
Thanks, Vincent.

This might be why the M2Tech Young seems to be very independent of settings on the music server. I tried a number of settings, software, etc. and detected very little or no difference and was quite puzzled. Using another DAC, for example, it was very clear the difference using Foobar plus JPlay and Foobar without. On the Young, JPlay seemed to make no difference (except for screwing up my iPad interface).
 

Vincent Kars

WBF Technical Expert: Computer Audio
Jul 1, 2010
860
1
0
Hi Gary
If the other DAC was using isochronous USB with adaptive synchronization I can imagine it will make a difference.
If it was with asynchronous synchronization I expect a behavior like bulk mode transfer.
What protocol was used by the “other” DAC?
 

garylkoh

WBF Technical Expert (Speakers & Audio Equipment)
Sep 6, 2010
5,599
225
1,190
Seattle, WA
www.genesisloudspeakers.com
Hi Gary
If the other DAC was using isochronous USB with adaptive synchronization I can imagine it will make a difference.
If it was with asynchronous synchronization I expect a behavior like bulk mode transfer.
What protocol was used by the “other” DAC?

Yes, it was adaptive. I've got a couple other USB DACs that I can try.....
 

Vincent Kars

WBF Technical Expert: Computer Audio
Jul 1, 2010
860
1
0
In case of the RME it reports Bulk and Interrupt as the only available modes.
This is the device enumeration, it tells the capabilities of the device, not what is actually used.
Here you go:
Information for device Fireface UC Win (23299755) (VID=0x0424 PID=0x3FC5):
Version of TDD: 1.34 Date: Sep 7 2011 Time: 08:44:13

Connection Information:
------------------------------

Connection status: Device connected
Device actual bus speed: High
Device is hub: No
Device adress: 0x0006
Current configuration value: 0x01
Number of open pipes: 11

Device Descriptor:
------------------------------

Value Valuename
0x12 bLength
0x01 bDescriptorType
0x0200 bcdUSB
0xFF bDeviceClass (Vendor specific)
0x00 bDeviceSubClass
0x00 bDeviceProtocol
0x40 bMaxPacketSize0 (64 Bytes)
0x0424 idVendor
0x3FC5 idProduct
0x0001 bcdDevice
0x01 iManufacturer (RME)
0x02 iProduct (Fireface UC Win (23299755))
0x03 iSerialNumber (BF3340DD85E29A8)
0x01 bNumConfigurations
Hex dump:
0x12 0x01 0x00 0x02 0xFF 0x00 0x00 0x40 0x24 0x04
0xC5 0x3F 0x01 0x00 0x01 0x02 0x03 0x01

Device Qualifier Descriptor:
------------------------------

Value Valuename
0x0A bLength
0x06 bDescriptorType
0x0200 bcdUSB
0xFF bDeviceClass (Vendor specific)
0x00 bDeviceSubClass
0x00 bDeviceProtocol
0x40 bMaxPacketSize0 (64 Bytes)
0x00 bNumConfigurations
0x00 bReserved
Hex dump:
0x0A 0x06 0x00 0x02 0xFF 0x00 0x00 0x40 0x00 0x00

Configuration Descriptor:
------------------------------

Value Valuename
0x09 bLength
0x02 bDescriptorType
0x00FB wTotalLength
0x06 bNumInterfaces
0x01 bConfigurationValue
0x00 iConfiguration
0xC0 bmAttributes (Self-powered Device)
0x32 MaxPower (100 mA)
Hex dump:
0x09 0x02 0xFB 0x00 0x06 0x01 0x00 0xC0 0x32

Interface Descriptor:
------------------------------

Value Valuename
0x09 bLength
0x04 bDescriptorType
0x00 bInterfaceNumber
0x00 bAlternateSetting
0x04 bNumEndPoints
0xFF bInterfaceClass (Vendor specific)
0x00 bInterfaceSubClass
0x00 bInterfaceProtocol
0x00 iInterface
Hex dump:
0x09 0x04 0x00 0x00 0x04 0xFF 0x00 0x00 0x00

Endpoint Descriptor:
------------------------------

Value Valuename
0x07 bLength
0x05 bDescriptorType
0x01 bEndpointAddress (Out-Endpoint)
0x03 bmAttributes
Transfer Type: Interrupt-Transfer
Synchronization Type: None
Usage Type: Data
0x0040 wMaxPacketSize (64 Bytes)
0x01 bIntervall
Hex dump:
0x07 0x05 0x01 0x03 0x40 0x00 0x01

Endpoint Descriptor:
------------------------------

Value Valuename
0x07 bLength
0x05 bDescriptorType
0x82 bEndpointAddress (In-Endpoint)
0x03 bmAttributes
Transfer Type: Interrupt-Transfer
Synchronization Type: None
Usage Type: Data
0x0040 wMaxPacketSize (64 Bytes)
0x01 bIntervall
Hex dump:
0x07 0x05 0x82 0x03 0x40 0x00 0x01

Endpoint Descriptor:
------------------------------

Value Valuename
0x07 bLength
0x05 bDescriptorType
0x03 bEndpointAddress (Out-Endpoint)
0x02 bmAttributes
Transfer Type: Bulk-Transfer
Synchronization Type: None
Usage Type: Data
0x0200 wMaxPacketSize (512 Bytes)
0x00 bIntervall
Hex dump:
0x07 0x05 0x03 0x02 0x00 0x02 0x00

Endpoint Descriptor:
------------------------------

Value Valuename
0x07 bLength
0x05 bDescriptorType
0x84 bEndpointAddress (In-Endpoint)
0x02 bmAttributes
Transfer Type: Bulk-Transfer
Synchronization Type: None
Usage Type: Data
0x0200 wMaxPacketSize (512 Bytes)
0x00 bIntervall
Hex dump:
0x07 0x05 0x84 0x02 0x00 0x02 0x00

Interface Descriptor:
------------------------------

Value Valuename
0x09 bLength
0x04 bDescriptorType
0x00 bInterfaceNumber
0x01 bAlternateSetting
0x04 bNumEndPoints
0xFF bInterfaceClass (Vendor specific)
0x00 bInterfaceSubClass
0x00 bInterfaceProtocol
0x00 iInterface
Hex dump:
0x09 0x04 0x00 0x01 0x04 0xFF 0x00 0x00 0x00

Endpoint Descriptor:
------------------------------

Value Valuename
0x07 bLength
0x05 bDescriptorType
0x01 bEndpointAddress (Out-Endpoint)
0x03 bmAttributes
Transfer Type: Interrupt-Transfer
Synchronization Type: None
Usage Type: Data
0x0240 wMaxPacketSize (576 Bytes)
0x01 bIntervall
Hex dump:
0x07 0x05 0x01 0x03 0x40 0x02 0x01

Endpoint Descriptor:
------------------------------

Value Valuename
0x07 bLength
0x05 bDescriptorType
0x82 bEndpointAddress (In-Endpoint)
0x03 bmAttributes
Transfer Type: Interrupt-Transfer
Synchronization Type: None
Usage Type: Data
0x0240 wMaxPacketSize (576 Bytes)
0x01 bIntervall
Hex dump:
0x07 0x05 0x82 0x03 0x40 0x02 0x01

Endpoint Descriptor:
------------------------------

Value Valuename
0x07 bLength
0x05 bDescriptorType
0x03 bEndpointAddress (Out-Endpoint)
0x02 bmAttributes
Transfer Type: Bulk-Transfer
Synchronization Type: None
Usage Type: Data
0x0200 wMaxPacketSize (512 Bytes)
0x00 bIntervall
Hex dump:
0x07 0x05 0x03 0x02 0x00 0x02 0x00

Endpoint Descriptor:
------------------------------

Value Valuename
0x07 bLength
0x05 bDescriptorType
0x84 bEndpointAddress (In-Endpoint)
0x02 bmAttributes
Transfer Type: Bulk-Transfer
Synchronization Type: None
Usage Type: Data
0x0200 wMaxPacketSize (512 Bytes)
0x00 bIntervall
Hex dump:
0x07 0x05 0x84 0x02 0x00 0x02 0x00

Interface Descriptor:
------------------------------

Value Valuename
0x09 bLength
0x04 bDescriptorType
0x00 bInterfaceNumber
0x02 bAlternateSetting
0x04 bNumEndPoints
0xFF bInterfaceClass (Vendor specific)
0x00 bInterfaceSubClass
0x00 bInterfaceProtocol
0x00 iInterface
Hex dump:
0x09 0x04 0x00 0x02 0x04 0xFF 0x00 0x00 0x00

Endpoint Descriptor:
------------------------------

Value Valuename
0x07 bLength
0x05 bDescriptorType
0x01 bEndpointAddress (Out-Endpoint)
0x03 bmAttributes
Transfer Type: Interrupt-Transfer
Synchronization Type: None
Usage Type: Data
0x0380 wMaxPacketSize (896 Bytes)
0x01 bIntervall
Hex dump:
0x07 0x05 0x01 0x03 0x80 0x03 0x01

Endpoint Descriptor:
------------------------------

Value Valuename
0x07 bLength
0x05 bDescriptorType
0x82 bEndpointAddress (In-Endpoint)
0x03 bmAttributes
Transfer Type: Interrupt-Transfer
Synchronization Type: None
Usage Type: Data
0x0380 wMaxPacketSize (896 Bytes)
0x01 bIntervall
Hex dump:
0x07 0x05 0x82 0x03 0x80 0x03 0x01

Endpoint Descriptor:
------------------------------

Value Valuename
0x07 bLength
0x05 bDescriptorType
0x03 bEndpointAddress (Out-Endpoint)
0x02 bmAttributes
Transfer Type: Bulk-Transfer
Synchronization Type: None
Usage Type: Data
0x0200 wMaxPacketSize (512 Bytes)
0x00 bIntervall
Hex dump:
0x07 0x05 0x03 0x02 0x00 0x02 0x00

Endpoint Descriptor:
------------------------------

Value Valuename
0x07 bLength
0x05 bDescriptorType
0x84 bEndpointAddress (In-Endpoint)
0x02 bmAttributes
Transfer Type: Bulk-Transfer
Synchronization Type: None
Usage Type: Data
0x0200 wMaxPacketSize (512 Bytes)
0x00 bIntervall
Hex dump:
0x07 0x05 0x84 0x02 0x00 0x02 0x00

Interface Descriptor:
------------------------------

Value Valuename
0x09 bLength
0x04 bDescriptorType
0x00 bInterfaceNumber
0x03 bAlternateSetting
0x04 bNumEndPoints
0xFF bInterfaceClass (Vendor specific)
0x00 bInterfaceSubClass
0x00 bInterfaceProtocol
0x00 iInterface
Hex dump:
0x09 0x04 0x00 0x03 0x04 0xFF 0x00 0x00 0x00

Endpoint Descriptor:
------------------------------

Value Valuename
0x07 bLength
0x05 bDescriptorType
0x01 bEndpointAddress (Out-Endpoint)
0x03 bmAttributes
Transfer Type: Interrupt-Transfer
Synchronization Type: None
Usage Type: Data
0x0300 wMaxPacketSize (768 Bytes)
0x01 bIntervall
Hex dump:
0x07 0x05 0x01 0x03 0x00 0x03 0x01

Endpoint Descriptor:
------------------------------

Value Valuename
0x07 bLength
0x05 bDescriptorType
0x82 bEndpointAddress (In-Endpoint)
0x03 bmAttributes
Transfer Type: Interrupt-Transfer
Synchronization Type: None
Usage Type: Data
0x0300 wMaxPacketSize (768 Bytes)
0x01 bIntervall
Hex dump:
0x07 0x05 0x82 0x03 0x00 0x03 0x01

Endpoint Descriptor:
------------------------------

Value Valuename
0x07 bLength
0x05 bDescriptorType
0x03 bEndpointAddress (Out-Endpoint)
0x03 bmAttributes
Transfer Type: Interrupt-Transfer
Synchronization Type: None
Usage Type: Data
0x0300 wMaxPacketSize (768 Bytes)
0x01 bIntervall
Hex dump:
0x07 0x05 0x03 0x03 0x00 0x03 0x01

Endpoint Descriptor:
------------------------------

Value Valuename
0x07 bLength
0x05 bDescriptorType
0x84 bEndpointAddress (In-Endpoint)
0x03 bmAttributes
Transfer Type: Interrupt-Transfer
Synchronization Type: None
Usage Type: Data
0x0300 wMaxPacketSize (768 Bytes)
0x01 bIntervall
Hex dump:
0x07 0x05 0x84 0x03 0x00 0x03 0x01

Interface Descriptor:
------------------------------

Value Valuename
0x09 bLength
0x04 bDescriptorType
0x01 bInterfaceNumber
0x00 bAlternateSetting
0x01 bNumEndPoints
0xFF bInterfaceClass (Vendor specific)
0x00 bInterfaceSubClass
0x00 bInterfaceProtocol
0x00 iInterface
Hex dump:
0x09 0x04 0x01 0x00 0x01 0xFF 0x00 0x00 0x00

Endpoint Descriptor:
------------------------------

Value Valuename
0x07 bLength
0x05 bDescriptorType
0x85 bEndpointAddress (In-Endpoint)
0x02 bmAttributes
Transfer Type: Bulk-Transfer
Synchronization Type: None
Usage Type: Data
0x0200 wMaxPacketSize (512 Bytes)
0x00 bIntervall
Hex dump:
0x07 0x05 0x85 0x02 0x00 0x02 0x00

Interface Descriptor:
------------------------------

Value Valuename
0x09 bLength
0x04 bDescriptorType
0x02 bInterfaceNumber
0x00 bAlternateSetting
0x02 bNumEndPoints
0xFF bInterfaceClass (Vendor specific)
0x00 bInterfaceSubClass
0x00 bInterfaceProtocol
0x02 iInterface (Fireface UC Win (23299755))
Hex dump:
0x09 0x04 0x02 0x00 0x02 0xFF 0x00 0x00 0x02

Endpoint Descriptor:
------------------------------

Value Valuename
0x07 bLength
0x05 bDescriptorType
0x86 bEndpointAddress (In-Endpoint)
0x02 bmAttributes
Transfer Type: Bulk-Transfer
Synchronization Type: None
Usage Type: Data
0x0200 wMaxPacketSize (512 Bytes)
0x00 bIntervall
Hex dump:
0x07 0x05 0x86 0x02 0x00 0x02 0x00

Endpoint Descriptor:
------------------------------

Value Valuename
0x07 bLength
0x05 bDescriptorType
0x07 bEndpointAddress (Out-Endpoint)
0x02 bmAttributes
Transfer Type: Bulk-Transfer
Synchronization Type: None
Usage Type: Data
0x0200 wMaxPacketSize (512 Bytes)
0x01 bIntervall
Hex dump:
0x07 0x05 0x07 0x02 0x00 0x02 0x01

Interface Descriptor:
------------------------------

Value Valuename
0x09 bLength
0x04 bDescriptorType
0x03 bInterfaceNumber
0x00 bAlternateSetting
0x02 bNumEndPoints
0xFF bInterfaceClass (Vendor specific)
0x00 bInterfaceSubClass
0x00 bInterfaceProtocol
0x00 iInterface
Hex dump:
0x09 0x04 0x03 0x00 0x02 0xFF 0x00 0x00 0x00

Endpoint Descriptor:
------------------------------

Value Valuename
0x07 bLength
0x05 bDescriptorType
0x88 bEndpointAddress (In-Endpoint)
0x02 bmAttributes
Transfer Type: Bulk-Transfer
Synchronization Type: None
Usage Type: Data
0x0200 wMaxPacketSize (512 Bytes)
0x00 bIntervall
Hex dump:
0x07 0x05 0x88 0x02 0x00 0x02 0x00

Endpoint Descriptor:
------------------------------

Value Valuename
0x07 bLength
0x05 bDescriptorType
0x09 bEndpointAddress (Out-Endpoint)
0x02 bmAttributes
Transfer Type: Bulk-Transfer
Synchronization Type: None
Usage Type: Data
0x0200 wMaxPacketSize (512 Bytes)
0x00 bIntervall
Hex dump:
0x07 0x05 0x09 0x02 0x00 0x02 0x00

Interface Descriptor:
------------------------------

Value Valuename
0x09 bLength
0x04 bDescriptorType
0x04 bInterfaceNumber
0x00 bAlternateSetting
0x01 bNumEndPoints
0xFF bInterfaceClass (Vendor specific)
0x00 bInterfaceSubClass
0x00 bInterfaceProtocol
0x00 iInterface
Hex dump:
0x09 0x04 0x04 0x00 0x01 0xFF 0x00 0x00 0x00

Endpoint Descriptor:
------------------------------

Value Valuename
0x07 bLength
0x05 bDescriptorType
0x8A bEndpointAddress (In-Endpoint)
0x02 bmAttributes
Transfer Type: Bulk-Transfer
Synchronization Type: None
Usage Type: Data
0x0200 wMaxPacketSize (512 Bytes)
0x00 bIntervall
Hex dump:
0x07 0x05 0x8A 0x02 0x00 0x02 0x00

Interface Descriptor:
------------------------------

Value Valuename
0x09 bLength
0x04 bDescriptorType
0x05 bInterfaceNumber
0x00 bAlternateSetting
0x01 bNumEndPoints
0xFF bInterfaceClass (Vendor specific)
0x00 bInterfaceSubClass
0x00 bInterfaceProtocol
0x00 iInterface
Hex dump:
0x09 0x04 0x05 0x00 0x01 0xFF 0x00 0x00 0x00

Endpoint Descriptor:
------------------------------

Value Valuename
0x07 bLength
0x05 bDescriptorType
0x8B bEndpointAddress (In-Endpoint)
0x03 bmAttributes
Transfer Type: Interrupt-Transfer
Synchronization Type: None
Usage Type: Data
0x0004 wMaxPacketSize (4 Bytes)
0x01 bIntervall
Hex dump:
0x07 0x05 0x8B 0x03 0x04 0x00 0x01

Whole Device Descriptor as hex dump:
0x12, 0x01, 0x00, 0x02, 0xFF, 0x00, 0x00, 0x40, 0x24, 0x04, 0xC5, 0x3F, 0x01, 0x00, 0x01, 0x02, 0x03, 0x01

Whole Device Qualifier Descriptor as hex dump:
0x0A, 0x06, 0x00, 0x02, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00

Whole Configuration Descriptor as hex dump:
0x09, 0x02, 0xFB, 0x00, 0x06, 0x01, 0x00, 0xC0, 0x32, 0x09, 0x04, 0x00, 0x00, 0x04, 0xFF, 0x00, 0x00, 0x00, 0x07, 0x05, 0x01, 0x03, 0x40, 0x00, 0x01, 0x07, 0x05, 0x82, 0x03, 0x40, 0x00, 0x01, 0x07, 0x05, 0x03, 0x02, 0x00, 0x02, 0x00, 0x07, 0x05, 0x84, 0x02, 0x00, 0x02, 0x00, 0x09, 0x04, 0x00, 0x01, 0x04, 0xFF, 0x00, 0x00, 0x00, 0x07, 0x05, 0x01, 0x03, 0x40, 0x02, 0x01, 0x07, 0x05, 0x82, 0x03, 0x40, 0x02, 0x01, 0x07, 0x05, 0x03, 0x02, 0x00, 0x02, 0x00, 0x07, 0x05, 0x84, 0x02, 0x00, 0x02, 0x00, 0x09, 0x04, 0x00, 0x02, 0x04, 0xFF, 0x00, 0x00, 0x00, 0x07, 0x05, 0x01, 0x03, 0x80, 0x03, 0x01, 0x07, 0x05, 0x82, 0x03, 0x80, 0x03, 0x01, 0x07, 0x05, 0x03, 0x02, 0x00, 0x02, 0x00, 0x07, 0x05, 0x84, 0x02, 0x00, 0x02, 0x00, 0x09, 0x04, 0x00, 0x03, 0x04, 0xFF, 0x00, 0x00, 0x00, 0x07, 0x05, 0x01, 0x03, 0x00, 0x03, 0x01, 0x07, 0x05, 0x82, 0x03, 0x00, 0x03, 0x01, 0x07, 0x05, 0x03, 0x03, 0x00, 0x03, 0x01, 0x07, 0x05, 0x84, 0x03, 0x00, 0x03, 0x01, 0x09, 0x04, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x07, 0x05, 0x85, 0x02, 0x00, 0x02, 0x00, 0x09, 0x04, 0x02, 0x00, 0x02, 0xFF, 0x00, 0x00, 0x02, 0x07, 0x05, 0x86, 0x02, 0x00, 0x02, 0x00, 0x07, 0x05, 0x07, 0x02, 0x00, 0x02, 0x01, 0x09, 0x04, 0x03, 0x00, 0x02, 0xFF, 0x00, 0x00, 0x00, 0x07, 0x05, 0x88, 0x02, 0x00, 0x02, 0x00, 0x07, 0x05, 0x09, 0x02, 0x00, 0x02, 0x00, 0x09, 0x04, 0x04, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x07, 0x05, 0x8A, 0x02, 0x00, 0x02, 0x00, 0x09, 0x04, 0x05, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x07, 0x05, 0x8B, 0x03, 0x04, 0x00,
0x01

Connectionpath for device:

Intel(R) ICH8 Family USB2 Enhanced Host Controller - 283A RootHub Standard-USB-Hub Fireface UC Win (23299755) (VID=0x0424 PID=0x3FC5)

No, I don't pretend to understand all of this.
But it is shorter than the average objectivist-subjectivist debate
 
Last edited:

About us

  • What’s Best Forum is THE forum for high end audio, product reviews, advice and sharing experiences on the best of everything else. This is THE place where audiophiles and audio companies discuss vintage, contemporary and new audio products, music servers, music streamers, computer audio, digital-to-analog converters, turntables, phono stages, cartridges, reel-to-reel tape machines, speakers, headphones and tube and solid-state amplification. Founded in 2010 What’s Best Forum invites intelligent and courteous people of all interests and backgrounds to describe and discuss the best of everything. From beginners to life-long hobbyists to industry professionals, we enjoy learning about new things and meeting new people, and participating in spirited debates.

Quick Navigation

User Menu

Steve Williams
Site Founder | Site Owner | Administrator
Ron Resnick
Site Co-Owner | Administrator
Julian (The Fixer)
Website Build | Marketing Managersing