Opened 8 months ago

Last modified 8 months ago

#18889 new bug

USB IR Remote shows up as keyboard

Reported by: nephele Owned by: nobody
Priority: normal Milestone: Unscheduled
Component: Drivers/Input/HID/USB Version: R1/Development
Keywords: Cc: pulkomandy
Blocked By: Blocking:
Platform: All

Description

I have a new case that comes with a LCD panel and IR receiver (apparently) These show up as keyboard and my alt key does not work.

Noticed this since I have a PS/2 Mouse and keyboard attached, and no USB ones.

[Device /dev/bus/usb/0/8]
    Class .................. 0x00 (Defined at Interface level) ()
    Subclass ............... 0x00 (Defined at Interface level) ()
    Protocol ............... 0x00 (Defined at Interface level) ()
    Max Endpoint 0 Packet .. 8
    USB Version ............ 1.16
    Vendor ID .............. 0x15c2 (SoundGraph Inc.)
    Product ID ............. 0x0038 (GD01 MX LCD Display/IR Receiver)
    Product Version ........ 0x0002
    Manufacturer String .... ""
    Product String ......... ""
    Serial Number .......... ""
    [Configuration 0]
        Configuration String . ""
        [Interface 0]
            [Alternate 0 active]
                Class .............. 0x03 Human Interface Device (No Subclass, None)
                Subclass ........... 0x00 Human Interface Device (No Subclass, None)
                Protocol ........... 0x02 Human Interface Device (No Subclass, Mouse)
                Interface String ... ""
                [Endpoint 0]
                    MaxPacketSize .... 1x 8 bytes
                    Interval ......... 10
                    Type ............. Interrupt
                    Direction ........ Input
                [Descriptor 0]
                    Length............ 0x09
                    Type ............. 0x21
                    Data ............. 01 01 00 01 22 79 00 
        [Interface 1]
            [Alternate 0 active]
                Class .............. 0x03 Human Interface Device (No Subclass, None)
                Subclass ........... 0x00 Human Interface Device (No Subclass, None)
                Protocol ........... 0x00 Human Interface Device (No Subclass, None)
                Interface String ... ""
                [Endpoint 0]
                    MaxPacketSize .... 1x 8 bytes
                    Interval ......... 10
                    Type ............. Interrupt
                    Direction ........ Input
                [Descriptor 0]
                    Length............ 0x09
                    Type ............. 0x21
                    Data ............. 00 01 00 01 22 32 00 
[Device /dev/bus/usb/0/hub]
    Class .................. 0x09 Hub (Unused, Full speed (or root) hub)
    Subclass ............... 0x00 Hub (Unused, Full speed (or root) hub)
    Protocol ............... 0x03 Hub (Unused, TT per port)
    Max Endpoint 0 Packet .. 9
    USB Version ............ 3.0
    Vendor ID .............. 0x0000
    Product ID ............. 0x0000
    Product Version ........ 0x0300
    Manufacturer String .... "HAIKU Inc."
    Product String ......... "XHCI RootHub"
    Serial Number .......... ""
    [Configuration 0]
        Configuration String . ""
        [Interface 0]
            [Alternate 0 active]
                Class .............. 0x09 Hub (Unused, Full speed (or root) hub)
                Subclass ........... 0x00 Hub (Unused, Full speed (or root) hub)
                Protocol ........... 0x00 Hub (Unused, Full speed (or root) hub)
                Interface String ... ""
                [Endpoint 0]
                    MaxPacketSize .... 1x 2 bytes
                    Interval ......... 255
                    Type ............. Interrupt
                    Direction ........ Input
                [Descriptor 0]
                    Type .............. 0x30 Endpoint SuperSpeed Companion
                    MaxBurst .......... 0x00
                    Attributes ........ 0x00
                    Bytes per Interval  0x00
                [Descriptor 1]
                    Length............ 0x09
                    Type ............. 0x29
                    Data ............. 0e 00 00 0a 00 00 ff 
    Hub ports count......... 14
    Hub Controller Current.. 0mA
      Port 1 status....... 02a0.0000
      Port 2 status....... 02a0.0000
      Port 3 status....... 02a0.0000
      Port 4 status....... 0100.0000 Power
      Port 5 status....... 0100.0000 Power
      Port 6 status....... 0100.0000 Power
      Port 7 status....... 0100.0000 Power
      Port 8 status....... 0100.0000 Power
      Port 9 status....... 0303.0000 Connect Enable Power
      Port 10 status....... 0100.0000 Power
      Port 11 status....... 0100.0000 Power
      Port 12 status....... 0100.0000 Power
      Port 13 status....... 0000.0000
      Port 14 status....... 0000.0000
[Device /dev/bus/usb/1/hub]
    Class .................. 0x09 Hub (Unused, Full speed (or root) hub)
    Subclass ............... 0x00 Hub (Unused, Full speed (or root) hub)
    Protocol ............... 0x03 Hub (Unused, TT per port)
    Max Endpoint 0 Packet .. 9
    USB Version ............ 3.0
    Vendor ID .............. 0x0000
    Product ID ............. 0x0000
    Product Version ........ 0x0300
    Manufacturer String .... "HAIKU Inc."
    Product String ......... "XHCI RootHub"
    Serial Number .......... ""
    [Configuration 0]
        Configuration String . ""
        [Interface 0]
            [Alternate 0 active]
                Class .............. 0x09 Hub (Unused, Full speed (or root) hub)
                Subclass ........... 0x00 Hub (Unused, Full speed (or root) hub)
                Protocol ........... 0x00 Hub (Unused, Full speed (or root) hub)
                Interface String ... ""
                [Endpoint 0]
                    MaxPacketSize .... 1x 2 bytes
                    Interval ......... 255
                    Type ............. Interrupt
                    Direction ........ Input
                [Descriptor 0]
                    Type .............. 0x30 Endpoint SuperSpeed Companion
                    MaxBurst .......... 0x00
                    Attributes ........ 0x00
                    Bytes per Interval  0x00
                [Descriptor 1]
                    Length............ 0x09
                    Type ............. 0x29
                    Data ............. 08 00 00 0a 00 00 ff 
    Hub ports count......... 8
    Hub Controller Current.. 0mA
      Port 1 status....... 0100.0000 Power
      Port 2 status....... 0100.0000 Power
      Port 3 status....... 0100.0000 Power
      Port 4 status....... 0100.0000 Power
      Port 5 status....... 02a0.0000
      Port 6 status....... 02a0.0000
      Port 7 status....... 02a0.0000
      Port 8 status....... 02a0.0000

