| From d9b2997e4a0a874e452df7cdd7de5a54502bd0aa Mon Sep 17 00:00:00 2001 |
| From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Lalinsk=C3=BD?= <lukas@oxygene.sk> |
| Date: Fri, 20 Jan 2017 19:46:34 +0100 |
| Subject: [PATCH] USB: Add quirk for WORLDE easykey.25 MIDI keyboard |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| commit d9b2997e4a0a874e452df7cdd7de5a54502bd0aa upstream. |
| |
| 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. |
| |
| 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@oxygene.sk> |
| Cc: stable <stable@vger.kernel.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c |
| index d2e50a27140c..24f9f98968a5 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 }, |
| + |
| /* HP 5300/5370C scanner */ |
| { USB_DEVICE(0x03f0, 0x0701), .driver_info = |
| USB_QUIRK_STRING_FETCH_255 }, |
| -- |
| 2.12.0 |
| |