Subject: bug#20433: Keyboard not working on laptop with guixSD

From: Ricardo Wurmus <[email-masked]>
Date: Fri, 15 Jan 2016 21:50:31 +0100

While comparing the output of dmesg I found it interesting that on
GuixSD the keyboard is identified as “USB HIDBP”:

    input: USB HIDBP Keyboard 05ac:820a as /devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.1/1-3.1:1.0/input/input5

whereas it is just a regular HID device on Trisquel:

    input: HID 05ac:820a as /devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.1/1-3.1:1.0/input/input4
    hid-generic 0003:05AC:820A.0003: input,hidraw0: USB HID v1.11 Keyboard [HID 05ac:820a] on usb-0000:00:14.0-3.1/input0

Also note, that on Trisquel this is followed by a “hid-generic” line,
indicating that the generic HID driver is dealing with the keyboard.
There is no such line in the GuixSD log.

As I had no idea what HIDBP means I searched around and found this:

    https://www.kernel.org/doc/menuconfig/drivers-hid-usbhid-Kconfig.html

    USB HIDBP Keyboard (simple Boot) support

    Say Y here only if you are absolutely sure that you don't want
    to use the generic HID driver for your USB keyboard and prefer
    to use the keyboard in its limited Boot Protocol mode instead.

    This is almost certainly not what you want.  This is mostly
    useful for embedded applications or simple keyboards.

    To compile this driver as a module, choose M here: the
    module will be called usbkbd.

    If even remotely unsure, say N.

And:

    USB Human Interface Device (full HID) support

    Say Y here if you want full HID support to connect USB keyboards,
    mice, joysticks, graphic tablets, or any other HID based devices
    to your computer via USB, as well as Uninterruptible Power Supply
    (UPS) and monitor control devices.

    You can't use this driver and the HIDBP (Boot Protocol) keyboard
    and mouse drivers at the same time. More information is available:
    <file:Documentation/input/input.txt>.

    If unsure, say Y.

    To compile this driver as a module, choose M here: the
    module will be called usbhid.

So, using HIDBP is probably wrong and might very well be the cause.
Looking at the module names again I searched the logs for “usbkbd” and,
yes, the GuixSD logs contain this line:

    usbcore: registered new interface driver usbkbd

This line is absent in the Trisquel dmesg log.

I’d suggest blacklisting the “usbkbd” kernel module by adding this to
the kernel boot parameters:

    modprobe.blacklist=usbkbd

I’m just guessing here, but this seems the most probably cause to me.

~~ Ricardo