Re: usbfs reopen yields unusable device.

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

 



On Wed, 18 Mar 2009, Dave Mielke wrote:

> [quoted lines by Alan Stern on 2009/03/18 at 14:11 -0400]
> 
> >There are two things you can do: enable CONFIG_USB_DEBUG and collect a 
> >usbmon trace (see Documentation/usb/usbmon.txt).
> 
> Thanks. usbmon works great. The "set interface" is resulting in a -2 error. 
> I've notified the vendor to check what "set interface" might do to their 
> device.

Okay.  As I mentioned before, you should try 2.6.29-rc8 just to see if 
it works better.

> One more question: I had another (full speed) device which wasn't expecting the 
> "get descriptor" for the device qualifier descriptor. The vendor has since 
> fixed that problem, even though they're quite convinced that the spec insists 
> that this request shouldn't be sent to a full speed device. In case I ever 
> encouter this again, is ther a way to tell Linux to not ask for that 
> descriptor?

There is not.

If you want to convince the vendor that their understanding of the spec 
is wrong, you can point to this text near the start of section 9.6.1:

	The DEVICE descriptor of a high-speed capable device has a
	version number of 2.0 (0200H). If the device is full-speed only
	or low-speed only, this version number indicates that it will
	respond correctly to a request for the device_qualifier
	desciptor (i.e., it will respond with a request error).

and this text at the end of section 9.6.2:

	If a full-speed only device (with a device descriptor version
	number equal to 0200H) receives a GetDescriptor() request for a
	device_qualifier, it must respond with a request error.

The intent is clear.  If the bcdUSB value in the device descriptor is
0x0200 then the device must be able to cope with a request for the
device-qualifier descriptor.  If it can't run at high speed then it
doesn't actually have to return a descriptor; it should send a STALL
instead.  But regardless, it mustn't crash or fail some other way.

If the bcdUSB value is 0x0110 (indicating support for USB 1.1, not USB 
2.0) then the kernel will not ask for a device-qualifier descriptor.

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