[haiku-development] Re: USB Stack -- UVC Driver

  • From: Gabriel Hartmann <gabriel.hartmann@xxxxxxxxx>
  • To: haiku-development@xxxxxxxxxxxxx
  • Date: Mon, 13 Jun 2011 03:32:50 +0000

The USBKit (now actually part of the device kit, therefore residing in
libdevice.so) is relevant for userland access to USB devices. As
described in the document, it interfaces with the kernel and the USB
stack through usb_raw. The listusb command line tool (src/bin/listusb.
cpp) is one of the users of the USBKit and should serve as a nice
example of how to use pretty much all of the enumeration features.
Thanks for the idea.  I'm looking at listusb right now.  I had already
used it to find my camera.  It finds it and its many interfaces
without issue, although for some reason my camera doesn't appear to
have manufacturer or product fields.  This appears to be normal for
Logitech cameras, although, not for their mice (which also shows up)

The usb_disk_device_added() hook is registered as the device added
notify hook for the usb_floppy driver in this case. Line 1249 of the
file you linked does that. The init_driver() function is the generic
entry point for all kernel drivers (old style drivers anyway). As
mentioned above you probably won't concern yourself with kernel drivers
at all.
So do userland drivers not register hook functions?

This is the usb_webcam media add-on. It is loaded by the
media_addon_server and therefore runs in userland. Hence all the
hardware access it does goes through the USBKit as mentioned above. I'm
not sure how exactly this one is structured, but I guess it uses a
similar support descriptor based scheme as the USB stack itself. Not
having your device details it's hard to tell if it would actually match
the list of course.
I was able to add my camera (A Logitech Quickcam Pro 9000) to the list
of cameras.  It was almost identical to the information for the 5000,
but with changed productID.  Doing this caused crashes into kernel
debug land upon media server restart....sometimes.


> usb_webcam_support_descriptor kSupportedDevices[] = {
>       // ofcourse we support a generic UVC device...
>       {{ CC_VIDEO, SC_VIDEOCONTROL, 0, 0, 0 }, "USB", "Video Class",
> "??" }, .....
>
>  but I don't think this code is ever reached.

Note that while the usb_webcam add-on is present on an average Haiku
image, the UVCCamDevice.cpp isn't actually compiled in. Jérôme disabled
it because it wasn't ready back in r36740. So before this would
actually be usable you'd need to enable it again in the corresponding
Jamfile (src/add-ons/media/media-add-ons/usb_webcam/Jamfile).
I've done this.  And have been moving it to the correct spot on my
boot partition.  New debug message and crashes confirm this.


> If anyone could give me a clue as to the hierarchy of calls or just a
> strategy for extracting any information at all from my camera, I'd
> really appreciate it.

You're most probably going to extend and finish implementing
UVCCamDevice.cpp, so the first step would be to add it to your build
and see where that gets you. Then maybe you'll also need to extend the
list already present by your vendor and device ID (you can get them
through listusb). However since the goal is a UVC video driver, the
device should really already be of the USB Video Class and therefore
match the generic support descriptor you mentioned above.
I still don't know whether or not my device was ever picked up as a
generic UVC device.  I'll be looking into this, although I'm not sure
how yet.  I doubt it as when I placed my camera in the list of
approved cameras manually things went bad pretty quickly.  Also if you
look at the listusb output for the camera (below) you can see that
it's class is listed as Miscelaneous [sic].  Perhaps this has
something to do with it not being deteced as a UVC device.

If you want to just generally mess with your device without going too
deep I'd suggest you start with the listusb source (src/bin/listusb.
cpp) and modify it. It already provides the enumeration, so you could
just check for your device and then use the other USBKit functions to
interface with it.
Thank you.  I'm going to do this.

One last thing.  I was under the impression that isochronous transfers
are not working porpoerly for EHCI.  Do you know if this is true?

--Gabriel

P.S. listusb -v output follows.

