USB Audio enabled in nightly builds

If I remember correctly, some M-Audio audio interfaces use a proprietary protocol to communicate with their driver instead of the standard USB audio one. Not sure if that is the case with your model.

Nope, this is the raw file uploaded with uploadit tracker add-on, opening it with a text editor I get advices that the file is changed only when I mess around with the media preflet

It works with the windows and linux default driver.

If I understood correctly, our driver only supports USB Audio 1.X devices. I guess that linux driver supports more than that.

2 Likes

There is some support in the driver for USB 2.0 audio devices, but it appears to be incomplete or not working. I disabled it in hrev57568; we can re-enable that after it’s been fixed.

3 Likes

Yea, it very incomplete and must be disabled for now. But i don’t thik that this a reason of high CPU usage.
It seems that high CPU usage is observed on UAC10 devices on some modern systems with some USB 3.1+ controllers.
UAC20 devices are simply not recognized correctly and are not published at all.

3 Likes

Sounds work on mine, this is what the syslog says at init

KERN: usb_audio:00.35.020:init_driver::ver.0.0.5
KERN: usb_audio:00.35.020:AudioStreamingInterface::if[1]:alt_count:2
KERN: usb_audio:00.35.020:AudioStreamingInterface::if[1]:alt[0]:descrs_count:0
KERN: usb_audio:00.35.020:AudioStreamingInterface::if[1]:alt[1]:descrs_count:3
KERN: usb_audio:00.35.020:AudioStreamingInterface::if[2]:alt_count:2
KERN: usb_audio:00.35.020:AudioStreamingInterface::if[2]:alt[0]:descrs_count:0
KERN: usb_audio:00.35.020:AudioStreamingInterface::if[2]:alt[1]:descrs_count:3
KERN: loaded driver /boot/system/add-ons/kernel/drivers/dev/audio/hmulti/usb_audio

Later, after hda init, I have this

KERN: usb_audio:00.35.143:GetSamplingRateId::Ignore unsupported sample rate 0.
KERN: usb_audio:00.35.143:SetGlobalFormat::set_speed 80bb00 for ep 0x1 3: No error
KERN: usb_audio:00.35.143:GetSamplingRateId::Ignore unsupported sample rate 0.
KERN: usb_audio:00.35.143:SetGlobalFormat::set_speed 80bb00 for ep 0x82 3: No error
KERN: usb_audio:00.35.144:_InitGainLimits::Control : -0.25 dB, from -28.375 to -0.62 dB, step 0.187 dB.
KERN: usb_audio:00.35.145:_InitGainLimits::Control : -0.25 dB, from -28.375 to -0.62 dB, step 0.187 dB.
KERN: usb_audio:00.35.146:_InitGainLimits::Control : 0 dB, from 0 to 23.812 dB, step 0.187 dB.

After it keeps repeating lines like this. Only TRB value changes.

KERN: usb error xhci 0: TRB 0x12bb9e90 was not found in the endpoint!
KERN: usb xhci 0: transfer error on slot 1 endpoint 5: Babble detected

When the system is shutting down, few lines are also added

KERN: usb_audio:36.38.718:_TransferCallback::stream:0000000036: status:0x8000000c, data:0x81f04f80, len:0
KERN: usb_audio:36.38.718:_TransferCallback::Cancelled: c:0xffffffff98576cc8 st:0x8000000c, data:0x81f04f80, len:0
KERN: usb_audio:36.38.718:_TransferCallback::stream:0000000036: status:0x8000000c, data:0x81f03000, len:0
KERN: usb_audio:36.38.718:_TransferCallback::Cancelled: c:0xffffffff98576cc8 st:0x8000000c, data:0x81f03000, len:0
KERN: usb_audio:36.38.718:_TransferCallback::stream:0000000037: status:0x8000000c, data:0x81dff000, len:0
KERN: usb_audio:36.38.718:_TransferCallback::Cancelled: c:0xffffffff823c70c8 st:0x8000000c, data:0x81dff000, len:0
KERN: usb_audio:36.38.718:_TransferCallback::stream:0000000037: status:0x8000000c, data:0x81dfffc0, len:0
KERN: usb_audio:36.38.718:_TransferCallback::Cancelled: c:0xffffffff823c70c8 st:0x8000000c, data:0x81dfffc0, len:0

