Re: Location of HUB USB Report Descriptors?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Feb 14, 2019 at 09:03:43AM -0700, Simon Wood wrote:
> I am attempted to debug an android problem related to USB hubs.
> 
> On desktop Linux 'lsusb -vv' details the HUB description, but 'lsusb' on
> Android is the simple cousin and does not know this information.

That's because Android is using toybox's version of 'lsusb'.  I
recommend using the real version if you need this information.

> I have found the 'descriptors' file for the USB device under the '/sys'
> interface, however this does not appear to contain the HUB specific
> details.

Really?  It should, why does it not contain that information?  That's a
binary file that lists the USB descriptor information.  You are going to
have to "parse it by hand".

> Is there another file somewhere, and can someone point me at it?
> 
> Specifically I am looking for the binary file which decodes like this...
> --
> Hub Descriptor:
>   bLength               9
>   bDescriptorType      41
>   nNbrPorts             4
>   wHubCharacteristic 0x00e0
>     Ganged power switching
>     Ganged overcurrent protection
>     TT think time 32 FS bits
>     Port indicators
>   bPwrOn2PwrGood       50 * 2 milli seconds
>   bHubContrCurrent    100 milli Ampere
>   DeviceRemovable    0x00
>   PortPwrCtrlMask    0xff
>  Hub Port Status:
>    Port 1: 0000.0100 power
>    Port 2: 0000.0100 power
>    Port 3: 0000.0100 power
>    Port 4: 0000.0100 power
> Device Qualifier (for other device speed):
>   bLength                10
>   bDescriptorType         6
>   bcdUSB               2.00
>   bDeviceClass            9 Hub
>   bDeviceSubClass         0 Unused
>   bDeviceProtocol         0 Full speed (or root) hub
>   bMaxPacketSize0        64
>   bNumConfigurations      1
> Device Status:     0x0001
>   Self Powered
> --
> 
> Many thanks in advance,
> Simon.

> 00000000   12 01 10 02 09 00 02 40 E3 05 10 06 03 93 01 02   .......@?.......
> 00000010   00 01 09 02 29 00 01 01 00 E0 32 09 04 00 00 01   ....)....?2.....
> 00000020   09 00 01 00 07 05 81 03 01 00 0C 09 04 00 01 01   ................
> 00000030   09 00 02 00 07 05 81 03 01 00 0C                  ...........     
> 
> 
> 0x12,        // bLength
> 0x01,        // bDescriptorType (Device)
> 0x10, 0x02,  // bcdUSB 2.10
> 0x09,        // bDeviceClass (Hub)
> 0x00,        // bDeviceSubClass 
> 0x02,        // bDeviceProtocol (High Speed Hub with multiple TT)
> 0x40,        // bMaxPacketSize0 64
> 0xE3, 0x05,  // idVendor 0x05E3
> 0x10, 0x06,  // idProduct 0x0610
> 0x03, 0x93,  // bcdDevice 240.03
> 0x01,        // iManufacturer (String Index)
> 0x02,        // iProduct (String Index)
> 0x00,        // iSerialNumber (String Index)
> 0x01,        // bNumConfigurations 1
> 
> 0x09,        // bLength
> 0x02,        // bDescriptorType (Configuration)
> 0x29, 0x00,  // wTotalLength 41
> 0x01,        // bNumInterfaces 1
> 0x01,        // bConfigurationValue
> 0x00,        // iConfiguration (String Index)
> 0xE0,        // bmAttributes Remote Wakeup, Self Powered
> 0x32,        // bMaxPower 100mA
> 
> 0x09,        // bLength
> 0x04,        // bDescriptorType (Interface)
> 0x00,        // bInterfaceNumber 0
> 0x00,        // bAlternateSetting
> 0x01,        // bNumEndpoints 1
> 0x09,        // bInterfaceClass
> 0x00,        // bInterfaceSubClass
> 0x01,        // bInterfaceProtocol
> 0x00,        // iInterface (String Index)
> 
> 0x07,        // bLength
> 0x05,        // bDescriptorType (Endpoint)
> 0x81,        // bEndpointAddress (IN/D2H)
> 0x03,        // bmAttributes (Interrupt)
> 0x01, 0x00,  // wMaxPacketSize 1
> 0x0C,        // bInterval 12 (unit depends on device speed)
> 
> 0x09,        // bLength
> 0x04,        // bDescriptorType (Interface)
> 0x00,        // bInterfaceNumber 0
> 0x01,        // bAlternateSetting
> 0x01,        // bNumEndpoints 1
> 0x09,        // bInterfaceClass
> 0x00,        // bInterfaceSubClass
> 0x02,        // bInterfaceProtocol
> 0x00,        // iInterface (String Index)
> 
> 0x07,        // bLength
> 0x05,        // bDescriptorType (Endpoint)
> 0x81,        // bEndpointAddress (IN/D2H)
> 0x03,        // bmAttributes (Interrupt)
> 0x01, 0x00,  // wMaxPacketSize 1
> 0x0C,        // bInterval 12 (unit depends on device speed)
> 
> // 59 bytes


That should be the descriptor file, what does it contain for your
device?

thanks,

greg k-h



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux