[wdmaudiodev] Re: UAC2 on Creator's: locked to 44.1?

  • From: "Tsai Tzung-Dar" <dmarc-noreply@xxxxxxxxxxxxx> (Redacted sender "tdtsai1973" for DMARC)
  • To: "wdmaudiodev@xxxxxxxxxxxxx" <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Mon, 5 Jun 2017 02:55:46 +0000 (UTC)

Hi Borge:Please check your sample rate table. According the ADC 2.0 spec 
section 5.2.1 the sample rate table your provide is illegal. You can not 
provide a sample rate range declare that has overlay. Your 6 discrete sample 
triplets look like a correct declare.Please check it again.
BR,Tzung-Dar Tsai

      寄件者: Børge Strand-Bergesen <borge.strand@xxxxxxxxx>
 收件者: wdmaudiodev@xxxxxxxxxxxxx 
 寄件日期: 2017/6/3 (週六) 7:42 PM
 主旨: [wdmaudiodev] Re: UAC2 on Creator's: locked to 44.1?
   
Hi Tzung-Dar Tsai and Matthew,
Thanks a lot for your help!

Changing the clock type from 0b01 to 0b10 to mark it as internal and variable 
did not unlock the other frequencies in the UAC2 driver in C.U. Do I have a 
wrong definition of available clock speeds? Other drivers are able to set the 
sample rate. Or is there a poll by the OS where the device perhaps responds 
with the wrong answer or not at all?
Could the sample rate definition be wrong? 
The report generating code is here, CSD_ID_2 = 
0x05:https://github.com/borgestrand/sdr-widget/blob/audio-widget-experimental/src/uac2_usb_specific_request.c#L112
andhttps://github.com/borgestrand/sdr-widget/blob/audio-widget-experimental/src/uac2_usb_specific_request.c#L979