I hope that it can give a hint.

3 Likes

How often do those repeated lines show up? All the others are basically as-expected.

I have just tested a Creative BT-W3X but I can’t get any sound. Ticket here.

Globally, these messages appear about every 10 secs in the log, followed by ‘Last message repeated XXX times’, but it can vary from 2 secs to 50 secs. XXX is also random, it can be 2 or more than a hundred but mostly stays 2 digits.

Sounds like something is broken with the input transfers, but that’s not too surprising considering that input functionality doesn’t work properly (sans such errors) on the hardware I was testing on, and there’s already tickets about that.

You can open a new ticket if you like, but likely it won’t be tackled till input is working in general.

2 Likes

It matches what I observed. When I tried to test the mike with soundrecorder, it seemed ok until I listened to the recording. The voice was recorded but covered by a loud helicopter sound.

1 Like

This is awesome!!!
Working for me on x86_64 hrev57564
Thanks @waddlesplash and @X512


I have a similar issue to @Starcrasher regarding the usb headphone’s microphone and sound recorder (super choppy and seems slowed down)

2 Likes

The problems with input are tracked in #9951 (Recorded sound is slow and crackle) – Haiku.

2 Likes

Hi, first of all thanks for the work.

A status about my evole usb headset.
USB audio is recognized. Microphone was registered briefly. When I mute the USB headset, I hear the headset turn off. I hope that there isn’t much left until something is heard from the media player.

Thank you very much for your work.

Regards lorglas

1 Like

The problems with audio input (at least for me) turned out to be in the media-node handler after all. I fixed that in hrev57599, and now the recorded audio sounds correct. :slight_smile:

16 Likes

Did a quick check. I’m not sure that it records something but that ugly sound is gone.

1 Like

I tried a few quick tests on hrev57650:

The Microsoft LifeChat LX-3000 Headset shows up in Media as USB Audio, but even when setting it as the output device, I’m not getting any audio output at all:

045e:070f /dev/bus/usb/0/1 "Microsoft Corp." "LifeChat LX-3000 Headset" ver. 0100

My Apple USB-C headphone dongle wasn’t recognized at all, not even as a USB Audio device in Media:

05ac:110a /dev/bus/usb/0/3 "Apple, Inc." "USB-C to 3.5mm Headphone Jack Adapter" ver. 2611

Most importantly for me, still no luck with my Focusrite Scarlett 8i6 3rd Gen. Doesn’t show up as USB Audio in Media. The Scarlett is class compliant and the device I actually use daily, so it’s the device I’d be most interested in seeing support for. I also have a Scarlett 2i2 2nd Gen around here, so while I didn’t test that today, I might be able to help with testing Focusrite Scarlett device support.

1235:8213 /dev/bus/usb/0/2/2 "Focusrite-Novation" "Scarlett 8i6 USB" ver. 0645

I might be having some luck with a Logitech H390 headset. Restarting the Media Server results in lots more notifications than the other devices did. But I can’t get audio, and trying to change the volume level just shows “Could not find the mixer”. Maybe I should try again after a clean boot.

046d:0a44 /dev/bus/usb/0/1 "Logitech, Inc." "Headset H390" ver. 0127

1 Like

Please provide the output of listusb -v for each device.

I suspect most of them are USB audio v2, which is still disabled in the driver.

1 Like

Ahh, apologies! I misread and thought v2 had been re-enabled. I’ll recheck my devices & report back if any of them are v1.

However: I did find an old Edirol / Roland UA-1EX USB audio interface, which is USB 1.16, and that is working! Of course I did need to restart Media Services twice. I’ve also set the device hardware switch to “Advanced Driver Off”, which limits it to 16-bit 44.1kHz. It’s capable of 96kHz but I think requires proprietary Roland drivers for that.

Something still seems not quite right with the audio though. Occasional clicks as if there’s been a buffer underrun, and at times the audio sounds slightly bitcrushed / low bit-depth. I’m using MediaPlayer to play the test tracks, if that’s a factor. But I do have working v1 USB Audio.