[Device /dev/bus/usb/1/0/3]
    Class .................. 0xef (Miscelaneous)
    Subclass ............... 0x02
    Protocol ............... 0x01
    Max Endpoint 0 Packet .. 64
    USB Version ............ 0x0200
    Vendor ID .............. 0x046d
    Product ID ............. 0x0809
    Product Version ........ 0x0010
    Manufacturer String .... ""
    Product String ......... ""
    Serial Number .......... "62190688"
    [Configuration 0]
        Configuration String . ""
        [Interface 0]
            [Alternate 0 active]
                Class .............. 0x0e (Video)
                Subclass ........... 0x01
                Protocol ........... 0x00
                Interface String ... ""
                [Endpoint 0]
                    MaxPacketSize .... 16
                    Interval ......... 8
                    Type ............. Interrupt
                    Direction ........ Input
                [Descriptor 0]
                    Type ............. 0x24
                    Data ............. 01 00 01 f5 00 00 6c dc 02 01 01
                [Descriptor 1]
                    Type ............. 0x24
                    Data ............. 02 01 01 02 00 00 00 00 00 00
00 00 03 0e 08 00
                [Descriptor 2]
                    Type ............. 0x24
                    Data ............. 05 02 01 00 40 02 5b 17 00
                [Descriptor 3]
                    Type ............. 0x24
                    Data ............. 06 04 82 06 61 63 70 50 ab 49
b8 cc b3 85 5e 8d 22 1e 0a 01 02 02 ff 03 00
                [Descriptor 4]
                    Type ............. 0x24
                    Data ............. 06 0d 82 06 61 63 70 50 ab 49
b8 cc b3 85 5e 8d 22 1f 07 01 02 02 6f 01 00
                [Descriptor 5]
                    Type ............. 0x24
                    Data ............. 06 08 82 06 61 63 70 50 ab 49
b8 cc b3 85 5e 8d 22 51 03 01 04 03 19 00 00 00
                [Descriptor 6]
                    Type ............. 0x24
                    Data ............. 06 0a 82 06 61 63 70 50 ab 49
b8 cc b3 85 5e 8d 22 52 18 01 04 03 ff ff ff 00
                [Descriptor 7]
                    Type ............. 0x24
                    Data ............. 06 0e b7 93 5b a4 15 c7 02 45
90 f4 53 2a 3b 31 13 65 04 01 01 03 0f 00 00 00
                [Descriptor 8]
                    Type ............. 0x24
                    Data ............. 06 09 82 06 61 63 70 50 ab 49
b8 cc b3 85 5e 8d 22 56 05 01 04 03 0c 00 00 00
                [Descriptor 9]
                    Type ............. 0x24
                    Data ............. 06 0c 82 06 61 63 70 50 ab 49
b8 cc b3 85 5e 8d 22 50 11 01 04 03 fe 7f 70 00
                [Descriptor 10]
                    Type ............. 0x24
                    Data ............. 03 05 01 01 00 04 00
                [Descriptor 11]
                    Type ............. 0x41
                    Data ............. 01 0b 82 06 61 63 70 50 ab 49
b8 cc b3 85 5e 8d 22 55 01 01 04 03 01 00 00 00 00 00 00 00
                [Descriptor 12]
                    Type ............. 0x25
                    Data ............. 03 10 00
        [Interface 1]
            [Alternate 0 active]
                Class .............. 0x0e (Video)
                Subclass ........... 0x02
                Protocol ........... 0x00
                Interface String ... ""
                [Descriptor 0]
                    Type ............. 0x24
                    Data ............. 01 03 3c 07 81 00 05 02 01 00 01 00 04 04
                [Descriptor 1]
                    Type ............. 0x24
                    Data ............. 04 01 12 59 55 59 32 00 00 10
00 80 00 00 aa 00 38 9b 71 10 01 00 00 00 00
                [Descriptor 2]
                    Type ............. 0x24
                    Data ............. 05 01 00 80 02 e0 01 00 00 77
01 00 00 ca 08 00 60 09 00 15 16 05 00 06 15 16 05 00 80 1a 06 00 20
a1 07 00 2a 2c 0a 00 40 42 0f 00 80 84 1e 00
                [Descriptor 3]
                    Type ............. 0x24
                    Data ............. 05 02 00 a0 00 78 00 00 70 17
