Hello, I have a Perixx Periboard-520 USB keyboard + trackball that is not fully working, the keyboard seems OK, but the trackball is not. The kernel errors out during probe, probably due to a botched HID decriptor table. I still am able to get something out of it with `usbhid-dump` though. See below. I can easily test patches, or provide more informations. I may be mentored to fix it myself, I just don't really know where to start. I've seen that `drivers/hid/hid-holtek-kbd.c` has something to fix the descriptor table for another model. ## Hardware Brand: Perixx Type: Wired trackball keyboard Model: PERIBOARD-520 Part No: TK566 ## Unplugging then replugging the device # dmesg | tail -8 [ 2655.083815] usb 5-3: USB disconnect, device number 3 [ 2659.028237] usb 5-1: new low-speed USB device number 4 using xhci_hcd [ 2659.206156] usb 5-1: New USB device found, idVendor=04d9, idProduct=a088, bcdDevice= 1.15 [ 2659.206165] usb 5-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0 [ 2659.249387] input: HID 04d9:a088 as /devices/pci0000:00/0000:00:01.2/0000:01:00.0/0000:02:08.0/0000:27:00.3/usb5/5-1/5-1:1.0/0003:04D9:A088.0006/input/input20 [ 2659.308499] hid-generic 0003:04D9:A088.0006: input,hidraw0: USB HID v1.11 Keyboard [HID 04d9:a088] on usb-0000:27:00.3-1/input0 [ 2659.308744] usbhid 5-1:1.1: can't add hid device: -22 [ 2659.308758] usbhid: probe of 5-1:1.1 failed with error -22 $ lsusb -vd 04d9:a088 Bus 005 Device 004: ID 04d9:a088 Holtek Semiconductor, Inc. Couldn't open device, some information will be missing Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 8 idVendor 0x04d9 Holtek Semiconductor, Inc. idProduct 0xa088 bcdDevice 1.15 iManufacturer 0 iProduct 0 iSerial 0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 0x003b bNumInterfaces 2 bConfigurationValue 1 iConfiguration 0 bmAttributes 0xa0 (Bus Powered) Remote Wakeup MaxPower 100mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 3 Human Interface Device bInterfaceSubClass 1 Boot Interface Subclass bInterfaceProtocol 1 Keyboard iInterface 0 HID Device Descriptor: bLength 9 bDescriptorType 33 bcdHID 1.11 bCountryCode 0 Not supported bNumDescriptors 1 bDescriptorType 34 Report wDescriptorLength 62 Report Descriptors: ** UNAVAILABLE ** Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0008 1x 8 bytes bInterval 10 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 3 Human Interface Device bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 HID Device Descriptor: bLength 9 bDescriptorType 33 bcdHID 1.11 bCountryCode 0 Not supported bNumDescriptors 0 junk at descriptor end: 22 ae 00 Report Descriptors: ** UNAVAILABLE ** Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0008 1x 8 bytes bInterval 10 # usbhid-dump --model=04d9:a088 005:004:001:DESCRIPTOR 1642794805.579145 05 01 09 80 A1 01 85 01 19 81 29 83 15 00 25 01 95 03 75 01 81 02 95 01 75 05 81 01 C0 05 0C 09 01 A1 01 85 02 15 00 25 01 09 E9 09 EA 09 E2 09 CD 19 B5 29 B8 75 01 95 08 81 02 0A 8A 01 0A 21 02 0A 2A 02 1A 23 02 2A 27 02 81 02 0A 83 01 0A 96 01 0A 92 01 0A 9E 01 0A 94 01 0A 06 02 09 B2 09 B4 81 02 C0 05 01 09 02 A1 01 85 03 09 01 A1 00 05 09 19 01 29 03 15 00 25 01 95 03 75 01 81 02 95 01 75 05 81 01 05 01 09 30 09 31 15 81 25 7F 75 08 95 02 81 06 09 38 15 81 25 7F 35 08 95 01 81 06 05 0C 0A 38 02 95 01 81 06 C0 C0 005:004:000:DESCRIPTOR 1642794805.592119 05 01 09 06 A1 01 05 07 19 E0 29 E7 15 00 25 01 75 01 95 08 81 02 95 01 75 08 81 01 95 03 75 01 05 08 19 01 29 03 91 02 95 05 75 01 91 01 95 06 75 08 26 FF 00 05 07 19 00 29 91 81 00 C0 # usbhid-dump -e stream --model=04d9:a088 Starting dumping interrupt transfer stream with 1 minute timeout. ## Keypresses (released between each one: "s" + "o" + "s") 005:004:000:STREAM 1642796622.287620 00 00 16 00 00 00 00 00 005:004:000:STREAM 1642796622.383625 00 00 00 00 00 00 00 00 005:004:000:STREAM 1642796623.719620 00 00 12 00 00 00 00 00 005:004:000:STREAM 1642796623.831598 00 00 00 00 00 00 00 00 005:004:000:STREAM 1642796624.575178 00 00 16 00 00 00 00 00 005:004:000:STREAM 1642796624.663739 00 00 00 00 00 00 00 00 ## Pressing and releasing left trackball button twice in a row 005:004:001:STREAM 1642795078.474017 03 01 00 00 00 00 005:004:001:STREAM 1642795078.785958 03 00 00 00 00 00 005:004:001:STREAM 1642795080.858012 03 01 00 00 00 00 005:004:001:STREAM 1642795080.977974 03 00 00 00 00 00 ## Pressing and releasing right trackball button twice in a row 005:004:001:STREAM 1642795083.217993 03 02 00 00 00 00 005:004:001:STREAM 1642795083.385952 03 00 00 00 00 00 005:004:001:STREAM 1642795084.041907 03 02 00 00 00 00 005:004:001:STREAM 1642795084.241925 03 00 00 00 00 00 ## Rolling the ball 005:004:001:STREAM 1642795244.631126 03 00 F8 09 00 00 005:004:001:STREAM 1642795244.639211 03 00 F9 05 00 00 005:004:001:STREAM 1642795244.647062 03 00 F8 06 00 00 005:004:001:STREAM 1642795244.663086 03 00 EF 0B 00 00 005:004:001:STREAM 1642795244.671097 03 00 F8 03 00 00 005:004:001:STREAM 1642795244.679085 03 00 F5 05 00 00 005:004:001:STREAM 1642795244.687086 03 00 F8 03 00 00 005:004:001:STREAM 1642795244.695086 03 00 F5 02 00 00 005:004:001:STREAM 1642795244.703095 03 00 F8 02 00 00 005:004:001:STREAM 1642795244.711086 03 00 F5 00 00 00 005:004:001:STREAM 1642795244.719086 03 00 F7 00 00 00 005:004:001:STREAM 1642795244.727135 03 00 FA 00 00 00 005:004:001:STREAM 1642795244.735072 03 00 F9 00 00 00 005:004:001:STREAM 1642795244.743085 03 00 FC 00 00 00 005:004:001:STREAM 1642795244.751085 03 00 F9 00 00 00 005:004:001:STREAM 1642795244.759132 03 00 FC 00 00 00 005:004:001:STREAM 1642795244.767085 03 00 FA FE 00 00 005:004:001:STREAM 1642795244.775086 03 00 FE FE 00 00 005:004:001:STREAM 1642795244.783124 03 00 FC FD 00 00 005:004:001:STREAM 1642795244.799062 03 00 FA F9 00 00 005:004:001:STREAM 1642795244.807084 03 00 FC F9 00 00 005:004:001:STREAM 1642795244.815122 03 00 FC FA 00 00 005:004:001:STREAM 1642795244.823094 03 00 FB F8 00 00 005:004:001:STREAM 1642795244.831081 03 00 FB FA 00 00 005:004:001:STREAM 1642795244.839085 03 00 FB F5 00 00 005:004:001:STREAM 1642795244.847125 03 00 FD F9 00 00 005:004:001:STREAM 1642795244.855093 03 00 FB F4 00 00 005:004:001:STREAM 1642795244.863085 03 00 FD F7 00 00 -- Vincent Legoll