Details of that device:

    Class .................. 0x00 (Defined at Interface level) ()
    Subclass ............... 0x00 (Defined at Interface level) ()
    Protocol ............... 0x00 (Defined at Interface level) ()
    Max Endpoint 0 Packet .. 8
    USB Version ............ 1.16
    Vendor ID .............. 0x0582 (Roland Corp.)
    Product ID ............. 0x0097
    Product Version ........ 0x0100
    Manufacturer String .... "EDIROL"
    Product String ......... "UA-1EX"
    Serial Number .......... ""
    [Configuration 0]
        Configuration String . ""
        [Interface 0]
            [Alternate 0 active]
                Class .............. 0x01 Audio ()
                Subclass ........... 0x01 Audio (Control Device)
                Protocol ........... 0x00 Audio (Control Device)
                Interface String ... ""
                [Descriptor 0]
                    Type .............. 0x24
                    Subtype ........... 0x01 (Header)
                    ADC Release ....... 1.0
                    Total Length ...... 52
                    Interfaces ........ 1, 2, 
                [Descriptor 1]
                    Type .............. 0x24
                    Subtype ........... 0x02 (Input Terminal)
                    Terminal ID ....... 1
                    Terminal Type ..... 0x0101 (USB Streaming)
                    Associated Terminal 0
                    Nr Channels ....... 2
                    Channel Config .... 0x3
                       Front .......... Left Right 
                    Channel Names ..... 0
                    Terminal .......... 0
                [Descriptor 2]
                    Type .............. 0x24
                    Subtype ........... 0x03 (Output Terminal)
                    Terminal ID ....... 3
                    Terminal Type ..... 0x0304 (Desktop speaker)
                    Associated Terminal 0
                    Source ID ......... 1
                    Terminal .......... 0
                [Descriptor 3]
                    Type .............. 0x24
                    Subtype ........... 0x02 (Input Terminal)
                    Terminal ID ....... 4
                    Terminal Type ..... 0x0601 (Unknown)
                    Associated Terminal 0
                    Nr Channels ....... 2
                    Channel Config .... 0x3
                       Front .......... Left Right 
                    Channel Names ..... 0
                    Terminal .......... 0
                [Descriptor 4]
                    Type .............. 0x24
                    Subtype ........... 0x03 (Output Terminal)
                    Terminal ID ....... 7
                    Terminal Type ..... 0x0101 (USB Streaming)
                    Associated Terminal 0
                    Source ID ......... 4
                    Terminal .......... 0
        [Interface 1]
            [Alternate 0]
                Class .............. 0x01 Audio ()
                Subclass ........... 0x02 Audio (Streaming)
                Protocol ........... 0x00 Audio (Streaming)
                Interface String ... ""
            [Alternate 1 active]
                Class .............. 0x01 Audio ()
                Subclass ........... 0x02 Audio (Streaming)
                Protocol ........... 0x00 Audio (Streaming)
                Interface String ... ""
                [Endpoint 0]
                    MaxPacketSize .... 1x 192 bytes
                    Interval ......... 1
                    Type ............. Isochronous
                    Direction ........ Output
                [Descriptor 0]
                    Subtype ........... 1 (AS_GENERAL)
                    Terminal link ..... 1
                    Delay ............. 0
                    Format tag ........ 1
                [Descriptor 1]
                    Subtype ........... 2 (FORMAT_TYPE)
                    Format Type ....... 1 (FORMAT_TYPE_I)
                    Channels .......... 2
                    Subframe size ..... 2
                    Bit resolution .... 16
                    Sampling Freq ..... 44100, 
                [Descriptor 2]
                    Type .............. 0x25 (CS_ENDPOINT)
                    Subtype ........... 0x01 (EP_GENERAL)
                    Attributes ........ 0x00 
                    Lock Delay Units .. 2 (Decoded PCM samples)
                    Lock Delay ........ 512
        [Interface 2]
            [Alternate 0]
                Class .............. 0x01 Audio ()
                Subclass ........... 0x02 Audio (Streaming)
                Protocol ........... 0x00 Audio (Streaming)
                Interface String ... ""
            [Alternate 1 active]
                Class .............. 0x01 Audio ()
                Subclass ........... 0x02 Audio (Streaming)
                Protocol ........... 0x00 Audio (Streaming)
                Interface String ... ""
                [Endpoint 0]
                    MaxPacketSize .... 1x 192 bytes
                    Interval ......... 1
                    Type ............. Isochronous
                    Direction ........ Input
                [Descriptor 0]
                    Subtype ........... 1 (AS_GENERAL)
                    Terminal link ..... 7
                    Delay ............. 0
                    Format tag ........ 1
                [Descriptor 1]
                    Subtype ........... 2 (FORMAT_TYPE)
                    Format Type ....... 1 (FORMAT_TYPE_I)
                    Channels .......... 2
                    Subframe size ..... 2
                    Bit resolution .... 16
                    Sampling Freq ..... 44100, 
                [Descriptor 2]
                    Type .............. 0x25 (CS_ENDPOINT)
                    Subtype ........... 0x01 (EP_GENERAL)
                    Attributes ........ 0x00 
                    Lock Delay Units .. 0 (Undefined)
                    Lock Delay ........ 0

