Re: Devices without stream pipes are not enumerating.

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

 



On Mon, 7 Sep 2009, B.Vinai Kumar wrote:

> Hi List,
> 
> I have a usb full speed image capture device which have the following
> configuration.
> 
> It has one configuration descriptor, one interface descriptor and
> one endpoint descriptor.
> 
> The value of bNumEndpoints field of the interface descriptor
> is zero. This device doesnot have any stream pipes, it has
> got only control endpoint. The captured data is transfered
> to the host through this control endpoint. The wMaxPacketSize
> of control endpoint is 64. When I connect this device under linux
> host the core dumps the following messages during enumeration(while parsing the
> configuration descriptors).
> 
> "config 1 interface 0 altsetting 0 has an invalid endpoint with
> address 0x0, skipping"
> "config 1 interface 0 altsetting 0 has 1 endpoint descriptor,
> different from the interface descriptor's value: 0"
> 
> I'am not able to use this device.
> In windows this device is enumerating and working properly.
> 
> I'am using linux kernel version 2.6.15 and also checked under 2.6.24
> kernel version too.


On Tue, 8 Sep 2009, B.Vinai Kumar wrote:

> Please find the usbmon dump.
...
> c38dc0c0 230859277 S Ci:002:00 s 80 06 0200 0000 0019 25 <
> c38dc0c0 230860307 C Ci:002:00 0 25 = 09021900 01010040 32090400
> 00000000 00000705 00004000 0a
> c38dc0c0 230863509 S Ci:002:00 s 80 06 0300 0000 00ff 255 <
> c38dc0c0 230864316 C Ci:002:00 0 255 = 80060003 0000ff00 32090400
> 00000000 00000705 00004000 0a000000 00000000

Good.  The usbmon information is clear: Your device is very buggy.
In the two interactions shown above are the following errors:

	The config descriptor's bmAttributes field is missing a
	bit which must be set to 1, according to the USB 2.0 spec.

	The interface descriptor says that there are no endpoints,
	but it is followed by an endpoint descriptor anyway.

	The endpoint descriptor contains an invalid address (0).

	The endpoint descriptor contains an invalid bInterval.

	When asked for string descriptor 0, the device returned
	a garbage buffer containing the Setup packet overlaying
	the config descriptor.

So it's not at all surprising that you get those warning messages in 
the system log when you plug in the device.  In spite of all these 
errors, however, the device should work okay.  Why aren't you able to 
use it?

Alan Stern

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

  Powered by Linux