00 00 a0 8c 00 00 96 00 00 15 16 05 00 06 15 16 05 00 80 1a 06 00 20
a1 07 00 2a 2c 0a 00 40 42 0f 00 80 84 1e 00
                [Descriptor 4]
                    Type ............. 0x24
                    Data ............. 05 03 00 b0 00 90 00 00 f0 1e
00 00 a0 b9 00 00 c6 00 00 15 16 05 00 06 15 16 05 00 80 1a 06 00 20
a1 07 00 2a 2c 0a 00 40 42 0f 00 80 84 1e 00
                [Descriptor 5]
                    Type ............. 0x24
                    Data ............. 05 04 00 40 01 f0 00 00 c0 5d
00 00 80 32 02 00 58 02 00 15 16 05 00 06 15 16 05 00 80 1a 06 00 20
a1 07 00 2a 2c 0a 00 40 42 0f 00 80 84 1e 00
                [Descriptor 6]
                    Type ............. 0x24
                    Data ............. 05 05 00 60 01 20 01 00 c0 7b
00 00 80 e6 02 00 18 03 00 15 16 05 00 06 15 16 05 00 80 1a 06 00 20
a1 07 00 2a 2c 0a 00 40 42 0f 00 80 84 1e 00
                [Descriptor 7]
                    Type ............. 0x24
                    Data ............. 05 06 00 80 02 68 01 00 40 19
01 00 80 97 06 00 08 07 00 15 16 05 00 06 15 16 05 00 80 1a 06 00 20
a1 07 00 2a 2c 0a 00 40 42 0f 00 80 84 1e 00
                [Descriptor 8]
                    Type ............. 0x24
                    Data ............. 05 07 00 80 02 90 01 00 80 38
01 00 00 53 07 00 d0 07 00 15 16 05 00 06 15 16 05 00 80 1a 06 00 20
a1 07 00 2a 2c 0a 00 40 42 0f 00 80 84 1e 00
                [Descriptor 9]
                    Type ............. 0x24
                    Data ............. 05 08 00 00 03 e0 01 00 00 c2
01 00 00 ca 08 00 40 0b 00 80 1a 06 00 05 80 1a 06 00 20 a1 07 00 2a
2c 0a 00 40 42 0f 00 80 84 1e 00
                [Descriptor 10]
                    Type ............. 0x24
                    Data ............. 05 09 00 20 03 c8 01 00 50 bd
01 00 90 b2 08 00 22 0b 00 80 1a 06 00 05 80 1a 06 00 20 a1 07 00 2a
2c 0a 00 40 42 0f 00 80 84 1e 00
                [Descriptor 11]
                    Type ............. 0x24
                    Data ............. 05 0a 00 20 03 f8 01 00 30 ec
01 00 f0 9c 09 00 4e 0c 00 80 1a 06 00 05 80 1a 06 00 20 a1 07 00 2a
2c 0a 00 40 42 0f 00 80 84 1e 00
                [Descriptor 12]
                    Type ............. 0x24
                    Data ............. 05 0b 00 20 03 58 02 00 f0 49
02 00 b0 71 0b 00 a6 0e 00 80 1a 06 00 05 80 1a 06 00 20 a1 07 00 2a
2c 0a 00 40 42 0f 00 80 84 1e 00
                [Descriptor 13]
                    Type ............. 0x24
                    Data ............. 05 0c 00 60 03 e0 01 00 40 fa
01 00 40 e3 09 00 a8 0c 00 80 1a 06 00 05 80 1a 06 00 20 a1 07 00 2a
2c 0a 00 40 42 0f 00 80 84 1e 00
                [Descriptor 14]
                    Type ............. 0x24
                    Data ............. 05 0d 00 c0 03 d0 02 00 c0 4b
