USB Audio samplerates added

Perhaps try the program in the attachment. Select the teensy, scroll the list on the right down. There should be the number 48000 somewhere...
If not, something is wrong with the code on the teensy..

IF there is 48000, shutdown the pc, use different USB-Port and start again (I hope this helps) - Control panel should now show 48kHz
 

Attachments

  • usbtreeview.zip
    333.5 KB · Views: 100
Even if I uninstall both Teeny audio devices, disconnect & connect the T4.0 and then let Windows search and find both Teensy devices again, the Sound Control Panel shows 44100 Hz.

DM.png

Paul
 
Weird, this is what USBtreeview shows on my PC [2 identical entries]:
Code:
        ------- Audio Streaming Format Type Descriptor --------
bLength                  : 0x0B (11 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Format Type)
bFormatType              : 0x01 (FORMAT_TYPE_I)
bNrChannels              : 0x02 (2 channels)
bSubframeSize            : 0x02 (2 bytes per subframe)
bBitResolution           : 0x10 (16 bits per sample)
bSamFreqType             : 0x01 (supports 1 sample frequence)
tSamFreq[1]              : 0x0AC44 (44100 Hz)
Data (HexDump)           : 0B 24 02 01 02 02 10 01 44 AC 00                  .$......D..

Paul
 
Yes, it's a Teensy 4.0.
Just for sanity, I closed the Arduino environment completely and started it up again.
Then recompiled and uploaded the same sketch and now USBtreeview shows:
Code:
        ------- Audio Streaming Format Type Descriptor --------
bLength                  : 0x0B (11 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Format Type)
bFormatType              : 0x01 (FORMAT_TYPE_I)
bNrChannels              : 0x02 (2 channels)
bSubframeSize            : 0x02 (2 bytes per subframe)
bBitResolution           : 0x10 (16 bits per sample)
bSamFreqType             : 0x01 (supports 1 sample frequence)
tSamFreq[1]              : 0x0BB80 (48000 Hz)
Data (HexDump)           : 0B 24 02 01 02 02 10 01 80 BB 00                  .$.........

48 kHz! Strange...
And the Sound Control Panel shows 48 kHz as well:
SCP.png

But no sine wave is outputted this time...

Paul
 
Perhaps your sine program doesn't like the Teensy? I have no other Idea.
Ok, I took your program, and the thing I modified was to use the PT8211 instead.
I use WInAmp to play a radio stream. Sounds good.
This is how it looks like in Windows. Accidentially, it uses still the 88.2 KHz which I had choosen to test the WavePlayer.
2021-07-31 18_24_33-Eigenschaften von Digitale Audioschnittstelle.png2021-07-31 18_24_51-Eigenschaften von Digitale Audioschnittstelle.png2021-07-31 18_25_12-Eigenschaften von Digitale Audioschnittstelle.png2021-07-31 18_25_27-Eigenschaften von Digitale Audioschnittstelle.png
 
Perhaps your sine program doesn't like the Teensy?
Yeah, could be. Although in the Sound Control Panel [which has less tabs then before - Advanced and Spatial Sound are missing] the Test button has been greyed out... I set the sample rate to be 88200 Hz as well.

SCP.png

So I installed Audacity and generated a 1kHz tone at 88200 Hz. When I tried to play this 30sec audioclip, Audacity bails out with this error:

AUD.jpg

Not sure what to do next... Did you mention that you forgot to include a changed file?

Paul
 
I don't know.
Attached my current local Teensy4 directory.

If that still does not work (make sure to make a "clean" build)... then I don't know what's going on.
 

Attachments

  • teensy4.zip
    415.1 KB · Views: 101
Thanks for the zip file.
Did a clean Teensyduino 1.54 re-install. Then copied all the files from your zip file over to the teensy4 directory.
Opened the Arduino IDE, compiled and ran the sketch.
Result is exactly the same as in my previous message #33. Schade.
Not sure what is going on - my guess is that Windows 10 is just very picky here? For example, it shows less tabs at the 88200 kHz setting.

DAIP441.png DAIP882.png

I think I'm going to stop here...but thanks for your efforts!

Paul
 
I was playing with as simple testcode to see if I could use Franks adaptations to get other sample rates.

I simply took the teensy4.zip from a few posts back and copied it over my teensy4 folder and compiled my code and it instantly changed the 44.1 khs audio device info an 88.2kHz device.

Somehow it seems only 88.2kHz is possible now, when I change #define AUDIO_SAMPLE_RATE_EXACT 88200.0f in AudioStream.h back to 44100.1f widows does not recognize the sample rate anymore.

I can not figure out how that happens. Can AUDIO_SAMPLE_RATE_EXACT mess op some other part when it is not 88200?

I'd like to use an even higher sample rate if possible, allthough 88.2kHz is working, there are missing samples in the test setup. (Tone created by teensy4.0)
I tried 176400 which did not work, but als the very standard 44.100 was not recognized, I changed ports, removed the device form the device manager but only 88.2kHz seems functional.

Edwin
 
Thank you Franck B for your work on samplerate.

Like Edwin, i try to make it work on Windows 10.
Samplerate is correct in USBTreeView but i get an error when using Audacity (the same than PaulS).
44.1k is ok on my side.
I suspect a problem with the USB descriptor. Windows is not handling the device correctly.
 
Hey that is funny, I was under the impression I already posted a reply.

@Frank B, It's nice to see you are still checking this tread Frank, maybe you are still willing to look over this.
@ damienb, I have doubt that it is the descriptor although that should probably be the thing windows is looking at. The difference in the 88200 and 44100 clearly seems to be that tSamFreq is changing properly.

Only a few other things change, but somehow the 88200 is recognized properly.
This is all the info from the usbtreeview tool. First here is the working 88200

Code:
    =========================== USB Port2 ===========================

Connection Status        : 0x01 (Device is connected)
Port Chain               : 1-2
Properties               : 0x01
 IsUserConnectable       : yes
 PortIsDebugCapable      : no
 PortHasMultiCompanions  : no
 PortConnectorIsTypeC    : no
ConnectionIndex          : 0x02 (Port 2)
CompanionIndex           : 0
 CompanionHubSymLnk      : USB#ROOT_HUB30#4&1b449bd0&0&0#{f18a0e88-c30c-11d0-8815-00a0c906bed8}
 CompanionPortNumber     : 0x0F (Port 15)
 -> CompanionPortChain   : 1-15

      ========================== Summary =========================
Vendor ID                : 0x16C0 (Van Ooijen Technische Informatica)
Product ID               : 0x04D2
USB version              : 2.00
Port maximum Speed       : High-Speed (Companion Port 15 supports SuperSpeed)
Device maximum Speed     : High-Speed
Device Connection Speed  : High-Speed
Self Powered             : yes
Demanded Current         : 100 mA
Used Endpoints           : 3

      ======================== USB Device ========================

        +++++++++++++++++ Device Information ++++++++++++++++++
Device Description       : Samengesteld USB-apparaat
Device Path              : \\?\USB#VID_16C0&PID_04D2#7797670#{a5dcbf10-6530-11d2-901f-00c04fb951ed} (GUID_DEVINTERFACE_USB_DEVICE)
Kernel Name              : \Device\USBPDO-5
Device ID                : USB\VID_16C0&PID_04D2\7797670
Hardware IDs             : USB\VID_16C0&PID_04D2&REV_0279 USB\VID_16C0&PID_04D2
Driver KeyName           : {36fc9e60-c465-11cf-8056-444553540000}\0018 (GUID_DEVCLASS_USB)
Driver                   : \SystemRoot\System32\drivers\usbccgp.sys (Version: 10.0.19041.488  Date: 2021-04-10)
Driver Inf               : C:\WINDOWS\inf\usb.inf
Legacy BusType           : PNPBus
Class                    : USB
Class GUID               : {36fc9e60-c465-11cf-8056-444553540000} (GUID_DEVCLASS_USB)
Service                  : usbccgp
Enumerator               : USB
Location Info            : Port_#0002.Hub_#0001
Location IDs             : PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(2), ACPI(_SB_)#ACPI(PCI0)#ACPI(XHC_)#ACPI(RHUB)#ACPI(HS02)
Container ID             : {fe359e51-cae4-55b3-9570-041e928a841f}
Manufacturer Info        : (Standaard USB Host Controller)
Capabilities             : 0x94 (Removable, UniqueID, SurpriseRemovalOK)
Status                   : 0x0180600A (DN_DRIVER_LOADED, DN_STARTED, DN_DISABLEABLE, DN_REMOVABLE, DN_NT_ENUMERATOR, DN_NT_DRIVER)
Problem Code             : 0
Address                  : 2
HcDisableSelectiveSuspend: 0
EnableSelectiveSuspend   : 0
SelectiveSuspendEnabled  : 0
EnhancedPowerMgmtEnabled : 0
IdleInWorkingState       : 0
WakeFromSleepState       : 0
Power State              : D0 (supported: D0, D3, wake from D0)
 Child Device 1          : USB-invoerapparaat
  Device ID              : USB\VID_16C0&PID_04D2&MI_00\6&3AF2CCF1&0&0000
  Class                  : HIDClass
  Driver KeyName         : {745a17a0-74d3-11d0-b6fe-00a0c90f57da}\0033 (GUID_DEVCLASS_HIDCLASS)
  Service                : HidUsb
   Child Device 1        : HID-compatibel, door leverancier gedefinieerd apparaat
    Device Path          : \\?\HID#VID_16C0&PID_04D2&MI_00#7&262b987&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} (GUID_DEVINTERFACE_HID)
    Kernel Name          : \Device\000000f0
    Device ID            : HID\VID_16C0&PID_04D2&MI_00\7&262B987&0&0000
    Class                : HIDClass
    Driver KeyName       : {745a17a0-74d3-11d0-b6fe-00a0c90f57da}\0034 (GUID_DEVCLASS_HIDCLASS)
 Child Device 2          : Teensy Audio (USB-audioapparaat)
  Device Path 1          : \\?\USB#VID_16C0&PID_04D2&MI_01#6&3af2ccf1&0&0001#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global (AM_KSCATEGORY_CAPTURE)
  Device Path 2          : \\?\USB#VID_16C0&PID_04D2&MI_01#6&3af2ccf1&0&0001#{65e8773e-8f56-11d0-a3b9-00a0c9223196}\global (AM_KSCATEGORY_RENDER)
  Device Path 3          : \\?\USB#VID_16C0&PID_04D2&MI_01#6&3af2ccf1&0&0001#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\global (AM_KSCATEGORY_AUDIO)
  Kernel Name            : \Device\000000ee
  Device ID              : USB\VID_16C0&PID_04D2&MI_01\6&3AF2CCF1&0&0001
  Class                  : MEDIA
  Driver KeyName         : {4d36e96c-e325-11ce-bfc1-08002be10318}\0002 (GUID_DEVCLASS_MEDIA)
  Service                : usbaudio
   Child Device 1        : Digitale audio-interface (Teensy Audio) (Audio-eindpunt)
    Device Path          : \\?\SWD#MMDEVAPI#{0.0.0.00000000}.{abff4845-7bdc-4ea1-bd83-bc852fcf0ca4}#{e6327cad-dcec-4949-ae8a-991e976a79d2} (DEVINTERFACE_AUDIO_RENDER)
    Kernel Name          : \Device\000000f1
    Device ID            : SWD\MMDEVAPI\{0.0.0.00000000}.{ABFF4845-7BDC-4EA1-BD83-BC852FCF0CA4}
    Class                : AudioEndpoint
    Driver KeyName       : {c166523c-fe0c-4a94-a586-f1a80cfbbf3e}\0006 (AUDIOENDPOINT_CLASS_UUID)
   Child Device 2        : Microfoon (Teensy Audio) (Audio-eindpunt)
    Device Path          : \\?\SWD#MMDEVAPI#{0.0.1.00000000}.{df7d12b1-d47c-4d99-a500-d9e2198504c8}#{2eef81be-33fa-4800-9670-1cd474972c3f} (DEVINTERFACE_AUDIO_CAPTURE)
    Kernel Name          : \Device\000000f2
    Device ID            : SWD\MMDEVAPI\{0.0.1.00000000}.{DF7D12B1-D47C-4D99-A500-D9E2198504C8}
    Class                : AudioEndpoint
    Driver KeyName       : {c166523c-fe0c-4a94-a586-f1a80cfbbf3e}\0014 (AUDIOENDPOINT_CLASS_UUID)

        +++++++++++++++++ Registry USB Flags +++++++++++++++++
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\16C004D20279
 osvc                    : REG_BINARY 00 00

        ---------------- Connection Information ---------------
Connection Index         : 0x02 (Port 2)
Connection Status        : 0x01 (DeviceConnected)
Current Config Value     : 0x01 (Configuration 1)
Device Address           : 0x0E (14)
Is Hub                   : 0x00 (no)
Device Bus Speed         : 0x02 (High-Speed)
Number Of Open Pipes     : 0x02 (2 pipes to data endpoints)
Pipe[0]                  : EndpointID=2  Direction=IN   ScheduleOffset=0  Type=Interrupt
Pipe[1]                  : EndpointID=2  Direction=OUT  ScheduleOffset=0  Type=Interrupt
Data (HexDump)           : 02 00 00 00 12 01 00 02 00 00 00 40 C0 16 D2 04   ...........@....
                           79 02 01 02 03 01 01 02 00 0E 00 02 00 00 00 01   y...............
                           00 00 00 07 05 82 03 40 00 01 00 00 00 00 07 05   .......@........
                           02 03 20 00 02 00 00 00 00                        .. ......

        --------------- Connection Information V2 -------------
Connection Index         : 0x02 (2)
Length                   : 0x10 (16 bytes)
SupportedUsbProtocols    : 0x03
 Usb110                  : 1 (yes, port supports USB 1.1)
 Usb200                  : 1 (yes, port supports USB 2.0)
 Usb300                  : 0 (no, port not supports USB 3.0) -> but Companion Port 1-15 does
 ReservedMBZ             : 0x00
Flags                    : 0x00
 DevIsOpAtSsOrHigher     : 0 (Device is not operating at SuperSpeed or higher)
 DevIsSsCapOrHigher      : 0 (Device is not SuperSpeed capable or higher)
 DevIsOpAtSsPlusOrHigher : 0 (Device is not operating at SuperSpeedPlus or higher)
 DevIsSsPlusCapOrHigher  : 0 (Device is not SuperSpeedPlus capable or higher)
 ReservedMBZ             : 0x00
Data (HexDump)           : 02 00 00 00 10 00 00 00 03 00 00 00 00 00 00 00   ................

    ---------------------- Device Descriptor ----------------------
bLength                  : 0x12 (18 bytes)
bDescriptorType          : 0x01 (Device Descriptor)
bcdUSB                   : 0x200 (USB Version 2.00)
bDeviceClass             : 0x00 (defined by the interface descriptors)
bDeviceSubClass          : 0x00
bDeviceProtocol          : 0x00
bMaxPacketSize0          : 0x40 (64 bytes)
idVendor                 : 0x16C0 (Van Ooijen Technische Informatica)
idProduct                : 0x04D2
bcdDevice                : 0x0279
iManufacturer            : 0x01 (String Descriptor 1)
 Language 0x0409         : "Teensyduino"
iProduct                 : 0x02 (String Descriptor 2)
 Language 0x0409         : "Teensy Audio"
iSerialNumber            : 0x03 (String Descriptor 3)
 Language 0x0409         : "7797670"
bNumConfigurations       : 0x01 (1 Configuration)
Data (HexDump)           : 12 01 00 02 00 00 00 40 C0 16 D2 04 79 02 01 02   .......@....y...
                           03 01                                             ..

    ------------------ Configuration Descriptor -------------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x02 (Configuration Descriptor)
wTotalLength             : 0x00E9 (233 bytes)
bNumInterfaces           : 0x04 (4 Interfaces)
bConfigurationValue      : 0x01 (Configuration 1)
iConfiguration           : 0x00 (No String Descriptor)
bmAttributes             : 0xC0
 D7: Reserved, set 1     : 0x01
 D6: Self Powered        : 0x01 (yes)
 D5: Remote Wakeup       : 0x00 (no)
 D4..0: Reserved, set 0  : 0x00
MaxPower                 : 0x32 (100 mA)
Data (HexDump)           : 09 02 E9 00 04 01 00 C0 32 09 04 00 00 02 03 00   ........2.......
                           00 00 09 21 11 01 00 01 22 21 00 07 05 82 03 40   ...!...."!.....@
                           00 01 07 05 02 03 20 00 02 08 0B 01 03 01 01 00   ...... .........
                           00 09 04 01 00 00 01 01 00 00 0A 24 01 00 01 3E   ...........$...>
                           00 02 02 03 0C 24 02 01 01 02 00 01 00 00 00 00   .....$..........
                           09 24 03 02 01 01 00 01 00 0C 24 02 03 01 01 00   .$........$.....
                           02 03 00 00 00 0A 24 06 31 03 01 01 02 02 00 09   ......$.1.......
                           24 03 04 02 06 00 31 00 09 04 02 00 00 01 02 00   $.....1.........
                           00 09 04 02 01 01 01 02 00 00 07 24 01 02 03 01   ...........$....
                           00 0B 24 02 01 02 02 10 01 88 58 01 09 05 83 09   ..$.......X.....
                           64 01 04 00 00 07 25 01 00 00 00 00 09 04 03 00   d.....%.........
                           00 01 02 00 00 09 04 03 01 02 01 02 00 00 07 24   ...............$
                           01 03 03 01 00 0B 24 02 01 02 02 10 01 88 58 01   ......$.......X.
                           09 05 03 05 64 01 04 00 84 07 25 01 00 00 00 00   ....d.....%.....
                           09 05 84 11 04 00 04 07 00                        .........

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x00
bAlternateSetting        : 0x00
bNumEndpoints            : 0x02 (2 Endpoints)
bInterfaceClass          : 0x03 (HID - Human Interface Device)
bInterfaceSubClass       : 0x00 (None)
bInterfaceProtocol       : 0x00 (None)
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 00 00 02 03 00 00 00                        .........

        ------------------- HID Descriptor --------------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x21 (HID Descriptor)
bcdHID                   : 0x0111 (HID Version 1.11)
bCountryCode             : 0x00 (00 = not localized)
bNumDescriptors          : 0x01
Data (HexDump)           : 09 21 11 01 00 01 22 21 00                        .!...."!.
Descriptor 1:
bDescriptorType          : 0x22 (Class=Report)
wDescriptorLength        : 0x0021 (33 bytes)
Error reading descriptor : ERROR_INVALID_PARAMETER (due to a obscure limitation of the Win32 USB API, see UsbTreeView.txt)

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x82 (Direction=IN EndpointID=2)
bmAttributes             : 0x03 (TransferType=Interrupt)
wMaxPacketSize           : 0x0040
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0x40 (64 bytes per packet)
bInterval                : 0x01 (1 ms)
Data (HexDump)           : 07 05 82 03 40 00 01                              ....@..

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x02 (Direction=OUT EndpointID=2)
bmAttributes             : 0x03 (TransferType=Interrupt)
wMaxPacketSize           : 0x0020
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0x20 (32 bytes per packet)
bInterval                : 0x02 (2 ms)
Data (HexDump)           : 07 05 02 03 20 00 02                              .... ..

        ------------------- IAD Descriptor --------------------
bLength                  : 0x08 (8 bytes)
bDescriptorType          : 0x0B
bFirstInterface          : 0x01
bInterfaceCount          : 0x03
bFunctionClass           : 0x01 (Audio)
bFunctionSubClass        : 0x01 (Audio Control)
bFunctionProtocol        : 0x00
iFunction                : 0x00 (No String Descriptor)
Data (HexDump)           : 08 0B 01 03 01 01 00 00                           ........

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x01
bAlternateSetting        : 0x00
bNumEndpoints            : 0x00 (Default Control Pipe only)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x01 (Audio Control)
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 01 00 00 01 01 00 00                        .........

        ------ Audio Control Interface Header Descriptor ------
