From: Tim R. <ti...@pr...> - 2009-01-06 17:26:25
|
Blaine Booher wrote: > On Friday 19 December 2008, Alan Stern wrote: > >> On Fri, 19 Dec 2008, Blaine Booher wrote: >> >> To make this work, you need to edit the source file >> drivers/usb/core/devio.c. Change the function check_ctrlrecip() to >> simply return 0 without doing any of its normal tests. >> >> Alan Stern >> >> >> > > Hey everyone, > I wanted to open a disucssion (if one is necessary) about this issue. The issue being that the kernel (in check_ctrlrecip()) blocks control messages with request type 0x22 and request 0x09. The 0x09 is SET_REPORT in the HID API, which is valid. Two corrections to that. First, it doesn't block ALL control messages with bmRequestType=0x22 and bRequest=0x09; it only blocks those where the endpoint number in the wIndex field is not within an interface claimed by the caller. Second, all of the HID requests use bmRequestType=0x21, targeting an interface. 0x22 targets the endpoint. The 0x22/0x09 message is NOT valid in the HID API. > So... since there are devices available for purchase on the market (that may or may not be Windows-only) that do in fact use this request type and request, should the kernel be updated to not block these requests? > This is a complicated question, and although I have my own opinions, this needs to be decided by the Linux kernel USB team. > I believe that this requsttype has to do with specifics regarding HID devices. Is this actually a rare usage of an HID specification, or is it straight up non-compliant? > It is straight up non-compliant. Section 7.2 (page 50) of the HID spec is quite clear on this. -- Tim Roberts, ti...@pr... Providenza & Boekelheide, Inc. |