03 00 40 e3 09 00 18 15 00 40 42 0f 00 03 2a 2c 0a 00 40 42 0f 00 80
84 1e 00
                [Descriptor 15]
                    Type ............. 0x24
                    Data ............. 05 0e 00 00 05 d0 02 00 00 65
04 00 00 ca 08 00 20 1c 00 80 84 1e 00 02 55 58 14 00 80 84 1e 00
                [Descriptor 16]
                    Type ............. 0x24
                    Data ............. 05 0f 00 00 05 20 03 00 00 e2
04 00 00 c4 09 00 40 1f 00 80 84 1e 00 02 55 58 14 00 80 84 1e 00
                [Descriptor 17]
                    Type ............. 0x24
                    Data ............. 05 10 00 40 06 88 03 00 a0 e5
06 00 a0 e5 06 00 24 2c 00 80 84 1e 00 01 80 84 1e 00
                [Descriptor 18]
                    Type ............. 0x24
                    Data ............. 05 11 00 40 06 e8 03 00 20 a1
07 00 20 a1 07 00 d4 30 00 80 84 1e 00 01 80 84 1e 00
                [Descriptor 19]
                    Type ............. 0x24
                    Data ............. 05 12 00 40 06 b0 04 00 c0 27
09 00 c0 27 09 00 98 3a 00 80 84 1e 00 01 80 84 1e 00
                [Descriptor 20]
                    Type ............. 0x24
                    Data ............. 03 00 12 80 02 e0 01 a0 00 78
00 b0 00 90 00 40 01 f0 00 60 01 20 01 80 02 68 01 80 02 90 01 00 03
e0 01 20 03 c8 01 20 03 f8 01 20 03 58 02 60 03 e0 01 c0 03 d0 02 00
05 d0 02 00 05 20 03 40 06 88 03 40 06 e8 03 40 06 b0 04 01 05
                [Descriptor 21]
                    Type ............. 0x24
                    Data ............. 0d 01 01 04
                [Descriptor 22]
                    Type ............. 0x24
                    Data ............. 06 02 12 01 01 00 00 00 00
                [Descriptor 23]
                    Type ............. 0x24
                    Data ............. 07 01 00 80 02 e0 01 00 00 77
01 00 00 ca 08 00 60 09 00 15 16 05 00 06 15 16 05 00 80 1a 06 00 20
a1 07 00 2a 2c 0a 00 40 42 0f 00 80 84 1e 00
                [Descriptor 24]
                    Type ............. 0x24
                    Data ............. 07 02 00 a0 00 78 00 00 70 17
00 00 a0 8c 00 00 96 00 00 15 16 05 00 06 15 16 05 00 80 1a 06 00 20
a1 07 00 2a 2c 0a 00 40 42 0f 00 80 84 1e 00
                [Descriptor 25]
                    Type ............. 0x24
                    Data ............. 07 03 00 b0 00 90 00 00 f0 1e
00 00 a0 b9 00 00 c6 00 00 15 16 05 00 06 15 16 05 00 80 1a 06 00 20
a1 07 00 2a 2c 0a 00 40 42 0f 00 80 84 1e 00
                [Descriptor 26]
                    Type ............. 0x24
                    Data ............. 07 04 00 40 01 f0 00 00 c0 5d
00 00 80 32 02 00 58 02 00 15 16 05 00 06 15 16 05 00 80 1a 06 00 20
a1 07 00 2a 2c 0a 00 40 42 0f 00 80 84 1e 00
                [Descriptor 27]
                    Type ............. 0x24
                    Data ............. 07 05 00 60 01 20 01 00 c0 7b
00 00 80 e6 02 00 18 03 00 15 16 05 00 06 15 16 05 00 80 1a 06 00 20
a1 07 00 2a 2c 0a 00 40 42 0f 00 80 84 1e 00
                [Descriptor 28]
                    Type ............. 0x24
                    Data ............. 07 06 00 80 02 68 01 00 40 19
01 00 80 97 06 00 08 07 00 15 16 05 00 06 15 16 05 00 80 1a 06 00 20
a1 07 00 2a 2c 0a 00 40 42 0f 00 80 84 1e 00
                [Descriptor 29]
                    Type ............. 0x24
                    Data ............. 07 07 00 80 02 90 01 00 80 38
01 00 00 53 07 00 d0 07 00 15 16 05 00 06 15 16 05 00 80 1a 06 00 20
a1 07 00 2a 2c 0a 00 40 42 0f 00 80 84 1e 00
                [Descriptor 30]
                    Type ............. 0x24
                    Data ............. 07 08 00 00 03 e0 01 00 00 c2
01 00 00 8c 0a 00 40 0b 00 15 16 05 00 06 15 16 05 00 80 1a 06 00 20
a1 07 00 2a 2c 0a 00 40 42 0f 00 80 84 1e 00
                [Descriptor 31]
                    Type ............. 0x24
                    Data ............. 07 09 00 20 03 c8 01 00 50 bd
01 00 e0 6f 0a 00 22 0b 00 2a 2c 0a 00 06 15 16 05 00 80 1a 06 00 20
a1 07 00 2a 2c 0a 00 40 42 0f 00 80 84 1e 00
                [Descriptor 32]
                    Type ............. 0x24
                    Data ............. 07 0a 00 20 03 f8 01 00 30 ec
01 00 20 89 0b 00 4e 0c 00 2a 2c 0a 00 06 15 16 05 00 80 1a 06 00 20
a1 07 00 2a 2c 0a 00 40 42 0f 00 80 84 1e 00
                [Descriptor 33]
                    Type ............. 0x24
                    Data ............. 07 0b 00 20 03 58 02 00 f0 49
02 00 a0 bb 0d 00 a6 0e 00 2a 2c 0a 00 06 15 16 05 00 80 1a 06 00 20
a1 07 00 2a 2c 0a 00 40 42 0f 00 80 84 1e 00
                [Descriptor 34]
                    Type ............. 0x24
                    Data ............. 07 0c 00 60 03 e0 01 00 40 fa
01 00 80 dd 0b 00 a8 0c 00 2a 2c 0a 00 06 15 16 05 00 80 1a 06 00 20
a1 07 00 2a 2c 0a 00 40 42 0f 00 80 84 1e 00
                [Descriptor 35]
                    Type ............. 0x24
                    Data ............. 07 0d 00 c0 03 d0 02 00 c0 4b
03 00 80 c6 13 00 18 15 00 40 42 0f 00 06 15 16 05 00 80 1a 06 00 20
a1 07 00 2a 2c 0a 00 40 42 0f 00 80 84 1e 00
                [Descriptor 36]
                    Type ............. 0x24
                    Data ............. 07 0e 00 00 05 d0 02 00 00 65
04 00 00 5e 1a 00 20 1c 00 40 42 0f 00 06 15 16 05 00 80 1a 06 00 20
a1 07 00 2a 2c 0a 00 40 42 0f 00 80 84 1e 00
                [Descriptor 37]
                    Type ............. 0x24
                    Data ............. 07 0f 00 00 05 20 03 00 00 e2
04 00 00 6a 18 00 40 1f 00 40 42 0f 00 05 80 1a 06 00 20 a1 07 00 2a
2c 0a 00 40 42 0f 00 80 84 1e 00
                [Descriptor 38]
                    Type ............. 0x24
                    Data ............. 07 10 00 40 06 88 03 00 a0 e5
06 00 40 cb 0d 00 24 2c 00 40 42 0f 00 02 40 42 0f 00 80 84 1e 00
                [Descriptor 39]
                    Type ............. 0x24
                    Data ............. 07 11 00 40 06 e8 03 00 20 a1
07 00 40 42 0f 00 d4 30 00 40 42 0f 00 02 40 42 0f 00 80 84 1e 00
                [Descriptor 40]
                    Type ............. 0x24
                    Data ............. 07 12 00 40 06 b0 04 00 c0 27
09 00 80 4f 12 00 98 3a 00 80 84 1e 00 02 40 42 0f 00 80 84 1e 00
                [Descriptor 41]
                    Type ............. 0x24
                    Data ............. 03 00 12 80 02 e0 01 a0 00 78
