On Fri, Jan 20, 2017 at 07:46:34PM +0100, Lukáš Lalinský wrote: > Add a quirk for WORLDE easykey.25 MIDI keyboard (idVendor=0218, > idProduct=0401). The device reports that it has config string > descriptor at index 3, but when the system selects the configuration > and tries to get the description, it returns a -EPROTO error, > the communication restarts and this keeps repeating over and over again. > Not requesting the string descriptor makes the device work correctly. Always use scripts/get_maintainer.pl to determine who to send patches to, and what mailing list. You forgot linux-usb@vger, which I've now added... > > Relevant info from Wireshark: > > [...] > > CONFIGURATION DESCRIPTOR > bLength: 9 > bDescriptorType: 0x02 (CONFIGURATION) > wTotalLength: 101 > bNumInterfaces: 2 > bConfigurationValue: 1 > iConfiguration: 3 > Configuration bmAttributes: 0xc0 SELF-POWERED NO REMOTE-WAKEUP > 1... .... = Must be 1: Must be 1 for USB 1.1 and higher > .1.. .... = Self-Powered: This device is SELF-POWERED > ..0. .... = Remote Wakeup: This device does NOT support remote wakeup > bMaxPower: 50 (100mA) > > [...] > > 45 0.369104 host 2.38.0 USB 64 GET DESCRIPTOR Request STRING > > [...] > > URB setup > bmRequestType: 0x80 > 1... .... = Direction: Device-to-host > .00. .... = Type: Standard (0x00) > ...0 0000 = Recipient: Device (0x00) > bRequest: GET DESCRIPTOR (6) > Descriptor Index: 0x03 > bDescriptorType: 0x03 > Language Id: English (United States) (0x0409) > wLength: 255 > > 46 0.369255 2.38.0 host USB 64 GET DESCRIPTOR Response STRING[Malformed Packet] > > [...] > > Frame 46: 64 bytes on wire (512 bits), 64 bytes captured (512 bits) on interface 0 > USB URB > [Source: 2.38.0] > [Destination: host] > URB id: 0xffff88021f62d480 > URB type: URB_COMPLETE ('C') > URB transfer type: URB_CONTROL (0x02) > Endpoint: 0x80, Direction: IN > Device: 38 > URB bus id: 2 > Device setup request: not relevant ('-') > Data: present (0) > URB sec: 1484896277 > URB usec: 455031 > URB status: Protocol error (-EPROTO) (-71) > URB length [bytes]: 0 > Data length [bytes]: 0 > [Request in: 45] > [Time from request: 0.000151000 seconds] > Unused Setup Header > Interval: 0 > Start frame: 0 > Copy of Transfer Flags: 0x00000200 > Number of ISO descriptors: 0 > [Malformed Packet: USB] > [Expert Info (Error/Malformed): Malformed Packet (Exception occurred)] > [Malformed Packet (Exception occurred)] > [Severity level: Error] > [Group: Malformed] > > Signed-off-by: Lukáš Lalinský <lukas@xxxxxxxxxx> > --- > drivers/usb/core/quirks.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c > index d2e50a2..24f9f98 100644 > --- a/drivers/usb/core/quirks.c > +++ b/drivers/usb/core/quirks.c > @@ -37,6 +37,10 @@ static const struct usb_device_id usb_quirk_list[] = { > /* CBM - Flash disk */ > { USB_DEVICE(0x0204, 0x6025), .driver_info = USB_QUIRK_RESET_RESUME }, > > + /* WORLDE easy key (easykey.25) MIDI controller */ > + { USB_DEVICE(0x0218, 0x0401), .driver_info = > + USB_QUIRK_CONFIG_INTF_STRINGS }, That's odd, how does other operating systems handle this device? thanks, greg k-h -- 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