slow boot - timeout initializing reports

2016-03-23 15:54

When booting a newly installed system I noticed the process took unusually long to complete. Looking through the output of dmesg I noticed entries like this indicating my keyboard was causing some sort of timeout delaying the boot:

[   11.057376] hid-generic 0003:1B1C:1B17.0002: timeout initializing reports
[   11.113364] hid-generic 0003:1B1C:1B17.0002: input,hidraw2: USB HID v1.11 Keyboard [Corsair Corsair K65 RGB Gaming Keyboard ] on usb-0000:00:14.0-3/input1

After some digging, finding this post, I came to the conclusion I had to edit grub startup parameter and add usbhid.quirks for my keyboard to it. So I edited /etc/default/grub:

GRUB_CMDLINE_LINUX_DEFAULT="quiet nosplash usbhid.quirks=0x1B1C:0x1B17:0x20000000"

Then updated grub:

sudo update-grub

After trying and succeeding with this I found a correct Troubleshooting guide for this problem. The ckb project supplies a RGB Driver for Linux and OS X for Corsair keyboards. That guide indicate I should be using the value 0x20000408 as the last value for the usbhid.quirks parameter. So I updated my grub and it was still working.

The format for the quirks parameter is idVendor:idProduct:quirks if I understand correctly and according to include/linux/hid.h 0x20000408 means HID_QUIRK_NO_INIT_REPORTS, HID_QUIRK_ALWAYS_POLL and HID_QUIRK_NOGET.

A report in the context of a HID device is described in the documentation as:

HID devices exchange data with the host computer using data
bundles called "reports".

Not at all sure what this really means but my guess is something along the lines of the keyboard no generating these reports but insteed its state is polled pretty frequently.

All in all this turned out to be a fun little excursion...