00 b0 00 90 00 40 01 f0 00 60 01 20 01 80 02 68 01 80 02 90 01 00 03
e0 01 20 03 c8 01 20 03 f8 01 20 03 58 02 60 03 e0 01 c0 03 d0 02 00
05 d0 02 00 05 20 03 40 06 88 03 40 06 e8 03 40 06 b0 04 05 05 0a 0f
14 19
                [Descriptor 42]
                    Type ............. 0x24
                    Data ............. 0d 01 01 04
            [Alternate 1]
                Class .............. 0x0e (Video)
                Subclass ........... 0x02
                Protocol ........... 0x00
                Interface String ... ""
                [Endpoint 0]
                    MaxPacketSize .... 192
                    Interval ......... 1
                    Type ............. Isochronous
                    Direction ........ Input
            [Alternate 2]
                Class .............. 0x0e (Video)
                Subclass ........... 0x02
                Protocol ........... 0x00
                Interface String ... ""
                [Endpoint 0]
                    MaxPacketSize .... 384
                    Interval ......... 1
                    Type ............. Isochronous
                    Direction ........ Input
            [Alternate 3]
                Class .............. 0x0e (Video)
                Subclass ........... 0x02
                Protocol ........... 0x00
                Interface String ... ""
                [Endpoint 0]
                    MaxPacketSize .... 512
                    Interval ......... 1
                    Type ............. Isochronous
                    Direction ........ Input
            [Alternate 4]
                Class .............. 0x0e (Video)
                Subclass ........... 0x02
                Protocol ........... 0x00
                Interface String ... ""
                [Endpoint 0]
                    MaxPacketSize .... 640
                    Interval ......... 1
                    Type ............. Isochronous
                    Direction ........ Input
            [Alternate 5]
                Class .............. 0x0e (Video)
                Subclass ........... 0x02
                Protocol ........... 0x00
                Interface String ... ""
                [Endpoint 0]
                    MaxPacketSize .... 800
                    Interval ......... 1
                    Type ............. Isochronous
                    Direction ........ Input
            [Alternate 6]
                Class .............. 0x0e (Video)
                Subclass ........... 0x02
                Protocol ........... 0x00
                Interface String ... ""
                [Endpoint 0]
                    MaxPacketSize .... 944
                    Interval ......... 1
                    Type ............. Isochronous
                    Direction ........ Input
            [Alternate 7]
                Class .............. 0x0e (Video)
                Subclass ........... 0x02
                Protocol ........... 0x00
                Interface String ... ""
                [Endpoint 0]
                    MaxPacketSize .... 2688
                    Interval ......... 1
                    Type ............. Isochronous
                    Direction ........ Input
            [Alternate 8]
                Class .............. 0x0e (Video)
                Subclass ........... 0x02
                Protocol ........... 0x00
                Interface String ... ""
                [Endpoint 0]
                    MaxPacketSize .... 2848
                    Interval ......... 1
                    Type ............. Isochronous
                    Direction ........ Input
            [Alternate 9]
                Class .............. 0x0e (Video)
                Subclass ........... 0x02
                Protocol ........... 0x00
                Interface String ... ""
                [Endpoint 0]
                    MaxPacketSize .... 3040
                    Interval ......... 1
                    Type ............. Isochronous
                    Direction ........ Input
            [Alternate 10]
                Class .............. 0x0e (Video)
                Subclass ........... 0x02
                Protocol ........... 0x00
                Interface String ... ""
                [Endpoint 0]
                    MaxPacketSize .... 4992
                    Interval ......... 1
                    Type ............. Isochronous
                    Direction ........ Input
            [Alternate 11]
                Class .............. 0x0e (Video)
                Subclass ........... 0x02
                Protocol ........... 0x00
                Interface String ... ""
                [Endpoint 0]
                    MaxPacketSize .... 5116
                    Interval ......... 1
                    Type ............. Isochronous
                    Direction ........ Input
                [Descriptor 0]
                    Type ............. 0x0b
                    Data ............. 02 02 01 02 00 00
        [Interface 2]
            [Alternate 0 active]
                Class .............. 0x01 (Audio)
                Subclass ........... 0x01
                Protocol ........... 0x00
                Interface String ... ""
                [Descriptor 0]
                    Type ............. 0x24
                    Data ............. 01 00 01 26 00 01 03
                [Descriptor 1]
                    Type ............. 0x24
                    Data ............. 02 01 01 02 00 01 00 00 00 00
                [Descriptor 2]
                    Type ............. 0x24
                    Data ............. 03 03 01 01 01 05 00
                [Descriptor 3]
                    Type ............. 0x24
                    Data ............. 06 05 01 01 03 00 00
        [Interface 3]
            [Alternate 0 active]
                Class .............. 0x01 (Audio)
                Subclass ........... 0x02
                Protocol ........... 0x00
                Interface String ... ""
            [Alternate 1]
                Class .............. 0x01 (Audio)
                Subclass ........... 0x02
                Protocol ........... 0x00
                Interface String ... ""
                [Endpoint 0]
                    MaxPacketSize .... 68
                    Interval ......... 4
                    Type ............. Isochronous
                    Direction ........ Input
                [Descriptor 0]
                    Type ............. 0x24
                    Data ............. 01 03 01 01 00
                [Descriptor 1]
                    Type ............. 0x24
                    Data ............. 02 01 01 02 10 01 80 3e 00
                [Descriptor 2]
                    Type ............. 0x25
                    Data ............. 01 01 00 00 00
            [Alternate 2]
                Class .............. 0x01 (Audio)
                Subclass ........... 0x02
                Protocol ........... 0x00
                Interface String ... ""
                [Endpoint 0]
                    MaxPacketSize .... 100
                    Interval ......... 4
                    Type ............. Isochronous
                    Direction ........ Input
                [Descriptor 0]
                    Type ............. 0x24
                    Data ............. 01 03 01 01 00
                [Descriptor 1]
                    Type ............. 0x24
                    Data ............. 02 01 01 02 10 01 c0 5d 00
                [Descriptor 2]
                    Type ............. 0x25
                    Data ............. 01 01 00 00 00
            [Alternate 3]
                Class .............. 0x01 (Audio)
                Subclass ........... 0x02
                Protocol ........... 0x00
                Interface String ... ""
                [Endpoint 0]
                    MaxPacketSize .... 132
                    Interval ......... 4
                    Type ............. Isochronous
                    Direction ........ Input
                [Descriptor 0]
                    Type ............. 0x24
                    Data ............. 01 03 01 01 00
                [Descriptor 1]
                    Type ............. 0x24
                    Data ............. 02 01 01 02 10 01 00 7d 00
                [Descriptor 2]
                    Type ............. 0x25
                    Data ............. 01 01 00 00 00
            [Alternate 4]
                Class .............. 0x01 (Audio)
                Subclass ........... 0x02
                Protocol ........... 0x00
                Interface String ... ""
                [Endpoint 0]
                    MaxPacketSize .... 196
                    Interval ......... 4
                    Type ............. Isochronous
                    Direction ........ Input
                [Descriptor 0]
                    Type ............. 0x24
                    Data ............. 01 03 01 01 00
                [Descriptor 1]
                    Type ............. 0x24
                    Data ............. 02 01 01 02 10 01 80 bb 00
                [Descriptor 2]
                    Type ............. 0x25
                    Data ............. 01 01 00 00 00

On 6/13/11, Michael Lotz <mmlr@xxxxxxxx> wrote:
>> You can safely ignore the usb_floppy driver messages. All USB add-ons
>> (drivers) on the system are loaded/called when a USB device is
>> plugged.
>
> For completeness: That's not accurate. The usb_floppy driver had a bug
> which caused it to be called for all devices. In normal operation
> however, USB drivers register with a specific set of supported devices
> (via usb_support_descriptors) so they are only called for devices they
> are actually interested in.
>
> Regards
> Michael
>
>

Other related posts: