Fix Keyboard Issues After Kernel Update on Kubuntu

kernelkeyboardkubuntu

My Kubuntu updated from kernel 5.4.0-42 to kernel 5.4.0-47 and my laptop's keyboard stops working (except brightness keys). Booting back to 5.4.0-42 solved the problem.

Keyboard also works perfectly on Windows 10 (I have dual boot).

Keyboard also works in GRUB (2.04). But it does not in kernels 5.4.0-47 and above.

Updating to Kubuntu 20.10 (beta) does not help either (kernel 5.8.0-20 same problem).

My problem is similar to this one: Keyboard on HP notebook stops working under kernel 5.4.0-45-generic

And yes, I've seen this on launchpad: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1894017

So what's the problem and why is it not fixed in whole range of kernels 5.4.0-47 – 5.8.0-20?

Best Answer

The solution was found here: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1894017

I just blacklisted intel_vbtn kernel module in /etc/modprobe.d/blacklist.conf and rebooted. Author mentioned that somehow intel_vbtn thinks my laptop is in tablet mode (WHAT?!) and disabled keyboard/touchpad.

How to blacklist

To implement this, you can either create a new file in /etc/modprobe.d with the suffix .conf or use the main blacklist.conf file. The former may be preferable, since you can then just delete the file when it is no longer required (i.e. when the bug is fixed):

sudoedit /etc/modprobe.d/blacklist-intel_vbtn.conf

Add a line to the file, optionally with a comment explaining why you are doing this

# bug in module breaks keyboard, so don't load it
blacklist intel_vbtn

Save the file, exit and reboot.

P.S. After mailing with Mr. Hans de Goede from RedHat I got following answer:

This should be fixed by this upstream commit, which landed in Linus' tree a couple of hours ago: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/platform/x86?id=8169bd3e6e193497cab781acddcff8fde5d0c416

Igor, if you do:

cat /sys/class/dmi/id/chassis_type

On your laptop, and the output is NOT "31" or "32" then this fix should work for you.

If the output actually is "31" or "32 (which I do not expect), then please let me know, because then we need a different fix.

P.P.S. On my system (Intel Celeron N2940) chassis_type returns 10

Related Question