Linux – usb_submit_urb(ctrl) failed: -1 Corsair k65 RGB keyboard

arch linuxbootgrubkeyboardusb

I recently purchased a Corsair k65 RGB keyboard. Of course it didn't work at first, but with an ckb-opensource driver I got everything working on my arch system.

Everything went so well until I started to get errors whenever I boot my system:

usb_submit_urb(ctrl) failed: -1

appears on my screen and the system freezes for 30sec. After that the keyboard works and I can login on my system.
But what does the error mean?

[   11.238682] hid-generic 0003:1B1C:1B17.0002: usb_submit_urb(ctrl) failed: -1
[   11.239526] hid-generic 0003:1B1C:1B17.0002: timeout initializing reports
[   11.239959] input: Corsair Corsair K65 RGB Gaming Keyboard as /devices/pci0000:00/0000:00:1c.7/0000:07:00.0/usb5/5-1/5-1:1.1/0003:1B1C:1B17.0002/input/input6
[   11.291882] hid-generic 0003:1B1C:1B17.0002: input,hidraw4: USB HID v1.11 Keyboard [Corsair Corsair K65 RGB Gaming Keyboard] on usb-0000:07:00.0-1/input1
[   21.291319] hid-generic 0003:1B1C:1B17.0003: timeout initializing reports
[   21.291585] hid-generic 0003:1B1C:1B17.0003: hiddev0,hidraw5: USB HID v1.11 Device [Corsair Corsair K65 RGB Gaming Keyboard] on usb-0000:07:00.0-1/input2
[   31.290650] hid-generic 0003:1B1C:1B17.0004: timeout initializing reports
[   31.290905] hid-generic 0003:1B1C:1B17.0004: hiddev0,hidraw6: USB HID v1.11 Device [Corsair Corsair K65 RGB Gaming Keyboard] on usb-0000:07:00.0-1/input3

If I use lsusb I get:

Bus 005 Device 002: ID 1b1c:1b17 Corsair

I have heard about "usbhid quirks" is a possible workaround. But how do I use this ? Or is there any possible solution for this ?

Best Answer

Solution for all Corsair mechanical keyboards with usbhid quirks.

sudo nano /etc/default/grub

or any other editor you like to use instead of nano.
you will see this line

GRUB_CMDLINE_LINUX_DEFAULT=""

make sure to put the usbhid.quircks between the quotes and save that.
In my case I had to change it to this line

GRUB_CMDLINE_LINUX_DEFAULT="usbhid.quirks=0x1B1C:0x1B17:0x20000408"

after that, update grub

sudo update-grub

*If that command is not found, you probably run grub 2.0. Use this command instead. update-grub command is just a script which runs the grub-mkconfig

sudo grub-mkconfig -o /boot/grub/grub.cfg

after that is done, reboot the system.
Now it should work normal and the message won't appear.

Use the quirks for your keyboards. You can use this list below for Corsair keyboards.

K65 RGB: usbhid.quirks=0x1B1C:0x1B17:0x20000408
K70: usbhid.quirks=0x1B1C:0x1B09:0x0x20000408
K70 RGB: usbhid.quirks=0x1B1C:0x1B13:0x20000408
K95: usbhid.quirks=0x1B1C:0x1B08:0x20000408
K95 RGB: usbhid.quirks=0x1B1C:0x1B11:0x20000408
Strafe: usbhid.quirks=0x1B1C:0x1B15:0x20000408
Strafe RGB: usbhid.quirks=0x1B1C:0x1B20:0x20000408
M65 RGB: usbhid.quirks=0x1B1C:0x1B12:0x20000408
Sabre RGB Optical: usbhid.quirks=0x1B1C:0x1B14:0x20000408
Sabre RGB Laser: usbhid.quirks=0x1B1C:0x1B19:0x20000408
Scimitar RGB: usbhid.quirks=0x1B1C:0x1B1E:0x20000408

Update Linux kernel 4.11: HID fixes are support for some more Corsair mice and keyboards. K65RGB and K70RGB have their HID quirk fixes in Linux 4.11 for these devices.

See commit: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=deaba636997557fce46ca7bcb509bff5ea1b0558

You can find out your kernel version to use this command in the terminal uname -r

to sum up, if you have Linux kernel 4.11 there's a chance you don't need to go through this process for adding usbhid quirks.

Related Question