EDIT: Turns out the Logitech H390 headset also works, after several Media Server restarts. Details for the Logitech H390:

    Subclass ............... 0x00 (Defined at Interface level) ()
    Protocol ............... 0x00 (Defined at Interface level) ()
    Max Endpoint 0 Packet .. 16
    USB Version ............ 1.16
    Vendor ID .............. 0x046d (Logitech, Inc.)
    Product ID ............. 0x0a44 (Headset H390)
    Product Version ........ 0x0127
    Manufacturer String .... "Logitech"
    Product String ......... "Logitech USB Headset"
    Serial Number .......... ""
    [Configuration 0]
        Configuration String . "G8 v3.0.0.0"
        [Interface 0]
            [Alternate 0 active]
                Class .............. 0x01 Audio ()
                Subclass ........... 0x01 Audio (Control Device)
                Protocol ........... 0x00 Audio (Control Device)
                Interface String ... ""
                [Descriptor 0]
                    Type .............. 0x24
                    Subtype ........... 0x01 (Header)
                    ADC Release ....... 1.0
                    Total Length ...... 100
                    Interfaces ........ 1, 2, 
                [Descriptor 1]
                    Type .............. 0x24
                    Subtype ........... 0x02 (Input Terminal)
                    Terminal ID ....... 13
                    Terminal Type ..... 0x0201 (Microphone)
                    Associated Terminal 0
                    Nr Channels ....... 1
                    Channel Config .... 0x3
                       Front .......... Left Right 
                    Channel Names ..... 0
                    Terminal .......... 0
                [Descriptor 2]
                    Type .............. 0x24
                    Subtype ........... 0x06 (Feature Unit)
                    Unit ID ........... 6
                    Source ID ......... 13
                    Control Size ...... 1
                       Master Channel . Mute 
                       Channel 1 ...... Volume 
                    Feature ........... 0
                [Descriptor 3]
                    Type .............. 0x24
                    Subtype ........... 0x02 (Input Terminal)
                    Terminal ID ....... 12
                    Terminal Type ..... 0x0101 (USB Streaming)
                    Associated Terminal 0
                    Nr Channels ....... 2
                    Channel Config .... 0x3
                       Front .......... Left Right 
                    Channel Names ..... 0
                    Terminal .......... 0
                [Descriptor 4]
                    Type .............. 0x24
                    Subtype ........... 0x04 (Mixer Unit)
                    Unit ID ........... 9
                    Source IDs ........ 12, 6, 
                    Channels .......... 2
                    Channel Config .... 0x3
                       Front .......... Left Right 
                    Channel Names ..... 0
                    Bitmap Control .... 0x00 
                    Mixer ............. 0
                [Descriptor 5]
                    Type .............. 0x24
                    Subtype ........... 0x06 (Feature Unit)
                    Unit ID ........... 1
                    Source ID ......... 9
                    Control Size ...... 1
                       Master Channel . Mute 
                       Channel 1 ...... Volume 
                       Channel 2 ...... Volume 
                    Feature ........... 0
                [Descriptor 6]
                    Type .............. 0x24
                    Subtype ........... 0x03 (Output Terminal)
                    Terminal ID ....... 14
                    Terminal Type ..... 0x0301 (Speaker)
                    Associated Terminal 0
                    Source ID ......... 1
                    Terminal .......... 0
                [Descriptor 7]
                    Type .............. 0x24
                    Subtype ........... 0x06 (Feature Unit)
                    Unit ID ........... 2
                    Source ID ......... 13
                    Control Size ...... 1
                       Master Channel . Mute 
                       Channel 1 ...... Volume 
                    Feature ........... 0
                [Descriptor 8]
                    Type .............. 0x24
                    Subtype ........... 0x05 (Selector Unit)
                    Unit ID ........... 8
                    Source IDs ........ 2, 
                    Selector .......... 2
                [Descriptor 9]
                    Type .............. 0x24
                    Subtype ........... 0x03 (Output Terminal)
                    Terminal ID ....... 10
                    Terminal Type ..... 0x0101 (USB Streaming)
                    Associated Terminal 0
                    Source ID ......... 8
                    Terminal .......... 0
        [Interface 1]
            [Alternate 0]
                Class .............. 0x01 Audio ()
                Subclass ........... 0x02 Audio (Streaming)
                Protocol ........... 0x00 Audio (Streaming)
                Interface String ... ""
            [Alternate 1 active]
                Class .............. 0x01 Audio ()
                Subclass ........... 0x02 Audio (Streaming)
                Protocol ........... 0x00 Audio (Streaming)
                Interface String ... ""
                [Endpoint 0]
                    MaxPacketSize .... 1x 192 bytes
                    Interval ......... 1
                    Type ............. Isochronous
                    Direction ........ Output
                [Descriptor 0]
                    Subtype ........... 1 (AS_GENERAL)
                    Terminal link ..... 12
                    Delay ............. 1
                    Format tag ........ 1
                [Descriptor 1]
                    Subtype ........... 2 (FORMAT_TYPE)
                    Format Type ....... 1 (FORMAT_TYPE_I)
                    Channels .......... 2
                    Subframe size ..... 2
                    Bit resolution .... 16
                    Sampling Freq ..... 8000 to 48000
                [Descriptor 2]
                    Type .............. 0x25 (CS_ENDPOINT)
                    Subtype ........... 0x01 (EP_GENERAL)
                    Attributes ........ 0x01 Sampling Frequency 
                    Lock Delay Units .. 0 (Undefined)
                    Lock Delay ........ 0
        [Interface 2]
            [Alternate 0]
                Class .............. 0x01 Audio ()
                Subclass ........... 0x02 Audio (Streaming)
                Protocol ........... 0x00 Audio (Streaming)
                Interface String ... ""
            [Alternate 1 active]
                Class .............. 0x01 Audio ()
                Subclass ........... 0x02 Audio (Streaming)
                Protocol ........... 0x00 Audio (Streaming)
                Interface String ... ""
                [Endpoint 0]
                    MaxPacketSize .... 1x 96 bytes
                    Interval ......... 1
                    Type ............. Isochronous
                    Direction ........ Input
                [Descriptor 0]
                    Subtype ........... 1 (AS_GENERAL)
                    Terminal link ..... 10
                    Delay ............. 1
                    Format tag ........ 1
                [Descriptor 1]
                    Subtype ........... 2 (FORMAT_TYPE)
                    Format Type ....... 1 (FORMAT_TYPE_I)
                    Channels .......... 1
                    Subframe size ..... 2
                    Bit resolution .... 16
                    Sampling Freq ..... 8000 to 48000
                [Descriptor 2]
                    Type .............. 0x25 (CS_ENDPOINT)
                    Subtype ........... 0x01 (EP_GENERAL)
                    Attributes ........ 0x01 Sampling Frequency 
                    Lock Delay Units .. 0 (Undefined)
                    Lock Delay ........ 0
        [Interface 3]
            [Alternate 0 active]
                Class .............. 0x03 Human Interface Device (No Subclass, None)
                Subclass ........... 0x00 Human Interface Device (No Subclass, None)
                Protocol ........... 0x00 Human Interface Device (No Subclass, None)
                Interface String ... ""
                [Endpoint 0]
                    MaxPacketSize .... 1x 16 bytes
                    Interval ......... 1
                    Type ............. Interrupt
                    Direction ........ Input
                [Descriptor 0]
                    Length............ 0x09
                    Type ............. 0x21
                    Data ............. 00 01 00 01 22 2b 00 

EDIT 2: (last one) The Microsoft LifeChat LX-3000 is also USB v1.16 and works after several Media Server reboots. I think I also need to quit all audio applications for the Media Server restarts to work with the program (ie MediaPlayer). I’m only getting audio in the right channel, but I’ll go test the headset in Windows to check if the headset is faulty, (UPDATE: No, the headset works fine on Windows. Something is broken in the stereo audio on Haiku for the LX-3000.) The inline volume up & down buttons don’t work, not that I expected them to. Haven’t tested microphone or the microphone mute button yet.

    Class .................. 0x00 (Defined at Interface level) ()
    Subclass ............... 0x00 (Defined at Interface level) ()
    Protocol ............... 0x00 (Defined at Interface level) ()
    Max Endpoint 0 Packet .. 8
    USB Version ............ 1.16
    Vendor ID .............. 0x045e (Microsoft Corp.)
    Product ID ............. 0x070f (LifeChat LX-3000 Headset)
    Product Version ........ 0x0100
    Manufacturer String .... "C-Media Electronics Inc.      "
    Product String ......... "Microsoft LifeChat LX-3000"
    Serial Number .......... ""
    [Configuration 0]
        Configuration String . ""
        [Interface 0]
            [Alternate 0 active]
                Class .............. 0x01 Audio ()
                Subclass ........... 0x01 Audio (Control Device)
                Protocol ........... 0x00 Audio (Control Device)
                Interface String ... ""
                [Descriptor 0]
                    Type .............. 0x24
                    Subtype ........... 0x01 (Header)
                    ADC Release ....... 1.0
                    Total Length ...... 100
                    Interfaces ........ 1, 2, 
                [Descriptor 1]
                    Type .............. 0x24
                    Subtype ........... 0x02 (Input Terminal)
                    Terminal ID ....... 1
                    Terminal Type ..... 0x0101 (USB Streaming)
                    Associated Terminal 0
                    Nr Channels ....... 2
                    Channel Config .... 0x3
                       Front .......... Left Right 
                    Channel Names ..... 0
                    Terminal .......... 0
                [Descriptor 2]
                    Type .............. 0x24
                    Subtype ........... 0x02 (Input Terminal)
                    Terminal ID ....... 2
                    Terminal Type ..... 0x0201 (Microphone)
                    Associated Terminal 0
                    Nr Channels ....... 1
                    Channel Config .... 0x1
                       Front .......... Left 
                    Channel Names ..... 0
                    Terminal .......... 0
                [Descriptor 3]
                    Type .............. 0x24
                    Subtype ........... 0x03 (Output Terminal)
                    Terminal ID ....... 6
                    Terminal Type ..... 0x0301 (Speaker)
                    Associated Terminal 0
                    Source ID ......... 9
                    Terminal .......... 0
                [Descriptor 4]
                    Type .............. 0x24
                    Subtype ........... 0x03 (Output Terminal)
                    Terminal ID ....... 7
                    Terminal Type ..... 0x0101 (USB Streaming)
                    Associated Terminal 0
                    Source ID ......... 8
                    Terminal .......... 0
                [Descriptor 5]
                    Type .............. 0x24
                    Subtype ........... 0x05 (Selector Unit)
                    Unit ID ........... 8
                    Source IDs ........ 10, 
                    Selector .......... 10
                [Descriptor 6]
                    Type .............. 0x24
                    Subtype ........... 0x06 (Feature Unit)
                    Unit ID ........... 9
                    Source ID ......... 15
                    Control Size ...... 1
                       Master Channel . Mute 
                       Channel 1 ...... Volume 
                       Channel 2 ...... Volume 
                    Feature ........... 0
                [Descriptor 7]
                    Type .............. 0x24
                    Subtype ........... 0x06 (Feature Unit)
                    Unit ID ........... 10
                    Source ID ......... 2
                    Control Size ...... 1
                       Master Channel . Mute Volume Automatic Gain 
                    Feature ........... 0
                [Descriptor 8]
                    Type .............. 0x24
                    Subtype ........... 0x06 (Feature Unit)
                    Unit ID ........... 13
                    Source ID ......... 2
                    Control Size ...... 1
                       Master Channel . Mute Volume 
                    Feature ........... 0
                [Descriptor 9]
                    Type .............. 0x24
                    Subtype ........... 0x04 (Mixer Unit)
                    Unit ID ........... 15
                    Source IDs ........ 1, 13, 
                    Channels .......... 2
                    Channel Config .... 0x3
                       Front .......... Left Right 
                    Channel Names ..... 0
                    Bitmap Control .... 0x00 
                    Mixer ............. 0
        [Interface 1]
            [Alternate 0]
                Class .............. 0x01 Audio ()
                Subclass ........... 0x02 Audio (Streaming)
                Protocol ........... 0x00 Audio (Streaming)
                Interface String ... ""
            [Alternate 1 active]
                Class .............. 0x01 Audio ()
                Subclass ........... 0x02 Audio (Streaming)
                Protocol ........... 0x00 Audio (Streaming)
                Interface String ... ""
                [Endpoint 0]
                    MaxPacketSize .... 1x 200 bytes
                    Interval ......... 1
                    Type ............. Isochronous
                    Direction ........ Output
                [Descriptor 0]
                    Subtype ........... 1 (AS_GENERAL)
                    Terminal link ..... 1
                    Delay ............. 1
                    Format tag ........ 1
                [Descriptor 1]
                    Subtype ........... 2 (FORMAT_TYPE)
                    Format Type ....... 1 (FORMAT_TYPE_I)
                    Channels .......... 2
                    Subframe size ..... 2
                    Bit resolution .... 16
                    Sampling Freq ..... 48000, 44100, 
                [Descriptor 2]
                    Type .............. 0x25 (CS_ENDPOINT)
                    Subtype ........... 0x01 (EP_GENERAL)
                    Attributes ........ 0x01 Sampling Frequency 
                    Lock Delay Units .. 1 (Milliseconds)
                    Lock Delay ........ 1
        [Interface 2]
            [Alternate 0]
                Class .............. 0x01 Audio ()
                Subclass ........... 0x02 Audio (Streaming)
                Protocol ........... 0x00 Audio (Streaming)
                Interface String ... ""
            [Alternate 1 active]
                Class .............. 0x01 Audio ()
                Subclass ........... 0x02 Audio (Streaming)
                Protocol ........... 0x00 Audio (Streaming)
                Interface String ... ""
                [Endpoint 0]
                    MaxPacketSize .... 1x 100 bytes
                    Interval ......... 1
                    Type ............. Isochronous
                    Direction ........ Input
                [Descriptor 0]
                    Subtype ........... 1 (AS_GENERAL)
                    Terminal link ..... 7
                    Delay ............. 1
                    Format tag ........ 1
                [Descriptor 1]
                    Subtype ........... 2 (FORMAT_TYPE)
                    Format Type ....... 1 (FORMAT_TYPE_I)
                    Channels .......... 1
                    Subframe size ..... 2
                    Bit resolution .... 16
                    Sampling Freq ..... 48000, 44100, 
                [Descriptor 2]
                    Type .............. 0x25 (CS_ENDPOINT)
                    Subtype ........... 0x01 (EP_GENERAL)
                    Attributes ........ 0x01 Sampling Frequency 
                    Lock Delay Units .. 0 (Undefined)
                    Lock Delay ........ 0
        [Interface 3]
            [Alternate 0 active]
                Class .............. 0x03 Human Interface Device (No Subclass, None)
                Subclass ........... 0x00 Human Interface Device (No Subclass, None)
                Protocol ........... 0x00 Human Interface Device (No Subclass, None)
                Interface String ... ""
                [Endpoint 0]
                    MaxPacketSize .... 1x 4 bytes
                    Interval ......... 2
                    Type ............. Interrupt
                    Direction ........ Input
                [Descriptor 0]
                    Length............ 0x09
                    Type ............. 0x21
                    Data ............. 00 01 00 01 22 3c 00 
3 Likes