# USB keyboard non-functional after kernel upgrade to 3.2.2

## feystorm

So after upgrading to kernel 3.2.2-hardened-r1, my USB keyboard is no longer functional. The keyboard works just fine in grub, but once the kernel loads, it goes dead (I do not know about things like numlock since its wireless and has no LEDs on it, so I dont know how dead it really is other than just dead).

The USBHID driver is loaded and working (since it picks up my APC/UPS just fine). lsusb also shows the keyboard being detected.

Also looking in the kernel boot messages I see no errors indicating any issues.

It seems that there are a few other people experiencing this same issue since upgrading to kernel 3.2, however since I have no error messages, I've got diddly squat to create a kernel.org bug report with. (other reports: debian, suse, and redhat).

Anyone have any brilliant ideas as to where to start on this?

Here's kernel messages of usb initialization and the hid driver failing to pick up my keyboard, but then picking up the UPS just fine:

```
2012-02-09 22:15:38 kernel: [    2.246573] uhci_hcd 0000:00:1d.3: port 1 portsc 01a3,00

2012-02-09 22:15:38 kernel: [    2.246590] hub 3-0:1.0: state 7 ports 2 chg 0000 evt 0000

2012-02-09 22:15:38 kernel: [    2.246607] hub 5-0:1.0: port 1: status 0301 change 0001

2012-02-09 22:15:38 kernel: [    2.247069] hub 3-0:1.0: state 7 ports 2 chg 0000 evt 0002

2012-02-09 22:15:38 kernel: [    2.247081] uhci_hcd 0000:00:1d.1: port 1 portsc 0093,00

2012-02-09 22:15:38 kernel: [    2.247092] hub 3-0:1.0: port 1, status 0101, change 0001, 12 Mb/s

2012-02-09 22:15:38 kernel: [    2.353042] hub 3-0:1.0: debounce: port 1: total 100ms stable 100ms status 0x101

2012-02-09 22:15:38 kernel: [    2.455038] usb 3-1: new full-speed USB device number 2 using uhci_hcd

2012-02-09 22:15:38 kernel: [    2.575060] usb 3-1: ep0 maxpacket = 8

2012-02-09 22:15:38 kernel: [    2.608208] usb 3-1: skipped 1 descriptor after interface

2012-02-09 22:15:38 kernel: [    2.608221] usb 3-1: skipped 1 descriptor after interface

2012-02-09 22:15:38 kernel: [    2.608229] usb 3-1: skipped 1 descriptor after interface

2012-02-09 22:15:38 kernel: [    2.613142] usb 3-1: default language 0x0409

2012-02-09 22:15:38 kernel: [    2.628119] usb 3-1: udev 2, busnum 3, minor = 257

2012-02-09 22:15:38 kernel: [    2.628126] usb 3-1: New USB device found, idVendor=046d, idProduct=c52b

2012-02-09 22:15:38 kernel: [    2.628132] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0

2012-02-09 22:15:38 kernel: [    2.628137] usb 3-1: Product: USB Receiver

2012-02-09 22:15:38 kernel: [    2.628141] usb 3-1: Manufacturer: Logitech

2012-02-09 22:15:38 kernel: [    2.628440] usb 3-1: usb_probe_device

2012-02-09 22:15:38 kernel: [    2.628448] usb 3-1: configuration #1 chosen from 1 choice

2012-02-09 22:15:38 kernel: [    2.634121] usb 3-1: adding 3-1:1.0 (config #1, interface 0)

2012-02-09 22:15:38 kernel: [    2.634281] usbhid 3-1:1.0: usb_probe_interface

2012-02-09 22:15:38 kernel: [    2.634287] usbhid 3-1:1.0: usb_probe_interface - got id

2012-02-09 22:15:38 kernel: [    2.634458] usb 3-1: adding 3-1:1.1 (config #1, interface 1)

2012-02-09 22:15:38 kernel: [    2.634601] usbhid 3-1:1.1: usb_probe_interface

2012-02-09 22:15:38 kernel: [    2.634606] usbhid 3-1:1.1: usb_probe_interface - got id

2012-02-09 22:15:38 kernel: [    2.634777] usb 3-1: adding 3-1:1.2 (config #1, interface 2)

2012-02-09 22:15:38 kernel: [    2.634922] usbhid 3-1:1.2: usb_probe_interface

2012-02-09 22:15:38 kernel: [    2.634927] usbhid 3-1:1.2: usb_probe_interface - got id

2012-02-09 22:15:38 kernel: [    2.635126] hub 5-0:1.0: state 7 ports 2 chg 0002 evt 0000

2012-02-09 22:15:38 kernel: [    2.635142] hub 5-0:1.0: port 1, status 0301, change 0000, 1.5 Mb/s

2012-02-09 22:15:38 kernel: [    2.737041] usb 5-1: new low-speed USB device number 2 using uhci_hcd

2012-02-09 22:15:38 kernel: [    2.884749] usb 5-1: skipped 1 descriptor after interface

2012-02-09 22:15:38 kernel: [    2.890760] usb 5-1: default language 0x0409

2012-02-09 22:15:38 kernel: [    2.922748] usb 5-1: udev 2, busnum 5, minor = 513

2012-02-09 22:15:38 kernel: [    2.922754] usb 5-1: New USB device found, idVendor=051d, idProduct=0002

2012-02-09 22:15:38 kernel: [    2.922760] usb 5-1: New USB device strings: Mfr=3, Product=1, SerialNumber=2

2012-02-09 22:15:38 kernel: [    2.922766] usb 5-1: Product: Back-UPS NS 600 FW:818.w1 .D USB FW:w1 

2012-02-09 22:15:38 kernel: [    2.922770] usb 5-1: Manufacturer: APC

2012-02-09 22:15:38 kernel: [    2.922774] usb 5-1: SerialNumber: 3B0947X46608  

2012-02-09 22:15:38 kernel: [    2.923149] usb 5-1: usb_probe_device

2012-02-09 22:15:38 kernel: [    2.923157] usb 5-1: configuration #1 chosen from 1 choice

2012-02-09 22:15:38 kernel: [    2.925777] usb 5-1: adding 5-1:1.0 (config #1, interface 0)

2012-02-09 22:15:38 kernel: [    2.925959] usbhid 5-1:1.0: usb_probe_interface

2012-02-09 22:15:38 kernel: [    2.925966] usbhid 5-1:1.0: usb_probe_interface - got id

2012-02-09 22:15:38 kernel: [    2.954035] usb usb2: suspend_rh (auto-stop)

2012-02-09 22:15:38 kernel: [    3.204051] usb usb4: suspend_rh (auto-stop)

2012-02-09 22:15:38 kernel: [    3.314922] usbhid 5-1:1.0: looking for a minor, starting at 96

2012-02-09 22:15:38 kernel: [    3.315328] generic-usb 0003:051D:0002.0004: hiddev0,hidraw0: USB HID v1.10 Device [APC Back-UPS NS 600 FW:818.w1 .D USB FW:w1 ] on usb-0000:00:1d.3-1/input0
```

```
# lsusb

Bus 005 Device 002: ID 051d:0002 American Power Conversion Uninterruptible Power Supply

Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 003 Device 002: ID 046d:c52b Logitech, Inc. Unifying Receiver

Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
```

----------

## Hu

What is the highest kernel version in which the keyboard works properly?

----------

## feystorm

The one I upgraded from was 3.1.5-hardened.

I went looking through the change logs and didnt see anything overtly obvious. I recall there were some usbhid changes in 3.2.0, but nothing sounded that significant.

I'm also trying to avoid going back to those versions because of that security issue with /proc/<pid>/mem. Not sure if the hardened kernels were affected or not, but just playing safe. And since this box is a server anyway, not having the keyboard isnt a major problem (as long as the machine stays working and I can ssh in).

----------

## Hu

I recall reading several posts from the PaXTeam alias asserting that hardened kernels prevented the escalation via /proc/pid/mem.  I believe this depended on a change related to mprotect/ptrace handling that is part of the hardened kernel patches.  I am unsure whether the relevant change is always enabled or if you can configure it out.

----------

## jerith

I just upgraded from linux-3.1.10-gentoo-r1 to linux-3.2.1-gentoo-r2 and I'm seeing the same thing.  This LKML thread is the only thing I could find:

http://www.gossamer-threads.com/lists/linux/kernel/1491013

----------

## feystorm

 *jerith wrote:*   

> I just upgraded from linux-3.1.10-gentoo-r1 to linux-3.2.1-gentoo-r2 and I'm seeing the same thing.  This LKML thread is the only thing I could find:
> 
> http://www.gossamer-threads.com/lists/linux/kernel/1491013

 

Hrm, looks interesting. I'll have to fetch a new kernel and see if those changes are in it (I'm am still running that box without a keyboard).

----------

## BillWho

feystorm,

This works 9 out of 10 times:

```
emerge -av $(qlist -IC x11-drivers) 
```

Good luck   :Wink: 

----------

## jerith

I'm guessing this is the solution ... testing now:

```
commit 0944e964b23baee17d40abbd314695289380c2fd

Author: Konstantin Khlebnikov <khlebnikov@openvz.org>

Date:   Mon Feb 13 14:13:03 2012 +0400

    HID: use generic driver for Logitech Unifying receivers if !CONFIG_HID_LOGITECH_DJ

    

    Before commit 534a7b8e1 ("HID: Add full support for Logitech Unifying

    receivers") Logitech Unifying receiver can work as generic device

    without special driver, after that commit these devices does not works

    without special driver.

    

    After this patch they will use generic driver if special driver is disabled.

    

    Signed-off-by: Konstantin Khlebnikov <khlebnikov@openvz.org>

    Signed-off-by: Jiri Kosina <jkosina@suse.cz>

diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig

index 0a55866..1e6b78e 100644

--- a/drivers/hid/Kconfig

+++ b/drivers/hid/Kconfig

@@ -257,7 +257,9 @@ config HID_LOGITECH_DJ

        ---help---

        Say Y if you want support for Logitech Unifying receivers and devices.

        Unifying receivers are capable of pairing up to 6 Logitech compliant

-       devices to the same receiver.

+       devices to the same receiver. Without this driver it will be handled by

+       generic USB_HID driver and all incomming events will be multiplexed

+       into a single mouse and a single keyboard device.

 

 config LOGITECH_FF

        bool "Logitech force feedback support"

diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c

index e89e4c7..549c753 100644

--- a/drivers/hid/hid-core.c

+++ b/drivers/hid/hid-core.c

@@ -1463,8 +1463,10 @@ static const struct hid_device_id hid_have_special_driver[] = {

        { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_DFGT_WHEEL) },

        { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_G25_WHEEL) },

        { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_G27_WHEEL) },

+#if IS_ENABLED(CONFIG_HID_LOGITECH_DJ)

        { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_UNIFYING_RECEIVER) },

        { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_UNIFYING_RECEIVER_2) },

+#endif

        { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_WII_WHEEL) },

        { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_RUMBLEPAD2) },

        { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_SPACETRAVELLER) },
```

----------

## feystorm

 *BillWho wrote:*   

> feystorm,
> 
> This works 9 out of 10 times:
> 
> ```
> ...

 

If I were using X, I might agree with you.

I'm not.

----------

## jerith

Yep, applying that patch on top of 3.2.1-gentoo-r2 got the keyboard working again.

----------

## feystorm

 *jerith wrote:*   

> Yep, applying that patch on top of 3.2.1-gentoo-r2 got the keyboard working again.

 

That is awesome news. I'll apply it to my kernel then.

Thanks  :Smile: 

----------

