Microsoft learn keeps automatically deleting my question as soon as I post it there. I think it's because there is no section / tag for USB devices.
USB Audio Device Does Not Receive A Set Interface Request From Windows When Playback Starts
I've been working on writing a custom USB audio speaker device which is currently working when I use a Linux OS with the device. For ease of use reasons, I tried testing the device on Windows 10 and have been unable to get any audio through the device on Windows. Windows device manager recognizes the device as a Sound, video and game controller device and an Audio inputs and outputs device, and shows no errors or warnings with starting the device. However, it is unable to produce any sound. Using a USB traffic analyzer software, I noticed that Windows is not sending a Set Interface request to the Audio Streaming endpoint to set the alternate setting to 1 and enable the endpoint (USB specification requires that audio devices have alternate setting 0 with no endpoint and alternate setting 1 with endpoints included) when playback starts. I also tried testing the sound from right clicking the sound icon on the taskbar, Sounds > Playback, select the device Properties > Advanced and clicking Test. This results in a pop up that says "Error! The format is not supported by this device". I've tried looking at other USB audio device descriptors to see what was different but found nothing and I've tried playing around with the sample rate, but it still doesn't work. Here is the USB descriptor that the device is using (As USB View sees it):
[Port3] : USB Composite Device
Is Port User Connectable: yes
Is Port Debug Capable: no
Companion Port Number: 0
Companion Hub Symbolic Link Name:
Protocols Supported:
USB 1.1: yes
USB 2.0: yes
USB 3.0: no
Device Power State: PowerDeviceD0
---===Device Information===---
English product name: "Riverdi Display Keypad"
ConnectionStatus:
Current Config Value: 0x01 - Device Bus Speed: Full (is not SuperSpeed or higher capable)
Device Address: 0x0F
Open Pipes: 4
===Device Descriptor===
bLength: 0x12
bDescriptorType: 0x01
bcdUSB: 0x0200
bDeviceClass: 0x00 - This is an Interface Class Defined Device
bDeviceSubClass: 0x00
bDeviceProtocol: 0x00
bMaxPacketSize0: 0x08 = (8) Bytes
idVendor: 0x04D8 = Microchip Technology Inc.
idProduct: 0x0055
bcdDevice: 0x0001
iManufacturer: 0x01
English (United States) "TMV Control System Inc."
iProduct: 0x02
English (United States) "Riverdi Display Keypad"
iSerialNumber: 0x00
bNumConfigurations: 0x01
---===Open Pipes===---
===Endpoint Descriptor===
bLength: 0x07
bDescriptorType: 0x05
bEndpointAddress: 0x81 - Direction: IN - EndpointID: 1
bmAttributes: 0x03 - Interrupt Transfer Type
wMaxPacketSize: 0x0008 = 0x08 bytes
bInterval: 0x01
===Endpoint Descriptor===
bLength: 0x07
bDescriptorType: 0x05
bEndpointAddress: 0x01 - Direction: OUT - EndpointID: 1
bmAttributes: 0x03 - Interrupt Transfer Type
wMaxPacketSize: 0x0008 = 0x08 bytes
bInterval: 0x01
===Endpoint Descriptor===
bLength: 0x07
bDescriptorType: 0x05
bEndpointAddress: 0x82 - Direction: IN - EndpointID: 2
bmAttributes: 0x03 - Interrupt Transfer Type
wMaxPacketSize: 0x0040 = 0x40 bytes
bInterval: 0x01
===Endpoint Descriptor===
bLength: 0x07
bDescriptorType: 0x05
bEndpointAddress: 0x02 - Direction: OUT - EndpointID: 2
bmAttributes: 0x03 - Interrupt Transfer Type
wMaxPacketSize: 0x0040 = 0x40 bytes
bInterval: 0x01
---===Full Configuration Descriptor===---
===Configuration Descriptor===
bLength: 0x09
bDescriptorType: 0x02
wTotalLength: 0x00AD - Validated
bNumInterfaces: 0x04
bConfigurationValue: 0x01
iConfiguration: 0x00
bmAttributes: 0xC0 - Self Powered
MaxPower: 0x32 = 100 mA
===Interface Descriptor===
bLength: 0x09
bDescriptorType: 0x04
bInterfaceNumber: 0x00
bAlternateSetting: 0x00
bNumEndpoints: 0x02
bInterfaceClass: 0x03 - HID Interface Class
bInterfaceSubClass: 0x01
bInterfaceProtocol: 0x01
iInterface: 0x00
===HID Descriptor===
bLength: 0x09
bDescriptorType: 0x21
bcdHID: 0x0111
bCountryCode: 0x00
bNumDescriptors: 0x01
bDescriptorType: 0x22 (Report Descriptor)
wDescriptorLength: 0x003F
===Endpoint Descriptor===
bLength: 0x07
bDescriptorType: 0x05
bEndpointAddress: 0x81 - Direction: IN - EndpointID: 1
bmAttributes: 0x03 - Interrupt Transfer Type
wMaxPacketSize: 0x0008 = 0x08 bytes
bInterval: 0x01
===Endpoint Descriptor===
bLength: 0x07
bDescriptorType: 0x05
bEndpointAddress: 0x01 - Direction: OUT - EndpointID: 1
bmAttributes: 0x03 - Interrupt Transfer Type
wMaxPacketSize: 0x0008 = 0x08 bytes
bInterval: 0x01
===Interface Descriptor===
bLength: 0x09
bDescriptorType: 0x04
bInterfaceNumber: 0x01
bAlternateSetting: 0x00
bNumEndpoints: 0x02
bInterfaceClass: 0x03 - HID Interface Class
bInterfaceSubClass: 0x00
bInterfaceProtocol: 0x00
iInterface: 0x00
===HID Descriptor===
bLength: 0x09
bDescriptorType: 0x21
bcdHID: 0x0111
bCountryCode: 0x00
bNumDescriptors: 0x01
bDescriptorType: 0x22 (Report Descriptor)
wDescriptorLength: 0x001D
===Endpoint Descriptor===
bLength: 0x07
bDescriptorType: 0x05
bEndpointAddress: 0x82 - Direction: IN - EndpointID: 2
bmAttributes: 0x03 - Interrupt Transfer Type
wMaxPacketSize: 0x0040 = 0x40 bytes
bInterval: 0x01
===Endpoint Descriptor<===
bLength: 0x07
bDescriptorType: 0x05
bEndpointAddress: 0x02 - Direction: OUT - EndpointID: 2
bmAttributes: 0x03 - Interrupt Transfer Type
wMaxPacketSize: 0x0040 = 0x40 bytes
bInterval: 0x01
===Interface Descriptor===
bLength: 0x09
bDescriptorType: 0x04
bInterfaceNumber: 0x02
bAlternateSetting: 0x00
bNumEndpoints: 0x00
bInterfaceClass: 0x01 -Audio Interface Class
bInterfaceSubClass: 0x01 - Audio Control Interface SubClass
bInterfaceProtocol: 0x00
iInterface: 0x00
===Audio Control Interface Header Descriptor===
bLength: 0x09
bDescriptorType: 0x24 (CS_INTERFACE)
bDescriptorSubtype: 0x01 (HEADER)
bcdADC: 0x0100
wTotalLength: 0x001E
bInCollection: 0x01
baInterfaceNr[1]: 0x03
===Audio Control Input Terminal Descriptor===
bLength: 0x0C
bDescriptorType: 0x24 (CS_INTERFACE)
bDescriptorSubtype: 0x02 (INPUT_TERMINAL)
bTerminalID: 0x01
wTerminalType: 0x0101 (USB streaming)
bAssocTerminal: 0x00
bNrChannels: 0x01
wChannelConfig: 0x0001
(Left Front (L))
iChannelNames: 0x00
iTerminal: 0x00
===Audio Control Output Terminal Descriptor===
bLength: 0x09
bDescriptorType: 0x24 (CS_INTERFACE)
bDescriptorSubtype: 0x03 (OUTPUT_TERMINAL)
bTerminalID: 0x02
wTerminalType: 0x0301 (Speaker)
bAssocTerminal: 0x00
bSourceID: 0x01
iTerminal: 0x00
===Interface Descriptor===
bLength: 0x09
bDescriptorType: 0x04
bInterfaceNumber: 0x03
bAlternateSetting: 0x00
bNumEndpoints: 0x00
bInterfaceClass: 0x01 - Audio Interface Class
bInterfaceSubClass: 0x02 - Audio Streaming Interface SubClass
bInterfaceProtocol: 0x00
iInterface: 0x00
===Interface Descriptor===
bLength: 0x09
bDescriptorType: 0x04
bInterfaceNumber: 0x03
bAlternateSetting: 0x01
bNumEndpoints: 0x02
bInterfaceClass: 0x01 -Audio Interface Class
bInterfaceSubClass: 0x02 - Audio Streaming Interface SubClass
bInterfaceProtocol: 0x00
iInterface: 0x00
===Audio Streaming Class Specific Interface Descriptor===
bLength: 0x07
bDescriptorType: 0x24 (CS_INTERFACE)
bDescriptorSubtype: 0x01 (AS_GENERAL)
bTerminalLink: 0x01
bDelay: 0x01
wFormatTag: 0x0001 (PCM)
===Audio Streaming Format Type Descriptor===
bLength: 0x0B
bDescriptorType: 0x24 (CS_INTERFACE)
bDescriptorSubtype: 0x02 (FORMAT_TYPE)
bFormatType: 0x01 (FORMAT_TYPE_I)
bNrChannels: 0x01
bSubframeSize: 0x02
bBitResolution: 0x10 (16)
bSamFreqType: 0x01 (Discrete)
tSamFreq[1]: 0x00C350 (50000 Hz)
===Endpoint Descriptor===
bLength: 0x09
bDescriptorType: 0x05
bEndpointAddress: 0x03 - Direction: OUT - EndpointID: 3
bmAttributes: 0x09 - Isochronous Transfer Type, Synchronization Type = Adaptive, Usage Type = Data Endpoint
wMaxPacketSize: 0x0180 = 0x180 bytes
wInterval: 0x0001
bSyncAddress: 0x83
===Audio Streaming Class Specific Audio Data Endpoint Descriptor===
bLength: 0x07
bDescriptorType: 0x25 (CS_ENDPOINT)
bDescriptorSubtype: 0x01 (EP_GENERAL)
bmAttributes: 0x01
(Sampling Frequency control)
bLockDelayUnits: 0x00 (Undefined)
wLockDelay: 0x0000
===Endpoint Descriptor===
bLength: 0x09
bDescriptorType: 0x05
bEndpointAddress: 0x83 - Direction: IN - EndpointID: 3
bmAttributes: 0x15 - Isochronous Transfer Type, Synchronization Type = Asynchronous, Usage Type = Feedback Endpoint
wMaxPacketSize: 0x0003 = 0x03 bytes
wInterval: 0x0001
bSyncAddress: 0x00
Windows for home | Windows 10 | Devices and drivers
Locked Question. This question was migrated from the Microsoft Support Community. You can vote on whether it's helpful, but you can't add comments or replies or follow the question.
2 answers
Sort by: Most helpful
-
Anonymous
2024-12-17T14:17:31+00:00 -
Anonymous
2024-12-14T11:41:35+00:00 Hello Bradley Vanderkooy and welcome to the Microsoft Community!
Thanks for visiting Microsoft Community.
I wish I could handle your problem, however, it is more suitable for publishing on Microsoft Learn (English only), more users post these issues there, you can click on "Ask a question", there are experts who can provide more professional solutions in that place.
Here is a link to the forum where you can raise specific scenarios and share your idea to help solve the problem.
Sincerely hope that your question will be dealt with appropriately after contact the correct department. Thank you for your understanding!
We hope you find the above information helpful
Kirito|Microsoft Community Support Specialist