bLength                  : 0x0A (10 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x01 (Header)
bcdADC                   : 0x0100
wTotalLength             : 0x003E (62 bytes)
bInCollection            : 0x02
baInterfaceNr[1]         : 0x02
baInterfaceNr[2]         : 0x03
Data (HexDump)           : 0A 24 01 00 01 3E 00 02 02 03                     .$...>....

        ------- Audio Control Input Terminal Descriptor -------
bLength                  : 0x0C (12 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Input Terminal)
bTerminalID              : 0x01
wTerminalType            : 0x0201 (Microphone)
bAssocTerminal           : 0x00
bNrChannels              : 0x01 (1 channel)
wChannelConfig           : 0x0000 (-)
iChannelNames            : 0x00 (No String Descriptor)
iTerminal                : 0x00 (No String Descriptor)
Data (HexDump)           : 0C 24 02 01 01 02 00 01 00 00 00 00               .$..........

        ------- Audio Control Output Terminal Descriptor ------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x03 (Output Terminal)
bTerminalID              : 0x02
wTerminalType            : 0x0101 (USB streaming)
bAssocTerminal           : 0x00 (0)
bSourceID                : 0x01 (1)
iTerminal                : 0x00 (No String Descriptor)
Data (HexDump)           : 09 24 03 02 01 01 00 01 00                        .$.......

        ------- Audio Control Input Terminal Descriptor -------
bLength                  : 0x0C (12 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Input Terminal)
bTerminalID              : 0x03
wTerminalType            : 0x0101 (USB streaming)
bAssocTerminal           : 0x00
bNrChannels              : 0x02 (2 channels)
wChannelConfig           : 0x0003 (L, R)
iChannelNames            : 0x00 (No String Descriptor)
iTerminal                : 0x00 (No String Descriptor)
Data (HexDump)           : 0C 24 02 03 01 01 00 02 03 00 00 00               .$..........

        -------- Audio Control Feature Unit Descriptor --------
bLength                  : 0x0A (10 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x06 (Feature Unit)
bUnitID                  : 0x31 (49)
bSourceID                : 0x03 (3)
bControlSize             : 0x01 (1 byte per control)
bmaControls[0]           : 0x01
 D0: Mute                : 1
 D1: Volume              : 0
 D2: Bass                : 0
 D3: Mid                 : 0
 D4: Treble              : 0
 D5: Graphic Equalizer   : 0
 D6: Automatic Gain      : 0
 D7: Delay               : 0
bmaControls[1]           : 0x02
 D0: Mute                : 0
 D1: Volume              : 1
 D2: Bass                : 0
 D3: Mid                 : 0
 D4: Treble              : 0
 D5: Graphic Equalizer   : 0
 D6: Automatic Gain      : 0
 D7: Delay               : 0
bmaControls[2]           : 0x02
 D0: Mute                : 0
 D1: Volume              : 1
 D2: Bass                : 0
 D3: Mid                 : 0
 D4: Treble              : 0
 D5: Graphic Equalizer   : 0
 D6: Automatic Gain      : 0
 D7: Delay               : 0
iFeature                 : 0x00 (No String Descriptor)
Data (HexDump)           : 0A 24 06 31 03 01 01 02 02 00                     .$.1......

        ------- Audio Control Output Terminal Descriptor ------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x03 (Output Terminal)
bTerminalID              : 0x04
wTerminalType            : 0x0602 (Digital audio interface)
bAssocTerminal           : 0x00 (0)
bSourceID                : 0x31 (49)
iTerminal                : 0x00 (No String Descriptor)
Data (HexDump)           : 09 24 03 04 02 06 00 31 00                        .$.....1.

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x02
bAlternateSetting        : 0x00
bNumEndpoints            : 0x00 (Default Control Pipe only)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 02 00 00 01 02 00 00                        .........

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x02
bAlternateSetting        : 0x01
bNumEndpoints            : 0x01 (1 Endpoint)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 02 01 01 01 02 00 00                        .........

        -------- Audio Streaming Interface Descriptor ---------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x01
bTerminalLink            : 0x02
bDelay                   : 0x03
wFormatTag               : 0x0001 (PCM)
Data (HexDump)           : 07 24 01 02 03 01 00                              .$.....

        ------- Audio Streaming Format Type Descriptor --------
bLength                  : 0x0B (11 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Format Type)
bFormatType              : 0x01 (FORMAT_TYPE_I)
bNrChannels              : 0x02 (2 channels)
bSubframeSize            : 0x02 (2 bytes per subframe)
bBitResolution           : 0x10 (16 bits per sample)
bSamFreqType             : 0x01 (supports 1 sample frequence)
tSamFreq[1]              : 0x15888 (88200 Hz)
Data (HexDump)           : 0B 24 02 01 02 02 10 01 88 58 01                  .$.......X.

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x83 (Direction=IN EndpointID=3)
bmAttributes             : 0x09 (TransferType=Isochronous  SyncType=Adaptive  EndpointType=Data)
wMaxPacketSize           : 0x0164
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0x164 (356 bytes per packet)
bInterval                : 0x04 (4 ms)
bRefresh                 : 0x00
bSynchAddress            : 0x00
Data (HexDump)           : 09 05 83 09 64 01 04 00 00                        ....d....

        ----------- Audio Data Endpoint Descriptor ------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x25 (Audio Endpoint Descriptor)
bDescriptorSubtype       : 0x01 (General)
bmAttributes             : 0x00
 D0   : Sampling Freq    : 0x00 (not supported)
 D1   : Pitch            : 0x00 (not supported)
 D6..2: Reserved         : 0x00
 D7   : MaxPacketsOnly   : 0x00 (no)
bLockDelayUnits          : 0x00 (Undefined)
wLockDelay               : 0x0000
Data (HexDump)           : 07 25 01 00 00 00 00                              .%.....

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x03
bAlternateSetting        : 0x00
bNumEndpoints            : 0x00 (Default Control Pipe only)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 03 00 00 01 02 00 00                        .........

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x03
bAlternateSetting        : 0x01
bNumEndpoints            : 0x02 (2 Endpoints)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 03 01 02 01 02 00 00                        .........

        -------- Audio Streaming Interface Descriptor ---------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x01
bTerminalLink            : 0x03
bDelay                   : 0x03
wFormatTag               : 0x0001 (PCM)
Data (HexDump)           : 07 24 01 03 03 01 00                              .$.....

        ------- Audio Streaming Format Type Descriptor --------
bLength                  : 0x0B (11 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Format Type)
bFormatType              : 0x01 (FORMAT_TYPE_I)
bNrChannels              : 0x02 (2 channels)
bSubframeSize            : 0x02 (2 bytes per subframe)
bBitResolution           : 0x10 (16 bits per sample)
bSamFreqType             : 0x01 (supports 1 sample frequence)
tSamFreq[1]              : 0x15888 (88200 Hz)
Data (HexDump)           : 0B 24 02 01 02 02 10 01 88 58 01                  .$.......X.

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x03 (Direction=OUT EndpointID=3)
bmAttributes             : 0x05 (TransferType=Isochronous  SyncType=Asynchronous  EndpointType=Data)
wMaxPacketSize           : 0x0164
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0x164 (356 bytes per packet)
bInterval                : 0x04 (4 ms)
bRefresh                 : 0x00
bSynchAddress            : 0x84 (Direction=IN EndpointID=4)
Data (HexDump)           : 09 05 03 05 64 01 04 00 84                        ....d....

        ----------- Audio Data Endpoint Descriptor ------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x25 (Audio Endpoint Descriptor)
bDescriptorSubtype       : 0x01 (General)
bmAttributes             : 0x00
 D0   : Sampling Freq    : 0x00 (not supported)
 D1   : Pitch            : 0x00 (not supported)
 D6..2: Reserved         : 0x00
 D7   : MaxPacketsOnly   : 0x00 (no)
bLockDelayUnits          : 0x00 (Undefined)
wLockDelay               : 0x0000
Data (HexDump)           : 07 25 01 00 00 00 00                              .%.....

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x84 (Direction=IN EndpointID=4)
bmAttributes             : 0x11 (TransferType=Isochronous  SyncType=None  EndpointType=Feedback)
wMaxPacketSize           : 0x0004
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0x04 (4 bytes per packet)
bInterval                : 0x04 (4 ms)
bRefresh                 : 0x07 (128 ms)
bSynchAddress            : 0x00
Data (HexDump)           : 09 05 84 11 04 00 04 07 00                        .........

    ----------------- Device Qualifier Descriptor -----------------
bLength                  : 0x0A (10 bytes)
bDescriptorType          : 0x06 (Device_qualifier Descriptor)
bcdUSB                   : 0x200 (USB Version 2.00)
bDeviceClass             : 0x00 (defined by the interface descriptors)
bDeviceSubClass          : 0x00
bDeviceProtocol          : 0x00
bMaxPacketSize0          : 0x40 (64 Bytes)
bNumConfigurations       : 0x01 (1 other-speed configuration)
bReserved                : 0x00
Data (HexDump)           : 0A 06 00 02 00 00 00 40 01 00                     .......@..

    ------------ Other Speed Configuration Descriptor -------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x07 (Other_speed_configuration Descriptor)
wTotalLength             : 0x00E9 (233 bytes)
bNumInterfaces           : 0x04 (4 Interfaces)
bConfigurationValue      : 0x01 (Configuration 1)
iConfiguration           : 0x00 (No String Descriptor)
bmAttributes             : 0xC0
 D7: Reserved, set 1     : 0x01
 D6: Self Powered        : 0x01 (yes)
 D5: Remote Wakeup       : 0x00 (no)
 D4..0: Reserved, set 0  : 0x00
MaxPower                 : 0x32 (100 mA)
Data (HexDump)           : 09 07 E9 00 04 01 00 C0 32 09 04 00 00 02 03 00   ........2.......
                           00 00 09 21 11 01 00 01 22 21 00 07 05 82 03 40   ...!...."!.....@
                           00 01 07 05 02 03 20 00 02 08 0B 01 03 01 01 00   ...... .........
                           00 09 04 01 00 00 01 01 00 00 0A 24 01 00 01 3E   ...........$...>
                           00 02 02 03 0C 24 02 01 01 02 00 00 00 00 00 00   .....$..........
                           09 24 03 02 01 01 00 01 00 0C 24 02 03 01 01 00   .$........$.....
                           02 03 00 00 00 0A 24 06 31 03 01 01 02 02 00 09   ......$.1.......
                           24 03 04 02 06 00 31 00 09 04 02 00 00 01 02 00   $.....1.........
                           00 09 04 02 01 01 01 02 00 00 07 24 01 02 03 01   ...........$....
                           00 0B 24 02 01 02 02 10 01 88 58 01 09 05 83 09   ..$.......X.....
                           64 01 01 00 00 07 25 01 00 00 00 00 09 04 03 00   d.....%.........
                           00 01 02 00 00 09 04 03 01 02 01 02 00 00 07 24   ...............$
                           01 03 03 01 00 0B 24 02 01 02 02 10 01 88 58 01   ......$.......X.
                           09 05 03 05 64 01 01 00 84 07 25 01 00 00 00 00   ....d.....%.....
                           09 05 84 11 03 00 01 05 00                        .........

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x00
bAlternateSetting        : 0x00
bNumEndpoints            : 0x02 (2 Endpoints)
bInterfaceClass          : 0x03 (HID - Human Interface Device)
bInterfaceSubClass       : 0x00 (None)
bInterfaceProtocol       : 0x00 (None)
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 00 00 02 03 00 00 00                        .........

        ------------------- HID Descriptor --------------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x21 (HID Descriptor)
bcdHID                   : 0x0111 (HID Version 1.11)
bCountryCode             : 0x00 (00 = not localized)
bNumDescriptors          : 0x01
Data (HexDump)           : 09 21 11 01 00 01 22 21 00                        .!...."!.
Descriptor 1:
bDescriptorType          : 0x22 (Class=Report)
wDescriptorLength        : 0x0021 (33 bytes)
Error reading descriptor : ERROR_INVALID_PARAMETER (due to a obscure limitation of the Win32 USB API, see UsbTreeView.txt)

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x82 (Direction=IN EndpointID=2)
bmAttributes             : 0x03 (TransferType=Interrupt)
wMaxPacketSize           : 0x0040
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0x40 (64 bytes per packet)
bInterval                : 0x01 (1 ms)
Data (HexDump)           : 07 05 82 03 40 00 01                              ....@..

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x02 (Direction=OUT EndpointID=2)
bmAttributes             : 0x03 (TransferType=Interrupt)
wMaxPacketSize           : 0x0020
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0x20 (32 bytes per packet)
bInterval                : 0x02 (2 ms)
Data (HexDump)           : 07 05 02 03 20 00 02                              .... ..

        ------------------- IAD Descriptor --------------------
bLength                  : 0x08 (8 bytes)
bDescriptorType          : 0x0B
bFirstInterface          : 0x01
bInterfaceCount          : 0x03
bFunctionClass           : 0x01 (Audio)
bFunctionSubClass        : 0x01 (Audio Control)
bFunctionProtocol        : 0x00
iFunction                : 0x00 (No String Descriptor)
Data (HexDump)           : 08 0B 01 03 01 01 00 00                           ........

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x01
bAlternateSetting        : 0x00
bNumEndpoints            : 0x00 (Default Control Pipe only)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x01 (Audio Control)
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 01 00 00 01 01 00 00                        .........

        ------ Audio Control Interface Header Descriptor ------
bLength                  : 0x0A (10 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x01 (Header)
bcdADC                   : 0x0100
wTotalLength             : 0x003E (62 bytes)
bInCollection            : 0x02
baInterfaceNr[1]         : 0x02
baInterfaceNr[2]         : 0x03
Data (HexDump)           : 0A 24 01 00 01 3E 00 02 02 03                     .$...>....

        ------- Audio Control Input Terminal Descriptor -------
bLength                  : 0x0C (12 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Input Terminal)
bTerminalID              : 0x01
wTerminalType            : 0x0201 (Microphone)
bAssocTerminal           : 0x00
bNrChannels              : 0x00 (0 channels)
wChannelConfig           : 0x0000 (-)
iChannelNames            : 0x00 (No String Descriptor)
iTerminal                : 0x00 (No String Descriptor)
Data (HexDump)           : 0C 24 02 01 01 02 00 00 00 00 00 00               .$..........

        ------- Audio Control Output Terminal Descriptor ------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x03 (Output Terminal)
bTerminalID              : 0x02
wTerminalType            : 0x0101 (USB streaming)
bAssocTerminal           : 0x00 (0)
bSourceID                : 0x01 (1)
iTerminal                : 0x00 (No String Descriptor)
Data (HexDump)           : 09 24 03 02 01 01 00 01 00                        .$.......

        ------- Audio Control Input Terminal Descriptor -------
bLength                  : 0x0C (12 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Input Terminal)
bTerminalID              : 0x03
wTerminalType            : 0x0101 (USB streaming)
bAssocTerminal           : 0x00
bNrChannels              : 0x02 (2 channels)
wChannelConfig           : 0x0003 (L, R)
iChannelNames            : 0x00 (No String Descriptor)
iTerminal                : 0x00 (No String Descriptor)
Data (HexDump)           : 0C 24 02 03 01 01 00 02 03 00 00 00               .$..........

        -------- Audio Control Feature Unit Descriptor --------
bLength                  : 0x0A (10 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x06 (Feature Unit)
bUnitID                  : 0x31 (49)
bSourceID                : 0x03 (3)
bControlSize             : 0x01 (1 byte per control)
bmaControls[0]           : 0x01
 D0: Mute                : 1
 D1: Volume              : 0
 D2: Bass                : 0
 D3: Mid                 : 0
 D4: Treble              : 0
 D5: Graphic Equalizer   : 0
 D6: Automatic Gain      : 0
 D7: Delay               : 0
bmaControls[1]           : 0x02
 D0: Mute                : 0
 D1: Volume              : 1
 D2: Bass                : 0
 D3: Mid                 : 0
 D4: Treble              : 0
 D5: Graphic Equalizer   : 0
 D6: Automatic Gain      : 0
 D7: Delay               : 0
bmaControls[2]           : 0x02
 D0: Mute                : 0
 D1: Volume              : 1
 D2: Bass                : 0
 D3: Mid                 : 0
 D4: Treble              : 0
 D5: Graphic Equalizer   : 0
 D6: Automatic Gain      : 0
 D7: Delay               : 0
iFeature                 : 0x00 (No String Descriptor)
Data (HexDump)           : 0A 24 06 31 03 01 01 02 02 00                     .$.1......

        ------- Audio Control Output Terminal Descriptor ------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x03 (Output Terminal)
bTerminalID              : 0x04
wTerminalType            : 0x0602 (Digital audio interface)
bAssocTerminal           : 0x00 (0)
bSourceID                : 0x31 (49)
iTerminal                : 0x00 (No String Descriptor)
Data (HexDump)           : 09 24 03 04 02 06 00 31 00                        .$.....1.

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x02
bAlternateSetting        : 0x00
bNumEndpoints            : 0x00 (Default Control Pipe only)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 02 00 00 01 02 00 00                        .........

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x02
bAlternateSetting        : 0x01
bNumEndpoints            : 0x01 (1 Endpoint)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 02 01 01 01 02 00 00                        .........

        -------- Audio Streaming Interface Descriptor ---------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x01
bTerminalLink            : 0x02
bDelay                   : 0x03
wFormatTag               : 0x0001 (PCM)
Data (HexDump)           : 07 24 01 02 03 01 00                              .$.....

        ------- Audio Streaming Format Type Descriptor --------
bLength                  : 0x0B (11 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Format Type)
bFormatType              : 0x01 (FORMAT_TYPE_I)
bNrChannels              : 0x02 (2 channels)
bSubframeSize            : 0x02 (2 bytes per subframe)
bBitResolution           : 0x10 (16 bits per sample)
bSamFreqType             : 0x01 (supports 1 sample frequence)
tSamFreq[1]              : 0x15888 (88200 Hz)
Data (HexDump)           : 0B 24 02 01 02 02 10 01 88 58 01                  .$.......X.

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x83 (Direction=IN EndpointID=3)
bmAttributes             : 0x09 (TransferType=Isochronous  SyncType=Adaptive  EndpointType=Data)
wMaxPacketSize           : 0x0164
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0x164 (356 bytes per packet)
bInterval                : 0x01 (1 ms)
bRefresh                 : 0x00
bSynchAddress            : 0x00
Data (HexDump)           : 09 05 83 09 64 01 01 00 00                        ....d....

        ----------- Audio Data Endpoint Descriptor ------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x25 (Audio Endpoint Descriptor)
bDescriptorSubtype       : 0x01 (General)
bmAttributes             : 0x00
 D0   : Sampling Freq    : 0x00 (not supported)
 D1   : Pitch            : 0x00 (not supported)
 D6..2: Reserved         : 0x00
 D7   : MaxPacketsOnly   : 0x00 (no)
bLockDelayUnits          : 0x00 (Undefined)
wLockDelay               : 0x0000
Data (HexDump)           : 07 25 01 00 00 00 00                              .%.....

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x03
bAlternateSetting        : 0x00
bNumEndpoints            : 0x00 (Default Control Pipe only)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 03 00 00 01 02 00 00                        .........

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x03
bAlternateSetting        : 0x01
bNumEndpoints            : 0x02 (2 Endpoints)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 03 01 02 01 02 00 00                        .........

        -------- Audio Streaming Interface Descriptor ---------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x01
bTerminalLink            : 0x03
bDelay                   : 0x03
wFormatTag               : 0x0001 (PCM)
Data (HexDump)           : 07 24 01 03 03 01 00                              .$.....

        ------- Audio Streaming Format Type Descriptor --------
bLength                  : 0x0B (11 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Format Type)
bFormatType              : 0x01 (FORMAT_TYPE_I)
bNrChannels              : 0x02 (2 channels)
bSubframeSize            : 0x02 (2 bytes per subframe)
bBitResolution           : 0x10 (16 bits per sample)
bSamFreqType             : 0x01 (supports 1 sample frequence)
tSamFreq[1]              : 0x15888 (88200 Hz)
Data (HexDump)           : 0B 24 02 01 02 02 10 01 88 58 01                  .$.......X.

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x03 (Direction=OUT EndpointID=3)
bmAttributes             : 0x05 (TransferType=Isochronous  SyncType=Asynchronous  EndpointType=Data)
wMaxPacketSize           : 0x0164
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0x164 (356 bytes per packet)
bInterval                : 0x01 (1 ms)
bRefresh                 : 0x00
bSynchAddress            : 0x84 (Direction=IN EndpointID=4)
Data (HexDump)           : 09 05 03 05 64 01 01 00 84                        ....d....

        ----------- Audio Data Endpoint Descriptor ------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x25 (Audio Endpoint Descriptor)
bDescriptorSubtype       : 0x01 (General)
bmAttributes             : 0x00
 D0   : Sampling Freq    : 0x00 (not supported)
 D1   : Pitch            : 0x00 (not supported)
 D6..2: Reserved         : 0x00
 D7   : MaxPacketsOnly   : 0x00 (no)
bLockDelayUnits          : 0x00 (Undefined)
wLockDelay               : 0x0000
Data (HexDump)           : 07 25 01 00 00 00 00                              .%.....

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x84 (Direction=IN EndpointID=4)
bmAttributes             : 0x11 (TransferType=Isochronous  SyncType=None  EndpointType=Feedback)
wMaxPacketSize           : 0x0003
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0x03 (3 bytes per packet)
bInterval                : 0x01 (1 ms)
bRefresh                 : 0x05 (32 ms)
bSynchAddress            : 0x00
Data (HexDump)           : 09 05 84 11 03 00 01 05 00                        .........

      -------------------- String Descriptors -------------------
             ------ String Descriptor 0 ------
bLength                  : 0x04 (4 bytes)
bDescriptorType          : 0x03 (String Descriptor)
Language ID[0]           : 0x0409 (English - United States)
Data (HexDump)           : 04 03 09 04                                       ....
             ------ String Descriptor 1 ------
bLength                  : 0x18 (24 bytes)
bDescriptorType          : 0x03 (String Descriptor)
Language 0x0409          : "Teensyduino"
Data (HexDump)           : 18 03 54 00 65 00 65 00 6E 00 73 00 79 00 64 00   ..T.e.e.n.s.y.d.
                           75 00 69 00 6E 00 6F 00                           u.i.n.o.
             ------ String Descriptor 2 ------
bLength                  : 0x1A (26 bytes)
bDescriptorType          : 0x03 (String Descriptor)
Language 0x0409          : "Teensy Audio"
Data (HexDump)           : 1A 03 54 00 65 00 65 00 6E 00 73 00 79 00 20 00   ..T.e.e.n.s.y. .
                           41 00 75 00 64 00 69 00 6F 00                     A.u.d.i.o.
             ------ String Descriptor 3 ------
bLength                  : 0x10 (16 bytes)
bDescriptorType          : 0x03 (String Descriptor)
Language 0x0409          : "7797670"
Data (HexDump)           : 10 03 37 00 37 00 39 00 37 00 36 00 37 00 30 00   ..7.7.9.7.6.7.0.



This second part is the same code on 44100 which is not recognized properly.

Code:
    =========================== USB Port2 ===========================

Connection Status        : 0x01 (Device is connected)
Port Chain               : 1-2
Properties               : 0x01
 IsUserConnectable       : yes
 PortIsDebugCapable      : no
 PortHasMultiCompanions  : no
 PortConnectorIsTypeC    : no
ConnectionIndex          : 0x02 (Port 2)
CompanionIndex           : 0
 CompanionHubSymLnk      : USB#ROOT_HUB30#4&1b449bd0&0&0#{f18a0e88-c30c-11d0-8815-00a0c906bed8}
 CompanionPortNumber     : 0x0F (Port 15)
 -> CompanionPortChain   : 1-15

      ========================== Summary =========================
Vendor ID                : 0x16C0 (Van Ooijen Technische Informatica)
Product ID               : 0x04D2
USB version              : 2.00
Port maximum Speed       : High-Speed (Companion Port 15 supports SuperSpeed)
Device maximum Speed     : High-Speed
Device Connection Speed  : High-Speed
Self Powered             : yes
Demanded Current         : 100 mA
Used Endpoints           : 3

      ======================== USB Device ========================

        +++++++++++++++++ Device Information ++++++++++++++++++
Device Description       : Samengesteld USB-apparaat
Device Path              : \\?\USB#VID_16C0&PID_04D2#7797670#{a5dcbf10-6530-11d2-901f-00c04fb951ed} (GUID_DEVINTERFACE_USB_DEVICE)
Kernel Name              : \Device\USBPDO-5
Device ID                : USB\VID_16C0&PID_04D2\7797670
Hardware IDs             : USB\VID_16C0&PID_04D2&REV_0279 USB\VID_16C0&PID_04D2
Driver KeyName           : {36fc9e60-c465-11cf-8056-444553540000}\0018 (GUID_DEVCLASS_USB)
Driver                   : \SystemRoot\System32\drivers\usbccgp.sys (Version: 10.0.19041.488  Date: 2021-04-10)
Driver Inf               : C:\WINDOWS\inf\usb.inf
Legacy BusType           : PNPBus
Class                    : USB
Class GUID               : {36fc9e60-c465-11cf-8056-444553540000} (GUID_DEVCLASS_USB)
Service                  : usbccgp
Enumerator               : USB
Location Info            : Port_#0002.Hub_#0001
Location IDs             : PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(2), ACPI(_SB_)#ACPI(PCI0)#ACPI(XHC_)#ACPI(RHUB)#ACPI(HS02)
Container ID             : {fe359e51-cae4-55b3-9570-041e928a841f}
Manufacturer Info        : (Standaard USB Host Controller)
Capabilities             : 0x94 (Removable, UniqueID, SurpriseRemovalOK)
Status                   : 0x0180600A (DN_DRIVER_LOADED, DN_STARTED, DN_DISABLEABLE, DN_REMOVABLE, DN_NT_ENUMERATOR, DN_NT_DRIVER)
Problem Code             : 0
Address                  : 2
HcDisableSelectiveSuspend: 0
EnableSelectiveSuspend   : 0
SelectiveSuspendEnabled  : 0
EnhancedPowerMgmtEnabled : 0
IdleInWorkingState       : 0
WakeFromSleepState       : 0
Power State              : D0 (supported: D0, D3, wake from D0)
 Child Device 1          : USB-invoerapparaat
  Device ID              : USB\VID_16C0&PID_04D2&MI_00\6&3AF2CCF1&0&0000
  Class                  : HIDClass
  Driver KeyName         : {745a17a0-74d3-11d0-b6fe-00a0c90f57da}\0033 (GUID_DEVCLASS_HIDCLASS)
  Service                : HidUsb
   Child Device 1        : HID-compatibel, door leverancier gedefinieerd apparaat
    Device Path          : \\?\HID#VID_16C0&PID_04D2&MI_00#7&262b987&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} (GUID_DEVINTERFACE_HID)
    Kernel Name          : \Device\00000118
    Device ID            : HID\VID_16C0&PID_04D2&MI_00\7&262B987&0&0000
    Class                : HIDClass
    Driver KeyName       : {745a17a0-74d3-11d0-b6fe-00a0c90f57da}\0034 (GUID_DEVCLASS_HIDCLASS)
 Child Device 2          : Teensy Audio (USB-audioapparaat)
  Device Path 1          : \\?\USB#VID_16C0&PID_04D2&MI_01#6&3af2ccf1&0&0001#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global (AM_KSCATEGORY_CAPTURE)
  Device Path 2          : \\?\USB#VID_16C0&PID_04D2&MI_01#6&3af2ccf1&0&0001#{65e8773e-8f56-11d0-a3b9-00a0c9223196}\global (AM_KSCATEGORY_RENDER)
  Device Path 3          : \\?\USB#VID_16C0&PID_04D2&MI_01#6&3af2ccf1&0&0001#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\global (AM_KSCATEGORY_AUDIO)
  Kernel Name            : \Device\00000116
  Device ID              : USB\VID_16C0&PID_04D2&MI_01\6&3AF2CCF1&0&0001
  Class                  : MEDIA
  Driver KeyName         : {4d36e96c-e325-11ce-bfc1-08002be10318}\0002 (GUID_DEVCLASS_MEDIA)
  Service                : usbaudio
   Child Device 1        : Digitale audio-interface (Teensy Audio) (Audio-eindpunt)
    Device Path          : \\?\SWD#MMDEVAPI#{0.0.0.00000000}.{abff4845-7bdc-4ea1-bd83-bc852fcf0ca4}#{e6327cad-dcec-4949-ae8a-991e976a79d2} (DEVINTERFACE_AUDIO_RENDER)
    Kernel Name          : \Device\0000011b
    Device ID            : SWD\MMDEVAPI\{0.0.0.00000000}.{ABFF4845-7BDC-4EA1-BD83-BC852FCF0CA4}
    Class                : AudioEndpoint
    Driver KeyName       : {c166523c-fe0c-4a94-a586-f1a80cfbbf3e}\0006 (AUDIOENDPOINT_CLASS_UUID)
   Child Device 2        : Microfoon (Teensy Audio) (Audio-eindpunt)
    Device Path          : \\?\SWD#MMDEVAPI#{0.0.1.00000000}.{df7d12b1-d47c-4d99-a500-d9e2198504c8}#{2eef81be-33fa-4800-9670-1cd474972c3f} (DEVINTERFACE_AUDIO_CAPTURE)
    Kernel Name          : \Device\0000011c
    Device ID            : SWD\MMDEVAPI\{0.0.1.00000000}.{DF7D12B1-D47C-4D99-A500-D9E2198504C8}
    Class                : AudioEndpoint
    Driver KeyName       : {c166523c-fe0c-4a94-a586-f1a80cfbbf3e}\0014 (AUDIOENDPOINT_CLASS_UUID)

        +++++++++++++++++ Registry USB Flags +++++++++++++++++
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\16C004D20279
 osvc                    : REG_BINARY 00 00

        ---------------- Connection Information ---------------
Connection Index         : 0x02 (Port 2)
Connection Status        : 0x01 (DeviceConnected)
Current Config Value     : 0x01 (Configuration 1)
Device Address           : 0x13 (19)
Is Hub                   : 0x00 (no)
Device Bus Speed         : 0x02 (High-Speed)
Number Of Open Pipes     : 0x02 (2 pipes to data endpoints)
Pipe[0]                  : EndpointID=2  Direction=IN   ScheduleOffset=0  Type=Interrupt
Pipe[1]                  : EndpointID=2  Direction=OUT  ScheduleOffset=0  Type=Interrupt
Data (HexDump)           : 02 00 00 00 12 01 00 02 00 00 00 40 C0 16 D2 04   ...........@....
                           79 02 01 02 03 01 01 02 00 13 00 02 00 00 00 01   y...............
                           00 00 00 07 05 82 03 40 00 01 00 00 00 00 07 05   .......@........
                           02 03 20 00 02 00 00 00 00                        .. ......

        --------------- Connection Information V2 -------------
Connection Index         : 0x02 (2)
Length                   : 0x10 (16 bytes)
SupportedUsbProtocols    : 0x03
 Usb110                  : 1 (yes, port supports USB 1.1)
 Usb200                  : 1 (yes, port supports USB 2.0)
 Usb300                  : 0 (no, port not supports USB 3.0) -> but Companion Port 1-15 does
 ReservedMBZ             : 0x00
Flags                    : 0x00
 DevIsOpAtSsOrHigher     : 0 (Device is not operating at SuperSpeed or higher)
 DevIsSsCapOrHigher      : 0 (Device is not SuperSpeed capable or higher)
 DevIsOpAtSsPlusOrHigher : 0 (Device is not operating at SuperSpeedPlus or higher)
 DevIsSsPlusCapOrHigher  : 0 (Device is not SuperSpeedPlus capable or higher)
 ReservedMBZ             : 0x00
Data (HexDump)           : 02 00 00 00 10 00 00 00 03 00 00 00 00 00 00 00   ................

    ---------------------- Device Descriptor ----------------------
bLength                  : 0x12 (18 bytes)
bDescriptorType          : 0x01 (Device Descriptor)
bcdUSB                   : 0x200 (USB Version 2.00)
bDeviceClass             : 0x00 (defined by the interface descriptors)
bDeviceSubClass          : 0x00
bDeviceProtocol          : 0x00
bMaxPacketSize0          : 0x40 (64 bytes)
idVendor                 : 0x16C0 (Van Ooijen Technische Informatica)
idProduct                : 0x04D2
bcdDevice                : 0x0279
iManufacturer            : 0x01 (String Descriptor 1)
 Language 0x0409         : "Teensyduino"
iProduct                 : 0x02 (String Descriptor 2)
 Language 0x0409         : "Teensy Audio"
iSerialNumber            : 0x03 (String Descriptor 3)
 Language 0x0409         : "7797670"
bNumConfigurations       : 0x01 (1 Configuration)
Data (HexDump)           : 12 01 00 02 00 00 00 40 C0 16 D2 04 79 02 01 02   .......@....y...
                           03 01                                             ..

    ------------------ Configuration Descriptor -------------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x02 (Configuration Descriptor)
wTotalLength             : 0x00E9 (233 bytes)
bNumInterfaces           : 0x04 (4 Interfaces)
bConfigurationValue      : 0x01 (Configuration 1)
iConfiguration           : 0x00 (No String Descriptor)
bmAttributes             : 0xC0
 D7: Reserved, set 1     : 0x01
 D6: Self Powered        : 0x01 (yes)
 D5: Remote Wakeup       : 0x00 (no)
 D4..0: Reserved, set 0  : 0x00
MaxPower                 : 0x32 (100 mA)
Data (HexDump)           : 09 02 E9 00 04 01 00 C0 32 09 04 00 00 02 03 00   ........2.......
                           00 00 09 21 11 01 00 01 22 21 00 07 05 82 03 40   ...!...."!.....@
                           00 01 07 05 02 03 20 00 02 08 0B 01 03 01 01 00   ...... .........
                           00 09 04 01 00 00 01 01 00 00 0A 24 01 00 01 3E   ...........$...>
                           00 02 02 03 0C 24 02 01 01 02 00 01 00 00 00 00   .....$..........
                           09 24 03 02 01 01 00 01 00 0C 24 02 03 01 01 00   .$........$.....
                           02 03 00 00 00 0A 24 06 31 03 01 01 02 02 00 09   ......$.1.......
                           24 03 04 02 06 00 31 00 09 04 02 00 00 01 02 00   $.....1.........
                           00 09 04 02 01 01 01 02 00 00 07 24 01 02 03 01   ...........$....
                           00 0B 24 02 01 02 02 10 01 44 AC 00 09 05 83 09   ..$......D......
                           B4 00 04 00 00 07 25 01 00 00 00 00 09 04 03 00   ......%.........
                           00 01 02 00 00 09 04 03 01 02 01 02 00 00 07 24   ...............$
                           01 03 03 01 00 0B 24 02 01 02 02 10 01 44 AC 00   ......$......D..
                           09 05 03 05 B4 00 04 00 84 07 25 01 00 00 00 00   ..........%.....
                           09 05 84 11 04 00 04 07 00                        .........

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x00
bAlternateSetting        : 0x00
bNumEndpoints            : 0x02 (2 Endpoints)
bInterfaceClass          : 0x03 (HID - Human Interface Device)
bInterfaceSubClass       : 0x00 (None)
bInterfaceProtocol       : 0x00 (None)
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 00 00 02 03 00 00 00                        .........

        ------------------- HID Descriptor --------------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x21 (HID Descriptor)
bcdHID                   : 0x0111 (HID Version 1.11)
bCountryCode             : 0x00 (00 = not localized)
bNumDescriptors          : 0x01
Data (HexDump)           : 09 21 11 01 00 01 22 21 00                        .!...."!.
Descriptor 1:
bDescriptorType          : 0x22 (Class=Report)
wDescriptorLength        : 0x0021 (33 bytes)
Error reading descriptor : ERROR_INVALID_PARAMETER (due to a obscure limitation of the Win32 USB API, see UsbTreeView.txt)

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x82 (Direction=IN EndpointID=2)
bmAttributes             : 0x03 (TransferType=Interrupt)
wMaxPacketSize           : 0x0040
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0x40 (64 bytes per packet)
bInterval                : 0x01 (1 ms)
Data (HexDump)           : 07 05 82 03 40 00 01                              ....@..

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x02 (Direction=OUT EndpointID=2)
bmAttributes             : 0x03 (TransferType=Interrupt)
wMaxPacketSize           : 0x0020
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0x20 (32 bytes per packet)
bInterval                : 0x02 (2 ms)
Data (HexDump)           : 07 05 02 03 20 00 02                              .... ..

        ------------------- IAD Descriptor --------------------
bLength                  : 0x08 (8 bytes)
bDescriptorType          : 0x0B
bFirstInterface          : 0x01
bInterfaceCount          : 0x03
bFunctionClass           : 0x01 (Audio)
bFunctionSubClass        : 0x01 (Audio Control)
bFunctionProtocol        : 0x00
iFunction                : 0x00 (No String Descriptor)
Data (HexDump)           : 08 0B 01 03 01 01 00 00                           ........

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x01
bAlternateSetting        : 0x00
bNumEndpoints            : 0x00 (Default Control Pipe only)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x01 (Audio Control)
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 01 00 00 01 01 00 00                        .........

        ------ Audio Control Interface Header Descriptor ------
bLength                  : 0x0A (10 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x01 (Header)
bcdADC                   : 0x0100
wTotalLength             : 0x003E (62 bytes)
bInCollection            : 0x02
baInterfaceNr[1]         : 0x02
baInterfaceNr[2]         : 0x03
Data (HexDump)           : 0A 24 01 00 01 3E 00 02 02 03                     .$...>....

        ------- Audio Control Input Terminal Descriptor -------
bLength                  : 0x0C (12 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Input Terminal)
bTerminalID              : 0x01
wTerminalType            : 0x0201 (Microphone)
bAssocTerminal           : 0x00
bNrChannels              : 0x01 (1 channel)
wChannelConfig           : 0x0000 (-)
iChannelNames            : 0x00 (No String Descriptor)
iTerminal                : 0x00 (No String Descriptor)
Data (HexDump)           : 0C 24 02 01 01 02 00 01 00 00 00 00               .$..........

        ------- Audio Control Output Terminal Descriptor ------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x03 (Output Terminal)
bTerminalID              : 0x02
wTerminalType            : 0x0101 (USB streaming)
bAssocTerminal           : 0x00 (0)
bSourceID                : 0x01 (1)
iTerminal                : 0x00 (No String Descriptor)
Data (HexDump)           : 09 24 03 02 01 01 00 01 00                        .$.......

        ------- Audio Control Input Terminal Descriptor -------
bLength                  : 0x0C (12 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Input Terminal)
bTerminalID              : 0x03
wTerminalType            : 0x0101 (USB streaming)
bAssocTerminal           : 0x00
bNrChannels              : 0x02 (2 channels)
wChannelConfig           : 0x0003 (L, R)
iChannelNames            : 0x00 (No String Descriptor)
iTerminal                : 0x00 (No String Descriptor)
Data (HexDump)           : 0C 24 02 03 01 01 00 02 03 00 00 00               .$..........

        -------- Audio Control Feature Unit Descriptor --------
bLength                  : 0x0A (10 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x06 (Feature Unit)
bUnitID                  : 0x31 (49)
bSourceID                : 0x03 (3)
bControlSize             : 0x01 (1 byte per control)
bmaControls[0]           : 0x01
 D0: Mute                : 1
 D1: Volume              : 0
 D2: Bass                : 0
 D3: Mid                 : 0
 D4: Treble              : 0
 D5: Graphic Equalizer   : 0
 D6: Automatic Gain      : 0
 D7: Delay               : 0
bmaControls[1]           : 0x02
 D0: Mute                : 0
 D1: Volume              : 1
 D2: Bass                : 0
 D3: Mid                 : 0
 D4: Treble              : 0
 D5: Graphic Equalizer   : 0
 D6: Automatic Gain      : 0
 D7: Delay               : 0
bmaControls[2]           : 0x02
 D0: Mute                : 0
 D1: Volume              : 1
 D2: Bass                : 0
 D3: Mid                 : 0
 D4: Treble              : 0
 D5: Graphic Equalizer   : 0
 D6: Automatic Gain      : 0
 D7: Delay               : 0
iFeature                 : 0x00 (No String Descriptor)
Data (HexDump)           : 0A 24 06 31 03 01 01 02 02 00                     .$.1......

        ------- Audio Control Output Terminal Descriptor ------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x03 (Output Terminal)
bTerminalID              : 0x04
wTerminalType            : 0x0602 (Digital audio interface)
bAssocTerminal           : 0x00 (0)
bSourceID                : 0x31 (49)
iTerminal                : 0x00 (No String Descriptor)
Data (HexDump)           : 09 24 03 04 02 06 00 31 00                        .$.....1.

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x02
bAlternateSetting        : 0x00
bNumEndpoints            : 0x00 (Default Control Pipe only)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 02 00 00 01 02 00 00                        .........

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x02
bAlternateSetting        : 0x01
bNumEndpoints            : 0x01 (1 Endpoint)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 02 01 01 01 02 00 00                        .........

        -------- Audio Streaming Interface Descriptor ---------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x01
bTerminalLink            : 0x02
bDelay                   : 0x03
wFormatTag               : 0x0001 (PCM)
Data (HexDump)           : 07 24 01 02 03 01 00                              .$.....

        ------- Audio Streaming Format Type Descriptor --------
bLength                  : 0x0B (11 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Format Type)
bFormatType              : 0x01 (FORMAT_TYPE_I)
bNrChannels              : 0x02 (2 channels)
bSubframeSize            : 0x02 (2 bytes per subframe)
bBitResolution           : 0x10 (16 bits per sample)
bSamFreqType             : 0x01 (supports 1 sample frequence)
tSamFreq[1]              : 0x0AC44 (44100 Hz)
Data (HexDump)           : 0B 24 02 01 02 02 10 01 44 AC 00                  .$......D..

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x83 (Direction=IN EndpointID=3)
bmAttributes             : 0x09 (TransferType=Isochronous  SyncType=Adaptive  EndpointType=Data)
wMaxPacketSize           : 0x00B4
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0xB4 (180 bytes per packet)
bInterval                : 0x04 (4 ms)
bRefresh                 : 0x00
bSynchAddress            : 0x00
Data (HexDump)           : 09 05 83 09 B4 00 04 00 00                        .........

        ----------- Audio Data Endpoint Descriptor ------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x25 (Audio Endpoint Descriptor)
bDescriptorSubtype       : 0x01 (General)
bmAttributes             : 0x00
 D0   : Sampling Freq    : 0x00 (not supported)
 D1   : Pitch            : 0x00 (not supported)
 D6..2: Reserved         : 0x00
 D7   : MaxPacketsOnly   : 0x00 (no)
bLockDelayUnits          : 0x00 (Undefined)
wLockDelay               : 0x0000
Data (HexDump)           : 07 25 01 00 00 00 00                              .%.....

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x03
bAlternateSetting        : 0x00
bNumEndpoints            : 0x00 (Default Control Pipe only)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 03 00 00 01 02 00 00                        .........

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x03
bAlternateSetting        : 0x01
bNumEndpoints            : 0x02 (2 Endpoints)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 03 01 02 01 02 00 00                        .........

        -------- Audio Streaming Interface Descriptor ---------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x01
bTerminalLink            : 0x03
bDelay                   : 0x03
wFormatTag               : 0x0001 (PCM)
Data (HexDump)           : 07 24 01 03 03 01 00                              .$.....

        ------- Audio Streaming Format Type Descriptor --------
bLength                  : 0x0B (11 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Format Type)
bFormatType              : 0x01 (FORMAT_TYPE_I)
bNrChannels              : 0x02 (2 channels)
bSubframeSize            : 0x02 (2 bytes per subframe)
bBitResolution           : 0x10 (16 bits per sample)
bSamFreqType             : 0x01 (supports 1 sample frequence)
tSamFreq[1]              : 0x0AC44 (44100 Hz)
Data (HexDump)           : 0B 24 02 01 02 02 10 01 44 AC 00                  .$......D..

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x03 (Direction=OUT EndpointID=3)
bmAttributes             : 0x05 (TransferType=Isochronous  SyncType=Asynchronous  EndpointType=Data)
wMaxPacketSize           : 0x00B4
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0xB4 (180 bytes per packet)
bInterval                : 0x04 (4 ms)
bRefresh                 : 0x00
bSynchAddress            : 0x84 (Direction=IN EndpointID=4)
Data (HexDump)           : 09 05 03 05 B4 00 04 00 84                        .........

        ----------- Audio Data Endpoint Descriptor ------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x25 (Audio Endpoint Descriptor)
bDescriptorSubtype       : 0x01 (General)
bmAttributes             : 0x00
 D0   : Sampling Freq    : 0x00 (not supported)
 D1   : Pitch            : 0x00 (not supported)
 D6..2: Reserved         : 0x00
 D7   : MaxPacketsOnly   : 0x00 (no)
bLockDelayUnits          : 0x00 (Undefined)
wLockDelay               : 0x0000
Data (HexDump)           : 07 25 01 00 00 00 00                              .%.....

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x84 (Direction=IN EndpointID=4)
bmAttributes             : 0x11 (TransferType=Isochronous  SyncType=None  EndpointType=Feedback)
wMaxPacketSize           : 0x0004
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0x04 (4 bytes per packet)
bInterval                : 0x04 (4 ms)
bRefresh                 : 0x07 (128 ms)
bSynchAddress            : 0x00
Data (HexDump)           : 09 05 84 11 04 00 04 07 00                        .........

    ----------------- Device Qualifier Descriptor -----------------
bLength                  : 0x0A (10 bytes)
bDescriptorType          : 0x06 (Device_qualifier Descriptor)
bcdUSB                   : 0x200 (USB Version 2.00)
bDeviceClass             : 0x00 (defined by the interface descriptors)
bDeviceSubClass          : 0x00
bDeviceProtocol          : 0x00
bMaxPacketSize0          : 0x40 (64 Bytes)
bNumConfigurations       : 0x01 (1 other-speed configuration)
bReserved                : 0x00
Data (HexDump)           : 0A 06 00 02 00 00 00 40 01 00                     .......@..

    ------------ Other Speed Configuration Descriptor -------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x07 (Other_speed_configuration Descriptor)
wTotalLength             : 0x00E9 (233 bytes)
bNumInterfaces           : 0x04 (4 Interfaces)
bConfigurationValue      : 0x01 (Configuration 1)
iConfiguration           : 0x00 (No String Descriptor)
bmAttributes             : 0xC0
 D7: Reserved, set 1     : 0x01
 D6: Self Powered        : 0x01 (yes)
 D5: Remote Wakeup       : 0x00 (no)
 D4..0: Reserved, set 0  : 0x00
MaxPower                 : 0x32 (100 mA)
Data (HexDump)           : 09 07 E9 00 04 01 00 C0 32 09 04 00 00 02 03 00   ........2.......
                           00 00 09 21 11 01 00 01 22 21 00 07 05 82 03 40   ...!...."!.....@
                           00 01 07 05 02 03 20 00 02 08 0B 01 03 01 01 00   ...... .........
                           00 09 04 01 00 00 01 01 00 00 0A 24 01 00 01 3E   ...........$...>
                           00 02 02 03 0C 24 02 01 01 02 00 00 00 00 00 00   .....$..........
                           09 24 03 02 01 01 00 01 00 0C 24 02 03 01 01 00   .$........$.....
                           02 03 00 00 00 0A 24 06 31 03 01 01 02 02 00 09   ......$.1.......
                           24 03 04 02 06 00 31 00 09 04 02 00 00 01 02 00   $.....1.........
                           00 09 04 02 01 01 01 02 00 00 07 24 01 02 03 01   ...........$....
                           00 0B 24 02 01 02 02 10 01 44 AC 00 09 05 83 09   ..$......D......
                           B4 00 01 00 00 07 25 01 00 00 00 00 09 04 03 00   ......%.........
                           00 01 02 00 00 09 04 03 01 02 01 02 00 00 07 24   ...............$
                           01 03 03 01 00 0B 24 02 01 02 02 10 01 44 AC 00   ......$......D..
                           09 05 03 05 B4 00 01 00 84 07 25 01 00 00 00 00   ..........%.....
                           09 05 84 11 03 00 01 05 00                        .........

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x00
bAlternateSetting        : 0x00
bNumEndpoints            : 0x02 (2 Endpoints)
bInterfaceClass          : 0x03 (HID - Human Interface Device)
bInterfaceSubClass       : 0x00 (None)
bInterfaceProtocol       : 0x00 (None)
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 00 00 02 03 00 00 00                        .........

        ------------------- HID Descriptor --------------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x21 (HID Descriptor)
bcdHID                   : 0x0111 (HID Version 1.11)
bCountryCode             : 0x00 (00 = not localized)
bNumDescriptors          : 0x01
Data (HexDump)           : 09 21 11 01 00 01 22 21 00                        .!...."!.
Descriptor 1:
bDescriptorType          : 0x22 (Class=Report)
wDescriptorLength        : 0x0021 (33 bytes)
Error reading descriptor : ERROR_INVALID_PARAMETER (due to a obscure limitation of the Win32 USB API, see UsbTreeView.txt)

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x82 (Direction=IN EndpointID=2)
bmAttributes             : 0x03 (TransferType=Interrupt)
wMaxPacketSize           : 0x0040
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0x40 (64 bytes per packet)
bInterval                : 0x01 (1 ms)
Data (HexDump)           : 07 05 82 03 40 00 01                              ....@..

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x02 (Direction=OUT EndpointID=2)
bmAttributes             : 0x03 (TransferType=Interrupt)
wMaxPacketSize           : 0x0020
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0x20 (32 bytes per packet)
bInterval                : 0x02 (2 ms)
Data (HexDump)           : 07 05 02 03 20 00 02                              .... ..

        ------------------- IAD Descriptor --------------------
bLength                  : 0x08 (8 bytes)
bDescriptorType          : 0x0B
bFirstInterface          : 0x01
bInterfaceCount          : 0x03
bFunctionClass           : 0x01 (Audio)
bFunctionSubClass        : 0x01 (Audio Control)
bFunctionProtocol        : 0x00
iFunction                : 0x00 (No String Descriptor)
Data (HexDump)           : 08 0B 01 03 01 01 00 00                           ........

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x01
bAlternateSetting        : 0x00
bNumEndpoints            : 0x00 (Default Control Pipe only)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x01 (Audio Control)
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 01 00 00 01 01 00 00                        .........

        ------ Audio Control Interface Header Descriptor ------
bLength                  : 0x0A (10 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x01 (Header)
bcdADC                   : 0x0100
wTotalLength             : 0x003E (62 bytes)
bInCollection            : 0x02
baInterfaceNr[1]         : 0x02
baInterfaceNr[2]         : 0x03
Data (HexDump)           : 0A 24 01 00 01 3E 00 02 02 03                     .$...>....

        ------- Audio Control Input Terminal Descriptor -------
bLength                  : 0x0C (12 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Input Terminal)
bTerminalID              : 0x01
wTerminalType            : 0x0201 (Microphone)
bAssocTerminal           : 0x00
bNrChannels              : 0x00 (0 channels)
wChannelConfig           : 0x0000 (-)
iChannelNames            : 0x00 (No String Descriptor)
iTerminal                : 0x00 (No String Descriptor)
Data (HexDump)           : 0C 24 02 01 01 02 00 00 00 00 00 00               .$..........

        ------- Audio Control Output Terminal Descriptor ------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x03 (Output Terminal)
bTerminalID              : 0x02
wTerminalType            : 0x0101 (USB streaming)
bAssocTerminal           : 0x00 (0)
bSourceID                : 0x01 (1)
iTerminal                : 0x00 (No String Descriptor)
Data (HexDump)           : 09 24 03 02 01 01 00 01 00                        .$.......

        ------- Audio Control Input Terminal Descriptor -------
bLength                  : 0x0C (12 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Input Terminal)
bTerminalID              : 0x03
wTerminalType            : 0x0101 (USB streaming)
bAssocTerminal           : 0x00
bNrChannels              : 0x02 (2 channels)
wChannelConfig           : 0x0003 (L, R)
iChannelNames            : 0x00 (No String Descriptor)
iTerminal                : 0x00 (No String Descriptor)
Data (HexDump)           : 0C 24 02 03 01 01 00 02 03 00 00 00               .$..........

        -------- Audio Control Feature Unit Descriptor --------
bLength                  : 0x0A (10 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x06 (Feature Unit)
bUnitID                  : 0x31 (49)
bSourceID                : 0x03 (3)
bControlSize             : 0x01 (1 byte per control)
bmaControls[0]           : 0x01
 D0: Mute                : 1
 D1: Volume              : 0
 D2: Bass                : 0
 D3: Mid                 : 0
 D4: Treble              : 0
 D5: Graphic Equalizer   : 0
 D6: Automatic Gain      : 0
 D7: Delay               : 0
bmaControls[1]           : 0x02
 D0: Mute                : 0
 D1: Volume              : 1
 D2: Bass                : 0
 D3: Mid                 : 0
 D4: Treble              : 0
 D5: Graphic Equalizer   : 0
 D6: Automatic Gain      : 0
 D7: Delay               : 0
bmaControls[2]           : 0x02
 D0: Mute                : 0
 D1: Volume              : 1
 D2: Bass                : 0
 D3: Mid                 : 0
 D4: Treble              : 0
 D5: Graphic Equalizer   : 0
 D6: Automatic Gain      : 0
 D7: Delay               : 0
iFeature                 : 0x00 (No String Descriptor)
Data (HexDump)           : 0A 24 06 31 03 01 01 02 02 00                     .$.1......

        ------- Audio Control Output Terminal Descriptor ------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x03 (Output Terminal)
bTerminalID              : 0x04
wTerminalType            : 0x0602 (Digital audio interface)
bAssocTerminal           : 0x00 (0)
bSourceID                : 0x31 (49)
iTerminal                : 0x00 (No String Descriptor)
Data (HexDump)           : 09 24 03 04 02 06 00 31 00                        .$.....1.

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x02
bAlternateSetting        : 0x00
bNumEndpoints            : 0x00 (Default Control Pipe only)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 02 00 00 01 02 00 00                        .........

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x02
bAlternateSetting        : 0x01
bNumEndpoints            : 0x01 (1 Endpoint)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 02 01 01 01 02 00 00                        .........

        -------- Audio Streaming Interface Descriptor ---------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x01
bTerminalLink            : 0x02
bDelay                   : 0x03
wFormatTag               : 0x0001 (PCM)
Data (HexDump)           : 07 24 01 02 03 01 00                              .$.....

        ------- Audio Streaming Format Type Descriptor --------
bLength                  : 0x0B (11 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Format Type)
bFormatType              : 0x01 (FORMAT_TYPE_I)
bNrChannels              : 0x02 (2 channels)
bSubframeSize            : 0x02 (2 bytes per subframe)
bBitResolution           : 0x10 (16 bits per sample)
bSamFreqType             : 0x01 (supports 1 sample frequence)
tSamFreq[1]              : 0x0AC44 (44100 Hz)
Data (HexDump)           : 0B 24 02 01 02 02 10 01 44 AC 00                  .$......D..

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x83 (Direction=IN EndpointID=3)
bmAttributes             : 0x09 (TransferType=Isochronous  SyncType=Adaptive  EndpointType=Data)
wMaxPacketSize           : 0x00B4
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0xB4 (180 bytes per packet)
bInterval                : 0x01 (1 ms)
bRefresh                 : 0x00
bSynchAddress            : 0x00
Data (HexDump)           : 09 05 83 09 B4 00 01 00 00                        .........

        ----------- Audio Data Endpoint Descriptor ------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x25 (Audio Endpoint Descriptor)
bDescriptorSubtype       : 0x01 (General)
bmAttributes             : 0x00
 D0   : Sampling Freq    : 0x00 (not supported)
 D1   : Pitch            : 0x00 (not supported)
 D6..2: Reserved         : 0x00
 D7   : MaxPacketsOnly   : 0x00 (no)
bLockDelayUnits          : 0x00 (Undefined)
wLockDelay               : 0x0000
Data (HexDump)           : 07 25 01 00 00 00 00                              .%.....

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x03
bAlternateSetting        : 0x00
bNumEndpoints            : 0x00 (Default Control Pipe only)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 03 00 00 01 02 00 00                        .........

        ---------------- Interface Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x04 (Interface Descriptor)
bInterfaceNumber         : 0x03
bAlternateSetting        : 0x01
bNumEndpoints            : 0x02 (2 Endpoints)
bInterfaceClass          : 0x01 (Audio)
bInterfaceSubClass       : 0x02 (Audio Streaming)
bInterfaceProtocol       : 0x00
iInterface               : 0x00 (No String Descriptor)
Data (HexDump)           : 09 04 03 01 02 01 02 00 00                        .........

        -------- Audio Streaming Interface Descriptor ---------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x01
bTerminalLink            : 0x03
bDelay                   : 0x03
wFormatTag               : 0x0001 (PCM)
Data (HexDump)           : 07 24 01 03 03 01 00                              .$.....

        ------- Audio Streaming Format Type Descriptor --------
bLength                  : 0x0B (11 bytes)
bDescriptorType          : 0x24 (Audio Interface Descriptor)
bDescriptorSubtype       : 0x02 (Format Type)
bFormatType              : 0x01 (FORMAT_TYPE_I)
bNrChannels              : 0x02 (2 channels)
bSubframeSize            : 0x02 (2 bytes per subframe)
bBitResolution           : 0x10 (16 bits per sample)
bSamFreqType             : 0x01 (supports 1 sample frequence)
tSamFreq[1]              : 0x0AC44 (44100 Hz)
Data (HexDump)           : 0B 24 02 01 02 02 10 01 44 AC 00                  .$......D..

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x03 (Direction=OUT EndpointID=3)
bmAttributes             : 0x05 (TransferType=Isochronous  SyncType=Asynchronous  EndpointType=Data)
wMaxPacketSize           : 0x00B4
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0xB4 (180 bytes per packet)
bInterval                : 0x01 (1 ms)
bRefresh                 : 0x00
bSynchAddress            : 0x84 (Direction=IN EndpointID=4)
Data (HexDump)           : 09 05 03 05 B4 00 01 00 84                        .........

        ----------- Audio Data Endpoint Descriptor ------------
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x25 (Audio Endpoint Descriptor)
bDescriptorSubtype       : 0x01 (General)
bmAttributes             : 0x00
 D0   : Sampling Freq    : 0x00 (not supported)
 D1   : Pitch            : 0x00 (not supported)
 D6..2: Reserved         : 0x00
 D7   : MaxPacketsOnly   : 0x00 (no)
bLockDelayUnits          : 0x00 (Undefined)
wLockDelay               : 0x0000
Data (HexDump)           : 07 25 01 00 00 00 00                              .%.....

        ----------------- Endpoint Descriptor -----------------
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x84 (Direction=IN EndpointID=4)
bmAttributes             : 0x11 (TransferType=Isochronous  SyncType=None  EndpointType=Feedback)
wMaxPacketSize           : 0x0003
 Bits 15..13             : 0x00 (reserved, must be zero)
 Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
 Bits 10..0              : 0x03 (3 bytes per packet)
bInterval                : 0x01 (1 ms)
bRefresh                 : 0x05 (32 ms)
bSynchAddress            : 0x00
Data (HexDump)           : 09 05 84 11 03 00 01 05 00                        .........

      -------------------- String Descriptors -------------------
             ------ String Descriptor 0 ------
bLength                  : 0x04 (4 bytes)
bDescriptorType          : 0x03 (String Descriptor)
Language ID[0]           : 0x0409 (English - United States)
Data (HexDump)           : 04 03 09 04                                       ....
             ------ String Descriptor 1 ------
bLength                  : 0x18 (24 bytes)
bDescriptorType          : 0x03 (String Descriptor)
Language 0x0409          : "Teensyduino"
Data (HexDump)           : 18 03 54 00 65 00 65 00 6E 00 73 00 79 00 64 00   ..T.e.e.n.s.y.d.
                           75 00 69 00 6E 00 6F 00                           u.i.n.o.
             ------ String Descriptor 2 ------
bLength                  : 0x1A (26 bytes)
bDescriptorType          : 0x03 (String Descriptor)
Language 0x0409          : "Teensy Audio"
Data (HexDump)           : 1A 03 54 00 65 00 65 00 6E 00 73 00 79 00 20 00   ..T.e.e.n.s.y. .
                           41 00 75 00 64 00 69 00 6F 00                     A.u.d.i.o.
             ------ String Descriptor 3 ------
bLength                  : 0x10 (16 bytes)
bDescriptorType          : 0x03 (String Descriptor)
Language 0x0409          : "7797670"
Data (HexDump)           : 10 03 37 00 37 00 39 00 37 00 36 00 37 00 30 00   ..7.7.9.7.6.7.0.


Some kernal names are different, the device address and also the data packets 465/180
The only other differences are the 88200 and 44100

This does kind of make sense to me, what can I be overlooking that Windows needs to see.

Edwin
 
I somehow lost mu 88200 configuration and failed to het it back until I altered some fields in usb_desc.c looks like windows needs a small change to see a different device with the right paramaters.
I changed digital audiodevice, to mic, and later to line connector the make widows think we have an other device, 176400 also worked fine. It looks like we need te make windows forget the previously connected device.
 
Hmm, It seems to be working when you change usb-desc.c a little by selecting an other wTerminalType each time you want to compile a new test version.

//0x01, 0x02, // wTerminalType, 0x0201 = MICROPHONE
0x03, 0x06, // wTerminalType, 0x0603 = Line Connector
//0x02, 0x06, // wTerminalType, 0x0602 = Digital Audio

I got things working on 176k4 and even 384k but there is a catch. The Also on 88k2 I noticed some fase shift in the recording and in the faster samplerates gaps appear.

On 384k it looked like regular intervals of 128 usefull samples and 256 empty samples. The attached picture is a 40khz testtone on a 176k4 samplerate.

gaps.jpg

So when I did say 176400 worked fine that was just for windows to recognize the USB audio device. The actual recording is not yet perfect.

This a recording of a common pipistrellus bat navigating with a feeding buzz, with all the silent samples in between te recording does not look all that great.

384kHz-common pipistrelle playback.jpg
 
I simply changed the number of samples in AudioStream.h to fill the gaps I did see on my 384kHz recording. The sound does not appear to have interruptions now. Just to encourage others, this is what the recording of the common pipistrelle bat looks like now. I think it looks quite well for a played back sound that is recorded.

commonpip384.jpg

The USB device is recognized by my windows computer and recording worked well with audacity, A bat recorder app on my phone crashes, and I did not try other systems.

There appears some error when compiling, but it seems to start working better.

Setting the samplerate seems to work with a few small adaptions I guess. Thank you for sharing the information Frank B.

I guess the USB descriptor needs some work, but we probably need some help here.

Kind regards,

Edwin
 
I did get some nice recordings on 384kHz sample rate but there probably is something in the code that was not designed for samplerates over 256kHz. Up to 256kHz my Linux system still works but any higher sample rates show no data.

I did see an error (only once) which I think has to to with usb_audio.cpp, looks like this part probably give too large numbers.

Code:
void usb_audio_configure(void)
{
	printf("usb_audio_configure\n");
	usb_audio_underrun_count = 0;
	usb_audio_overrun_count = 0;
	feedback_accumulator = (AUDIO_SAMPLE_RATE_EXACT / 1000.0f) * 0x1000000; // 44.1 * 2^24

Does anyone know if there are more parts that could give problems with the <256kHz samplerates?

On windows it works quite well although I had to change audioblock samples to 384 to have an audiostream without interruptions. I guess that could have been avoided if I could somehow get this to work over 256kHz.
 
I know that @FrankB got a bit tired of this subject but having 48.000kHz via USB would be really useful (with Teensy 3 also).

When using the Teensy as a USB device in any the DAW, the whole project has to be limited to 41.1kHz just because of the Teensy. Meaning that if most other files are in 48kHz, which is mainstream nowadays in sound libraries, all files have to be resampled down–for example.

Any chance this project will be revived? Especially for T3.6 which I'm using right now for being bit more stable Audio-USB wise. Please!
 
Step by Step to make 48KHz work for me

I have been trying to use 48KHz for USB Audio both directions. My project is a Teensy 4.1 based SDR radio. On the PC I run a program WSJT-X (or similar digital mode apps) which prefers 48KHz.

A CW keyer project modified the Audio Library to work at 48K sample rate and with 32 blocks for lower latency. I am using a minimal version of this on a Teensy 4.0 and works well.
https://github.com/softerhardware/CWKeyer

I hand modified my library per the CW Keyer project for my SDR project but it has never worked well for me on the SDR. Receiving audio has worked well but sending data back to the Teensy for modulation and transmission over the Radio was distorted and inconsistent. Occasionally it would work.

Along came IDE 2.0 and the TeensyDuino 1.57B1 updates and I needed to modify my Audio library again. Changing only the AUDIO_SAMPLE_RATE_EXACT to 48000.0f did not work for me. Copying over the old 1.56 modified files blindly resulted in the same RX working, TX not. Then came TeensyDuino 1.57B2. This time I decided I needed to understand how to change the library line by line and maybe get it working at better at 48K.

I went through the older modified files line by line, researched this forum and think I now have a step-by-step procedure to apply to each new Audio library version. I have not tested at other sample rates yet. The key changes I think that were needed to get the TX running right was increasing various buffer sizes in the code.

Ideally these rate sensitive changes would automatically occur in future library versions.

Below is my procedure that seems to work for me. Been tried exactly on 1 computer. I have not heard from other SDR project users if it works for them yet.

I left out the CW Keyer projects feedback code for simplicity, and it seems to work for me OK to my ears and my application usage, but I have not looked at any metrics.

I documented it on my SDR project GitHub Wiki and future changes may be posted there. Here is the full text as of Dec 25, 2022 for the historical record and search results. The indentation was lost in the copy and paste, the https://github.com/K7MDL2/KEITHSDR/wiki/48KHz-USB-Audio might be easier reading.

___________________________________________________________________________________

Dec 21, 2022 Update using IDE 2.0.3 and TeensyDuino 1.57.2

I now have the Teensy USB Audio Sample Rate running at 48KHz and get clean audio on both TX and RX. The default Teensy usb audio sample rate is 44.1KHz. We want 48KHz.

Thanks to threads in the PJRC forum, the work of Steve KF7O, DL1YCF, and others creating a Teensy CW Keyer with low latency audio at 48KHz, I was able to get things working. It also works with the OpenAudio_Library F32 functions.

The CW Keyer code used AUDIO_BLOCK_SAMPLES 32 and has lots of code for on-the-fly feedback correction. I am not using either so left that code out to keep things simpler.

Be aware that TeensyDuino supplied files are overwritten with each package update or manual install of TeensyDuino.
You must make these file changes each time after such and update. The files typically do not change much but you need to check.

I put the following 6 modified files (5 usb related, 1 AudioStream.h) into the repository under the libraries/cores_IDE_2.0 folder. The instructions here are also contained in readme.txt

AudioStream.h
usb_desc.h
usb_desc.c
usb.c
usb_audio.h
usb_audio.c
readme.txt

1. You can find the TeensyDuino files
a. For IDE 2.0.x go to C:\Users\Mike\AppData\Local\Arduino15\packages\teensy\hardware\avr\1.57.2\cores\teensy4
b. For IDE 1.8.x go to C:\Program Files (x86)\Arduino\hardware\teensy\avr\cores\teensy4

2. Edit AudioStream.h
a. About line 40, after the __ASSEMBLER__ #endif section, add the line
#define USB_AUDIO_48KHZ 1
b. Find the lines
#ifndef AUDIO_SAMPLE_RATE_EXACT
#define AUDIO_SAMPLE_RATE_EXACT 48000.0f
#endif
and replace with
#ifdef USB_AUDIO_48KHZ
# define AUDIO_SAMPLE_RATE_EXACT 48000.0f
#else
#define AUDIO_SAMPLE_RATE_EXACT 44100.0f
#endif
#endif
c. AudioStream_F32.h already sets this to 48000 but if you do not enable the #define USB32 then the 16bit version will be active,
needing this #define anyway.

3. Edit usb_desc.h
a. Insert the below line at line 113 between the comment section and teh line #if defined(USB_SERIAL)
#define USB_AUDIO_48KHZ 1
b. Editing this file first will cause to the new #ifdef USB_AUDIO_48KHZ sections to be added next to light up if using an editor like Visual Studio Code making edits color coded, shaded, and error checking far easier to deal with.

4. Edit usb_audio.h
a. Find the lines below around 390
unsigned int usb_audio_transmit_callback(void)
{
static uint32_t count=5;
uint32_t avail, num, target, offset, len=0;
audio_block_t *left, *right;

if (++count < 10) { // TODO: dynamic adjust to match USB rate
target = 44;
} else {
count = 0;
target = 45;
}
...
b. Replace with these lines
unsigned int usb_audio_transmit_callback(void)
{

uint32_t avail, num, target, offset, len=0;
audio_block_t *left, *right;

#ifdef USB_AUDIO_48KHZ
target = 48;
#else
static uint32_t count=5;
if (++count < 10) { // TODO: dynamic adjust to match USB rate
target = 44;
} else {
count = 0;
target = 45;
}
#endif
...

3. Edit usb_desc.c file
a. Search for "MICROPHONE". You will find it in 2 places inside #ifdef AUDIO_INTERFACE sections
b. The 3 lines for wTerminalType will look like below with the Digital Audio likely set.
//0x01, 0x02, // wTerminalType, 0x0201 = MICROPHONE
//0x03, 0x06, // wTerminalType, 0x0603 = Line Connector
0x02, 0x06, // wTerminalType, 0x0602 = Digital Audio
c. Change the wTerminalType to somnething else like Line Connector to get Windows to recognize the change in the cached driver
//0x01, 0x02, // wTerminalType, 0x0201 = MICROPHONE
0x03, 0x06, // wTerminalType, 0x0603 = Line Connector
//0x02, 0x06, // wTerminalType, 0x0602 = Digital Audio
d. Search for "Headphones". You will find it in 2 places inside #ifdef AUDIO_INTERFACE sections
//0x02, 0x03, // wTerminalType, 0x0302 = Headphones
0x02, 0x06, // wTerminalType, 0x0602 = Digital Audio
e. Change the wTerminalType from Digital Audio to Headphones to get Windows to recognize the change in the cached driver
0x02, 0x03, // wTerminalType, 0x0302 = Headphones
//0x02, 0x06, // wTerminalType, 0x0602 = Digital Audio

4. Edit usb_desc.c file.
a. Search for LSB(44100). You will find it in 4 places
Replace
LSB(44100), MSB(44100), 0, // tSamFreq
with
#ifdef USB_AUDIO_48KHZ
LSB(48000), MSB(48000), 0,
#else
LSB(44100), MSB(44100), 0, // tSamFreq
#endif

5. Edit usb_desc.h. This updates the sample rate length for USB_MIDI_AUDIO_SERIAL and 3 other sectoins containing Audio.
a. In the #elif defined(USB_XXXXXXX) sections
replace
#define AUDIO_TX_SIZE 180
#define AUDIO_RX_SIZE 180
with
#ifdef USB_AUDIO_48KHZ
#define AUDIO_TX_SIZE 196 // longer buffer
#define AUDIO_RX_SIZE 196
#else
#define AUDIO_TX_SIZE 180
#define AUDIO_RX_SIZE 180
#endif
b. Be careful to not delete or edit the #define AUDIO_TX_ENDPOINT x and #define AUDIO_RX_ENDPOINT y lines, they are mixed in.
The endpoint numbers are unique to each section so leave them as they are.
c. I chose to customize the Product Name to use my call sign. Each section contain a product name.
Since we are only using USB_MIDI_AUDIO_SERIAL for this SDR project I chose to only edit this section replacing the MIDI/Audio name with my own string.
#define PRODUCT_NAME {'K','7','M','D','L',' ','S','D','R'}
#define PRODUCT_NAME_LEN 9

6. Edit usb.c
a. Search for 0x81A2 around line 662 and replace
endpoint0_buffer[0] = 44100 & 255;
endpoint0_buffer[1] = 44100 >> 8;
with
#ifdef USB_AUDIO_48KHZ
endpoint0_buffer[0] = 48000 & 255;
endpoint0_buffer[1] = 48000 >> 8;
#else
endpoint0_buffer[0] = 44100 & 255;
endpoint0_buffer[1] = 44100 >> 8;
#endif

7. Uninstall the previous Record and Playback Teensy Digital Audio device instances that were likely at 44.1KHz using the Sound Control Panel or Device Manager.

8. Unplug the Teensy USB and reboot your Windows computer to finish the removal.

9. Plug the Teensy USB cable back in. You should now have new Teensy MIDI/Audio devices in both Playback and Record views.

10. Both should have an Advanced tab with 16bit 48000 Hz DVD Quality listed. Turn off any offered enhancements.

11. Rename each device from to something you prefer. I like "SDR Audio RX Input" and SDR Audio TX Output" to help identify these easier. Change the icon if you like.

12. Enable listen on the SDR Line In record device and play it back to your speakers and see if it sounds proper.

13. In usb_desc.c you can change the Headphone and Line devices wTerminal type back to Digital Audio if desired.
Sometimes this is needed to get your low level edits to register correctly due to the device caching. may also need to reboot.
 
Back
Top