Attachments (4)

usb_hid_report_descriptor_15c2_0038_0.bin (121 bytes ) - added by nephele 8 months ago.
usb_hid_report_descriptor_15c2_0038_1.bin (50 bytes ) - added by nephele 8 months ago.
syslog (98.3 KB ) - added by nephele 8 months ago.
screenshot338.png (24.7 KB ) - added by nephele 8 months ago.

Download all attachments as: .zip

Change History (6)

by nephele, 8 months ago

Attachment: syslog added

by nephele, 8 months ago

Attachment: screenshot338.png added

comment:1 by pulkomandy, 8 months ago

The decoded HID descriptor:

0x05, 0x01,        // Usage Page (Generic Desktop Ctrls)
0x09, 0x02,        // Usage (Mouse)
0xA1, 0x01,        // Collection (Application)
0x09, 0x01,        //   Usage (Pointer)
0xA1, 0x00,        //   Collection (Physical)
0x85, 0x01,        //     Report ID (1)
0x05, 0x09,        //     Usage Page (Button)
0x19, 0x01,        //     Usage Minimum (0x01)
0x29, 0x03,        //     Usage Maximum (0x03)
0x15, 0x00,        //     Logical Minimum (0)
0x25, 0x01,        //     Logical Maximum (1)
0x95, 0x03,        //     Report Count (3)
0x75, 0x01,        //     Report Size (1)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x95, 0x01,        //     Report Count (1)
0x75, 0x05,        //     Report Size (5)
0x81, 0x01,        //     Input (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
0x09, 0x30,        //     Usage (X)
0x09, 0x31,        //     Usage (Y)
0x15, 0x81,        //     Logical Minimum (-127)
0x25, 0x7F,        //     Logical Maximum (127)
0x75, 0x08,        //     Report Size (8)
0x95, 0x02,        //     Report Count (2)
0x81, 0x06,        //     Input (Data,Var,Rel,No Wrap,Linear,Preferred State,No Null Position)
0xC0,              //   End Collection
0x09, 0x38,        //   Usage (Wheel)
0x95, 0x01,        //   Report Count (1)
0x81, 0x06,        //   Input (Data,Var,Rel,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x3C,        //   Usage (Motion Wakeup)
0x15, 0x00,        //   Logical Minimum (0)
0x25, 0x01,        //   Logical Maximum (1)
0x75, 0x01,        //   Report Size (1)
0x95, 0x01,        //   Report Count (1)
0xB1, 0x22,        //   Feature (Data,Var,Abs,No Wrap,Linear,No Preferred State,No Null Position,Non-volatile)
0x95, 0x07,        //   Report Count (7)
0xB1, 0x01,        //   Feature (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
0xC0,              // End Collection
0x09, 0x06,        // Usage (Keyboard)
0xA1, 0x01,        // Collection (Application)
0x85, 0x02,        //   Report ID (2)
0x05, 0x07,        //   Usage Page (Kbrd/Keypad)
0x19, 0xE0,        //   Usage Minimum (0xE0)
0x29, 0xE7,        //   Usage Maximum (0xE7)
0x15, 0x00,        //   Logical Minimum (0)
0x25, 0x01,        //   Logical Maximum (1)
0x75, 0x01,        //   Report Size (1)
0x95, 0x08,        //   Report Count (8)
0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x95, 0x01,        //   Report Count (1)
0x75, 0x08,        //   Report Size (8)
0x81, 0x01,        //   Input (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x95, 0x05,        //   Report Count (5)
0x75, 0x08,        //   Report Size (8)
0x15, 0x00,        //   Logical Minimum (0)
0x26, 0xFF, 0x00,  //   Logical Maximum (255)
0x05, 0x07,        //   Usage Page (Kbrd/Keypad)
0x19, 0x00,        //   Usage Minimum (0x00)
0x2A, 0xFF, 0x00,  //   Usage Maximum (0xFF)
0x81, 0x00,        //   Input (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position)
0xC0,              // End Collection

// 121 bytes

(that's the first descriptor, I assume the second one is for the LCD and it uses some custom interface).

This device says that it's a mouse and keyboard, so we handle it as such. I don't think there's anything wrong with that? If you had the matching remote, you could use it to control your computer.

Is the problem with your ALT key related to this? I don't know. Maybe you can disable the usb_hid driver and see if that changes anything. Or unplug these things from your USB bus if you don't want to use them?

comment:2 by nephele, 8 months ago

It has a volume dial, ideally I want to use this. :)

I agree that handeling it internally as a keyboard/mouse is fine. But not in the input preferences, it should appear as a single device.

Other than making a quirk for this I‘m not sure what options are available for that though. i don‘t have a remote for this, perhaps I can obtain one to test.

The device is embedded in the front of the case and directly connected to the mainboards usb header, I could unplug it but making it work (without breaking my ps/2 keyboard) would be nicer.

I will blacklist usb_hid to test it.

Note: See TracTickets for help on using tickets.