4

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 ?

  • It seems like this person had a similar issue: bbs.archlinux.org/viewtopic.php?id=192969 Check out Staubsauger's solution, maybe editing the /etc/default/grub file works for you as well. – Erik van de Ven May 2 '16 at 12:03
  • Should I also use usbhid.quirks=0x1B1C:0x1B12:0x20000000" ? And resume=UUID= ... should probably also different? If they both have to be different, how do I know what to use? – Romano May 2 '16 at 12:07
  • 1
    Well, as far as I can tell it needs to be <VID>:<PID>:<Quirks>, but I don't know where you can get that information, maybe this link helps you a bit: forums.opensuse.org/showthread.php/… – Erik van de Ven May 2 '16 at 12:18
  • 1
    I solved it. I will write the solution up. – Romano May 2 '16 at 12:46
  • I get the same or a similar issue when I use an easterntech mechanical keyboard (a cheap make of mechanical keyboard marketed under a few different brands). This mostly effects me when I plug the keyboard in again after boot. The delay is 10 seconds for me rather than 30... although 10 seconds feels like an awfully long time. – Att Righ May 23 '17 at 14:52
5

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.

  • This fixed a problem with a keyboard that was not responding after resuming (askubuntu.com/questions/811162/…). I have a similar problem with two USB speakers: have to unplug and plug again after resuming. What would be the parameters for this device? – nightcod3r Jan 28 '17 at 13:56
1

Just wanted to add that I had to use a different code to get my recently purchased K70 Lux working properly on Linux Mint 18 (4.4.0-21 kernel).

K70 Lux: usbhid.quirks=0x1B1C:0x1B36:0x0x20000408

The code is based on the output of lsusb. In my case, I had

Bus 003 Device 002: ID 1b1c:1b36 Corsair 

Comparing this to the codes in the previous answer tipped me off that I needed to change the USB identifier to match my device.

0

This answer is entirely based on @rsking84 and @romano's answer but uses a different approach to allow you to

  • Getting this working without restarting your computer
  • Debug without restarting your computer

Referring to this post, romano's approach works by setting a kernel command line argument which in turn gets used to set a module parameter for the usbhid module when it gets loaded. Sometimes usbhid will be compiled into the kernel in which case this appears to be the only way to set this parameter.

Module parameters can also be set when the module is loaded (or reloaded). This means one case test paramters at runtime using:

/usr/bin/sudo rmmod  usbhid
/usr/bin/sudo modprobe usbhid.quirks=0x1B1C:0x1B17:0x200004
cat /sys/module/usbhid/parameters/quirks

(If this goes wrong and the keyboard stops working you may be able to fix this by unplugging and replugging the keyboard)

Once you have got this working using (possibly changing the product and vendor id's as in @rsking84's answer), you can add options to /etc/modprobe.d/ushbid.conf like so:

options usbhid quirks=0x1B1C:0x1B17:0x200004

This can be tested by running rmmod usbhid once more and replugging the keyboard.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.