Skip to content
  • Lukáš Lalinský's avatar
    USB: Add quirk for WORLDE easykey.25 MIDI keyboard · d9b2997e
    Lukáš Lalinský authored
    
    
    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: default avatarLukáš Lalinský <lukas@oxygene.sk>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    d9b2997e