Around L112 I have tried both two ranges (44.1:44.1:176.4 and 48:48:192) and 
six discrete values. (The _1 and _2 postfixes aren't used anymore.) With the 
six discrete values C.U. doesn't recognize the DAC, and the DIY ASIO driver 
recognizes all frequencies but 192. With two ranges, C.U. recognizes the DAC 
and locks it to 44.1

Matthew, are you aware of all the clock / frequency / sample rate queries the 
Windows UAC2 driver makes? I suspect the firmware is under-reporting something. 
(I've seen this before, when iOS refused to play on UAC1 FW which didn't report 
all its volume control settings.)


Today's product stems from one which has both microphone and speakers, but only 
implements speakers. Setting bNrChannels and bmChannelConfig to 0 is no problem 
in the input terminal descriptor, but in the output terminal descriptor this at 
least fails with the ASIO driver which comes with the project. Now, it may very 
well be that the ASIO driver and the firmware share a bug here. 
Is input terminal 0x11 a big deal? There are quite a few terminals defined, and 
I'd have to renumber quite a few to change from 0x11. 

Thanks,Børge

On Sat, Jun 3, 2017 at 10:40 AM, Tsai Tzung-Dar <dmarc-noreply@xxxxxxxxxxxxx> 
wrote:

Hi Borge:I think I find the reason why you only get 44.1 sample rate. Because 
your clock unit declare it is internal fixed clock . It means the sample rate 
can not be change. By the way I also find your input terminal unit 0x11 is not 
correct. The field of bNrChannls and bmChannelConfig should set to 0.
BR,Tzung-Dar Tsai

      寄件者: Børge Strand-Bergesen <borge.strand@xxxxxxxxx>
 收件者: wdmaudiodev@xxxxxxxxxxxxx 
 寄件日期: 2017/6/3 (週六) 3:40 PM
 主旨: [wdmaudiodev] Re: UAC2 on Creator's: locked to 44.1?
   
OK, here it is. Camptured with the Thesycon Descriptor Dumper. 
If I remember correctly (the descriptor wasn't written by me, but I can edit 
it), the frequencies are not given as discrete values but as a range start, 
end, and increment. 
Thanks,Børge

Information for device Henry Audio USB DAC 128 mkII (VID=0x16D0 PID=0x075D):
Connection Information:------------------------------Connection status: Device 
connectedDevice actual bus speed: HighSpeedDevice supports USB 1.1 
specificationDevice supports USB 2.0 specificationDevice is hub: NoDevice 
address: 0x000ACurrent configuration value: 0x01Number of open pipes: 2
Device Descriptor:------------------------------0x12 bLength0x01 
bDescriptorType0x0200 bcdUSB0xEF bDeviceClass   (Miscellaneous device)0x02 
bDeviceSubClass   0x01 bDeviceProtocol   0x40 bMaxPacketSize0   (64 
Bytes)0x16D0 idVendor0x075D idProduct0x1000 bcdDevice0x01 iManufacturer   
"Audio-Widget"0x02 iProduct   "Henry Audio USB DAC 128 mkII"0x03 iSerialNumber  
 "2017042900BSB"0x01 bNumConfigurations
Device Qualifier Descriptor:------------------------------0x0A bLength0x06 
bDescriptorType0x0200 bcdUSB0xEF bDeviceClass   (Miscellaneous device)0x02 
bDeviceSubClass   0x01 bDeviceProtocol   0x40 bMaxPacketSize0   (64 Bytes)0x01 
bNumConfigurations 0x00 bReserved 
Configuration Descriptor:------------------------------0x09 bLength0x02 
bDescriptorType0x00C1 wTotalLength   (193 Bytes)0x04 bNumInterfaces0x01 
bConfigurationValue0x00 iConfiguration0x80 bmAttributes   (Bus-powered 
Device)0xFA bMaxPower   (500 mA)
Interface Descriptor:------------------------------0x09 bLength0x04 
bDescriptorType0x00 bInterfaceNumber0x00 bAlternateSetting0x00 
bNumEndPoints0x00 bInterfaceClass   0x00 bInterfaceSubClass   0x00 
bInterfaceProtocol   0x00 iInterface
Interface Association Descriptor:------------------------------0x08 bLength0x0B 
bDescriptorType0x01 bFirstInterface0x02 bInterfaceCount0x01 bFunctionClass   
(Audio Device Class)0x00 bFunctionSubClass   0x20 bFunctionProtocol   0x00 
iFunction
Interface Descriptor:------------------------------0x09 bLength0x04 
bDescriptorType0x01 bInterfaceNumber0x00 bAlternateSetting0x00 
bNumEndPoints0x01 bInterfaceClass   (Audio Device Class)0x01 bInterfaceSubClass 
  (Audio Control Interface)0x20 bInterfaceProtocol   0x07 iInterface   "Henry 
Audio USB DAC 128 mkII"
AC Interface Header Descriptor:------------------------------0x09 bLength0x24 
bDescriptorType0x01 bDescriptorSubtype0x0200 bcdADC0x04 bCategory   
(HEADSET)0x0040 wTotalLength   (64 Bytes)0x00 bmControls
AC Clock Source Descriptor:------------------------------0x08 bLength0x24 
bDescriptorType0x0A bDescriptorSubtype0x05 bClockID0x01 bmAttributes0x07 
bmControls0x03 bAssocTerminal0x05 iClockSource   "Clock 2"
AC Input Terminal Descriptor:------------------------------0x11 bLength0x24 
bDescriptorType0x02 bDescriptorSubtype0x11 bTerminalID0x0101 wTerminalType   
(USB Streaming)0x00 bAssocTerminal0x05 bCSourceID0x02 bNrChannels   (2 
Channels)0x00000003 bmChannelConfig0x00 iChannelNames0x00 bmControls0x08 
iTerminal   "Audio-widget"
AC Feature Unit Descriptor:------------------------------0x12 bLength0x24 
bDescriptorType0x06 bDescriptorSubtype0x12 bUnitID0x11 bSourceID0x00000003 
bmaControls(0)0x0000000C bmaControls(1)0x0000000C bmaControls(2)0x00 iFeature
AC Output Terminal Descriptor:------------------------------0x0C bLength0x24 
bDescriptorType0x03 bDescriptorSubtype0x13 bTerminalID0x0602 wTerminalType   
(Digital audio interface)0x00 bAssocTerminal0x12 bSourceID0x05 bCSourceID0x0000 
bmControls0x00 iTerminal
Interface Descriptor:------------------------------0x09 bLength0x04 
bDescriptorType0x02 bInterfaceNumber0x00 bAlternateSetting0x00 
bNumEndPoints0x01 bInterfaceClass   (Audio Device Class)0x02 bInterfaceSubClass 
  (Audio Streaming Interface)0x20 bInterfaceProtocol   0x00 iInterface
Interface Descriptor:------------------------------0x09 bLength0x04 
bDescriptorType0x02 bInterfaceNumber0x01 bAlternateSetting0x02 
bNumEndPoints0x01 bInterfaceClass   (Audio Device Class)0x02 bInterfaceSubClass 
  (Audio Streaming Interface)0x20 bInterfaceProtocol   0x00 iInterface
AS Interface Descriptor:------------------------------0x10 bLength0x24 
bDescriptorType0x01 bDescriptorSubtype0x11 bTerminalLink0x07 bmControls0x01 
bFormatType   (FORMAT_TYPE_1)0x00000001 bmFormats0x02 bNrChannels   (2 
Channels)0x00000003 bmChannelConfig0x00 iChannelNames
AS Format Type 1 Descriptor:------------------------------0x06 bLength0x24 
bDescriptorType0x02 bDescriptorSubtype0x01 bFormatType   (FORMAT_TYPE_1)0x04 
bSubslotSize0x18 bBitResolution   (24 Bits/sample)
Endpoint Descriptor:------------------------------0x07 bLength0x05 
bDescriptorType0x02 bEndpointAddress   (OUT Endpoint)0x05 bmAttributes 
(Transfer: Isochronous / Synch: Asynchronous / Usage: Data)0x0188 
wMaxPacketSize   (392 Bytes) 0x02 bInterval
AS Isochronous Data Endpoint Descriptor:------------------------------0x08 
bLength0x25 bDescriptorType0x01 bDescriptorSubtype0x00 bmAttributes0x00 
bmControls0x00 bLockDelayUnits   (Undefined)0x0000 wLockDelay
Endpoint Descriptor:------------------------------0x07 bLength0x05 
bDescriptorType0x81 bEndpointAddress   (IN Endpoint)0x11 bmAttributes 
(Transfer: Isochronous / Synch: None / Usage: Feedback)0x0004 wMaxPacketSize   
(4 Bytes) 0x04 bInterval
Interface Descriptor:------------------------------0x09 bLength0x04 
bDescriptorType0x03 bInterfaceNumber0x00 bAlternateSetting0x02 
bNumEndPoints0x03 bInterfaceClass   (Human Interface Device Class)0x00 
bInterfaceSubClass   0x00 bInterfaceProtocol   0x00 iInterface
HID Descriptor:------------------------------0x09 bLength0x21 
bDescriptorType0x0111 bcdHID0x00 bCountryCode0x01 bNumDescriptors0x22 
bDescriptorType   (Report descriptor)0x0043 bDescriptorLength
Endpoint Descriptor:------------------------------0x07 bLength0x05 
bDescriptorType0x84 bEndpointAddress   (IN Endpoint)0x03 bmAttributes 
(Transfer: Interrupt / Synch: None / Usage: Data)0x0008 wMaxPacketSize   (8 
Bytes) 0x05 bInterval
Endpoint Descriptor:------------------------------0x07 bLength0x05 
bDescriptorType0x05 bEndpointAddress   (OUT Endpoint)0x03 bmAttributes 
(Transfer: Interrupt / Synch: None / Usage: Data)0x0008 wMaxPacketSize   (8 
Bytes) 0x05 bInterval
Other Speed Configuration Descriptor:------------------------------0x09 
bLength0x07 bDescriptorType0x00C1 wTotalLength   (193 Bytes)0x04 
bNumInterfaces0x01 bConfigurationValue0x00 iConfiguration0x80 bmAttributes   
(Bus-powered Device)0xFA bMaxPower   (500 mA)
Interface Descriptor:------------------------------0x09 bLength0x04 
bDescriptorType0x00 bInterfaceNumber0x00 bAlternateSetting0x00 
bNumEndPoints0x00 bInterfaceClass   0x00 bInterfaceSubClass   0x00 
bInterfaceProtocol   0x00 iInterface
Interface Association Descriptor:------------------------------0x08 bLength0x0B 
bDescriptorType0x01 bFirstInterface0x02 bInterfaceCount0x01 bFunctionClass   
(Audio Device Class)0x01 bFunctionSubClass   (Audio Control Interface)0x20 
bFunctionProtocol   0x07 iFunction   "Henry Audio USB DAC 128 mkII"
Interface Descriptor:------------------------------0x09 bLength0x04 
bDescriptorType0x01 bInterfaceNumber0x00 bAlternateSetting0x00 
bNumEndPoints0x01 bInterfaceClass   (Audio Device Class)0x01 bInterfaceSubClass 
  (Audio Control Interface)0x20 bInterfaceProtocol   0x07 iInterface   "Henry 
Audio USB DAC 128 mkII"
AC Interface Header Descriptor:------------------------------0x09 bLength0x24 
bDescriptorType0x01 bDescriptorSubtype0x0200 bcdADC0x04 bCategory   
(HEADSET)0x0040 wTotalLength   (64 Bytes)0x00 bmControls
AC Clock Source Descriptor:------------------------------0x08 bLength0x24 
bDescriptorType0x0A bDescriptorSubtype0x05 bClockID0x01 bmAttributes0x07 
bmControls0x01 bAssocTerminal0x00 iClockSource
AC Input Terminal Descriptor:------------------------------0x11 bLength0x24 
bDescriptorType0x02 bDescriptorSubtype0x11 bTerminalID0x0101 wTerminalType   
(USB Streaming)0x00 bAssocTerminal0x05 bCSourceID0x02 bNrChannels   (2 
Channels)0x00000003 bmChannelConfig0x00 iChannelNames0x00 bmControls0x00 
iTerminal
AC Feature Unit Descriptor:------------------------------0x12 bLength0x24 
bDescriptorType0x06 bDescriptorSubtype0x12 bUnitID0x11 bSourceID0x00000003 
bmaControls(0)0x0000000C bmaControls(1)0x0000000C bmaControls(2)0x00 iFeature
AC Output Terminal Descriptor:------------------------------0x0C bLength0x24 
bDescriptorType0x03 bDescriptorSubtype0x13 bTerminalID0x0602 wTerminalType   
(Digital audio interface)0x00 bAssocTerminal0x12 bSourceID0x05 bCSourceID0x0000 
bmControls0x00 iTerminal
Interface Descriptor:------------------------------0x09 bLength0x04 
bDescriptorType0x02 bInterfaceNumber0x00 bAlternateSetting0x00 
bNumEndPoints0x01 bInterfaceClass   (Audio Device Class)0x02 bInterfaceSubClass 
  (Audio Streaming Interface)0x20 bInterfaceProtocol   0x00 iInterface
Interface Descriptor:------------------------------0x09 bLength0x04 
bDescriptorType0x02 bInterfaceNumber0x01 bAlternateSetting0x02 
bNumEndPoints0x01 bInterfaceClass   (Audio Device Class)0x02 bInterfaceSubClass 
  (Audio Streaming Interface)0x20 bInterfaceProtocol   0x00 iInterface
AS Interface Descriptor:------------------------------0x10 bLength0x24 
bDescriptorType0x01 bDescriptorSubtype0x11 bTerminalLink0x07 bmControls0x01 
bFormatType   (FORMAT_TYPE_1)0x00000001 bmFormats0x02 bNrChannels   (2 
Channels)0x00000003 bmChannelConfig0x00 iChannelNames
AS Format Type 1 Descriptor:------------------------------0x06 bLength0x24 
bDescriptorType0x02 bDescriptorSubtype0x01 bFormatType   (FORMAT_TYPE_1)0x04 
bSubslotSize0x18 bBitResolution   (24 Bits/sample)
Endpoint Descriptor:------------------------------0x07 bLength0x05 
bDescriptorType0x02 bEndpointAddress   (OUT Endpoint)0x05 bmAttributes 
(Transfer: Isochronous / Synch: Asynchronous / Usage: Data)0x0188 
wMaxPacketSize   (392 Bytes) 0x01 bInterval
AS Isochronous Data Endpoint Descriptor:------------------------------0x08 
bLength0x25 bDescriptorType0x01 bDescriptorSubtype0x00 bmAttributes0x00 
bmControls0x00 bLockDelayUnits   (Undefined)0x0000 wLockDelay
Endpoint Descriptor:------------------------------0x07 bLength0x05 
bDescriptorType0x81 bEndpointAddress   (IN Endpoint)0x11 bmAttributes 
(Transfer: Isochronous / Synch: None / Usage: Feedback)0x0004 wMaxPacketSize   
(4 Bytes) 0x01 bInterval
Interface Descriptor:------------------------------0x09 bLength0x04 
bDescriptorType0x03 bInterfaceNumber0x00 bAlternateSetting0x02 
bNumEndPoints0x03 bInterfaceClass   (Human Interface Device Class)0x00 
bInterfaceSubClass   0x00 bInterfaceProtocol   0x00 iInterface
HID Descriptor:------------------------------0x09 bLength0x21 
bDescriptorType0x0111 bcdHID0x00 bCountryCode0x01 bNumDescriptors0x22 
bDescriptorType   (Report descriptor)0x0043 bDescriptorLength
Endpoint Descriptor:------------------------------0x07 bLength0x05 
bDescriptorType0x84 bEndpointAddress   (IN Endpoint)0x03 bmAttributes 
(Transfer: Interrupt / Synch: None / Usage: Data)0x0008 wMaxPacketSize   (8 
Bytes) 0x05 bInterval
Endpoint Descriptor:------------------------------0x07 bLength0x05 
bDescriptorType0x05 bEndpointAddress   (OUT Endpoint)0x03 bmAttributes 
(Transfer: Interrupt / Synch: None / Usage: Data)0x0008 wMaxPacketSize   (8 
Bytes) 0x05 bInterval
Microsoft OS Descriptor is not available. Error code: 0x0000001F
String Descriptor Table------------------------------ --Index  LANGID  
String0x00   0x0000  0x0409 0x01   0x0409  "Audio-Widget"0x02   0x0409  "Henry 
Audio USB DAC 128 mkII"0x03   0x0409  "2017042900BSB"0x07   0x0409  "Henry 
Audio USB DAC 128 mkII"0x05   0x0409  "Clock 2"0x08   0x0409  "Audio-widget"
------------------------------
Connection path for device: USB xHCI Compliant Host ControllerRoot HubHenry 
Audio USB DAC 128 mkII (VID=0x16D0 PID=0x075D) Port: 2
Running on: Windows 10 or greater
Brought to you by TDD v1.84.0, Dec 14 2015, 09:19:38

On Sat, Jun 3, 2017 at 3:54 AM, Tsai Tzung-Dar <dmarc-noreply@xxxxxxxxxxxxx> 
wrote:

Hi Borge:Could you provide you descriptor? I had product which use XMOS and 
C-Media solution that can list all sample rate. I think maybe your descriptor 
has some problem on it. 
BR,Tzung-Dar Tsai

      寄件者: Børge Strand-Bergesen <borge.strand@xxxxxxxxx>
 收件者: wdmaudiodev@xxxxxxxxxxxxx 
 寄件日期: 2017/6/2 (週五) 9:15 PM
 主旨: [wdmaudiodev] Re: UAC2 on Creator's: locked to 44.1?
  
OK, just did. I hope you see it from the other side :-) 
https://aka.ms/Af3tvq

I have full access to firmware and descriptors on the device. 

Thanks,Børge
On Fri, Jun 2, 2017 at 2:35 PM, Matthew van Eerde <dmarc-noreply@xxxxxxxxxxxxx> 
wrote:

No, the USB Audio 2.0 class driver should support all common sample rates. Can 
you file a problem report in Feedback Hub from the computer in question? 
https://blogs.msdn.microsoft. com/matthew_van_eerde/2016/09/ ;
26/report-problems-with-logs- and-suggest-features-with-the- feedback-hub/ Use 
the “Share” widget to grab a direct link to the problem report in question. 
Send me the link. From: Børge Strand-Bergesen
Sent: Friday, June 2, 2017 3:11 AM
To: wdmaudiodev@xxxxxxxxxxxxx
Subject: [wdmaudiodev] UAC2 on Creator's: locked to 44.1? Hi,   I have a test 
computer with a fresh installation of Win10 Creator's update. UAC2 is 
recognized, but sample rate is locked to 44.1.  Is that on purpose? The same 
DAC (which I sell from www.henryaudio.com) works with all rates from 44.1 to 
192 on other OSes.   Best regards, Børge  



   



   



   

Other related posts: