Bugzilla – Bug 1175646
After bios update, some keyboard function keys not recognized.
Last modified: 2022-02-21 09:22:01 UTC
I performed a bios update on a Dell precision 7530, which resolved my issue with the bug reported here: https://bugzilla.opensuse.org/show_bug.cgi?id=1175626
However, the new bios version (1.13.1) does not map the keyboard function keys correctly. Some work (e.g., volume control, keyboard backlight) and some don't (wifi toggle, screen brightness). Is there a way to map the new keyboard configuration in the bios so it works correctly in openSUSE? The keyboard functions correctly in windows. It does not work correctly in LEAP, tumbleweed or the latest fedora release.
At first, you need to figure out which raw key code is generated from which driver. Install evtest package and run as root. You'll be asked which device to test, and usually it's PS2 keyboard. It might be something else, so choose the different one if your key doesn't respond.
Press key, and read the output. For example, when I run it and press the mute key, it shows like:
Event: time 1598287040.710651, type 4 (EV_MSC), code 4 (MSC_SCAN), value a0
Event: time 1598287040.710651, type 1 (EV_KEY), code 113 (KEY_MUTE), value 1
Event: time 1598287040.710651, -------------- SYN_REPORT ------------
This means that the mute key has the key code 0xa0.
Now, look at /usr/lib/udev/hwdb.d/60-keyboard.hwdb. This defines the special key mapping. Modify the corresponding key entry that matches with your device.
After changing, run "systemd-hwdb" to update the hwdb table once.
Thanks for the info. However, when running evtest on the keyboard, the screen brightness buttons, hibernate button, and function lock keys produce no output whatsoever. The wifi toggle does produce output, and in the 60-keyboard.hwdb file it is listed as "unknown". Upon changing it to "wlan" and running systemd-hwdb update, still results in a non-functional key. I haven't attempted to modify the others yet.
Try the test on Linux console at best. Also, did you try different event devices? It's not necessarily from PS2, but might be from other devices.
Tried those. The only events that produce any output are on the keyboard test. Also, after updating systemd-hwdb with the new file, none of the function keys work at all. Previously, volume control and keyboard backlight worked, now nothing does. The standard keys work fine, just not the "Fn" keys. The only thing I changed in the 60-keyboard.hwdb file was the info for the wlan, but somehow the update removed all the other functionality as well.
(In reply to Z B from comment #4)
> Tried those. The only events that produce any output are on the keyboard
> test. Also, after updating systemd-hwdb with the new file, none of the
> function keys work at all. Previously, volume control and keyboard
> backlight worked, now nothing does. The standard keys work fine, just not
> the "Fn" keys. The only thing I changed in the 60-keyboard.hwdb file was
> the info for the wlan, but somehow the update removed all the other
> functionality as well.
Then it's possible that the keys are now handled in WMI or such layer, and maybe not supported in the Linux kernel yet. Did you try all input events, not only PS, right?
You should try the same with the recent upstream kernel. Just install the 5.8.x kernel from OBS Kernel:stable repo onto your current system and retest with it.
If you verify the same problem with the latest kernel, this should be handled by the upstream.
I tried again with the 5.8.3 kernel, same results. I tried all the events, including the WMI input. No response from about half the Fn keys. I guess I'll have to create an account on kernel.org.
Submitting a bug report on kernel.org doesn't seem to do much good. Any suggestions on how to get someone's attention who can fix the problem?
Unfortunately, not really.
Could you share a link to bugzilla.kernel.org report, please? There is also much newer kernel now in OBS Kernel:stable project, so a test with it might be worth trying.
*** Bug 1182088 has been marked as a duplicate of this bug. ***
kernel.org bug report:
However, I ended up downgrading the BIOS, which fixed the problem. Unfortunately I am unable to test the newest kernel against this bug, and I don't think I'll try updating the BIOS again. I guess this can be closed.
Ok, let me close then. Thanks.