Mute button broken after updates

There’s another odd little issue that’s developed on my HP Probook. The F8 button doubles as a microphone mute button. It has a little light that comes on when the mic is muted.

It’s been working flawlessly until I installed a bunch of updates the other day. Now pressing F8 to mute/unmute has no effect.

The light still goes on/off if I mute/unmute in Fedora’s settings, and F8 still works as F8. It just doesn’t mute anymore. Any ideas why?

Usually there is a “fn” (function) key that you hold to toggle whether the function keys work as normal function keys (F1 - F12) or as “media” keys (play/pause, mute, etc.). Which is the default behavior (what happens if you don’t hold the fn key down) is often configurable in the BIOS/firmware.

I think I found the setting you mean, on my bios it’s called “launch hot keys without fn key press”. When it’s disabled it’s like fn lock is on, when it’s enabled the F-keys default to being media keys as usual, and when it’s set to auto they default to media keys as usual.

On all of these options I cannot use F8 to mute. The other media keys always work as expected and F8 still works as a function key. It just doesn’t do anything when it’s supposed to mute/unmute. Screenkey shows that the F8 key isn’t registered at all when it’s acting as a media button, it only registers when it’s acting as a function button.

I assume you are using the standard GNOME/Workstation edition of Fedora Linux.

Do you see the same output as below when you run the same gsettings ... comand?

$ gsettings list-recursively | grep mute                                                                       
org.gnome.settings-daemon.plugins.media-keys mic-mute ['']
org.gnome.settings-daemon.plugins.media-keys mic-mute-static ['XF86AudioMicMute']
org.gnome.settings-daemon.plugins.media-keys volume-mute ['']
org.gnome.settings-daemon.plugins.media-keys volume-mute-quiet ['']
org.gnome.settings-daemon.plugins.media-keys volume-mute-quiet-static ['<Alt>XF86AudioMute']
org.gnome.settings-daemon.plugins.media-keys volume-mute-static ['XF86AudioMute']

Just to verify that the OS is seeing the keypress and that it is not a problem with the keyboard, try running sudo libinput debug-events. You should see output similar to the following when you press the mute key:

 event4   KEYBOARD_KEY                +0.000s	KEY_MUTE (113) pressed
 event4   KEYBOARD_KEY                +0.180s	KEY_MUTE (113) released

(Use Ctrl-c to stop the debug monitor.)


Have you tried booting your system with one of the older kernels?

Yes, gnome/workstation. The gsettings command you showed gives me the same output, with the exception of the first one (mic-mute) that lists the custom shortcut I added via settings as a workaround (ctrl + f8).

Libinput’s help says it puts the output of debug_events in ‘stdout’, but when I put in ‘libinput stdout’ it says ‘libinput: stdout is not installed’. What am I doing wrong?

I haven’t tried going back to an older kernel. Would I do that by booting to the grub menu and selecting one of the versions it shows you there?

Thanks for taking the time to help!

Yes. Try that first and if it still doesn’t work, then go back to trying to verify that the keypresses are being registered.


As for the libinput problem, I’m not sure what is happening there, but wev should work as an alternative. Use sudo dnf install wev to install it (it is a small program [~35KB]). You can then run it just by entering wev (it doesn’t need sudo). When you press the mute button while wev is running you should see the following:

[14:     wl_keyboard] key: serial: 7601; time: 22398356; key: 121; state: 0 (released)
                      sym: XF86AudioMute (269025042), utf8: ''

At least for testing, I’d try removing/resetting that custom shortcut. I’m not sure that the Ctrl modifier actually works with the function keys. If not, then Ctrl-F8 would have the same keycode as just F8 and that might be what is “masking” the normal mute function.

I unbound the mute shortcut and tried both of the older kernels I still have installed (current is 6.13.6, I tried 6.12.13 & 6.12.9), but no joy.

libinput has decided to begin working now! Here’s (some of) the output:

 event4   KEYBOARD_KEY                +11.540s	KEY_MICMUTE (248) released
 event4   KEYBOARD_KEY                +12.634s	KEY_MICMUTE (248) pressed
 event4   KEYBOARD_KEY                +12.742s	KEY_MICMUTE (248) released
 event4   KEYBOARD_KEY                +18.660s	*** (-1) pressed
^[[19~ event4   KEYBOARD_KEY                +18.742s	*** (-1) released
 event4   KEYBOARD_KEY                +27.317s	KEY_MICMUTE (248) pressed
 event4   KEYBOARD_KEY                +27.427s	KEY_MICMUTE (248) released

(The “***(-1)” was how it registered fn + F8, the rest of it is just F8 on its own)

Hmm, -1 is the sort of thing that can show up in a programming error (it is a signed int with all the bits set). But if that is showing up with libinput, I think the bug must be pretty low-level (either in libinput itself or in your system’s firmware). Was libinput updated recently? You might try downgrading it just to see if that is where the problem is coming from. Try running sudo dnf downgrade libinput and rebooting your PC. You can always re-upgrade it if that isn’t where the problem is.

Another thing you might try is updating your system’s firmware. Sometimes things can get a little out-of-sync between the firmware and the Linux drivers.

Maybe it could be a defect in the keyboard. Is this a built-in keyboard or is it something you could easily swap out and test another? Trying a Live image might be another option to try to narrow down where the problem is.

P.S. I’m going to sign off for a while. Good luck. :slightly_smiling_face:

I had to go too, it was getting late.

I tried booting from the Fedora 40 Live USB I used to install Fedora on this laptop, and…It worked! The mute button behaved as expected.
After I got back to my normal install I tried downgrading libinput , but nothing changed. I tried the debug thing again and it showed the same results as before, so I’ve updated it again.

When you say I could try updating my firmware, do you mean getting drivers from the HP website? Or is there something I can do within Linux beyond the updates that it finds automatically? HP only offers Windows drivers on their site.

Yes.

Sometimes the BIOS updates are available as efi executables (or more often they are efi executables embedded in self-extracting exe archives). Sometimes you can extract the efi executable that updates the firmware from the exe or iso with something like 7-zip, copy the efi to your EFI System Partition, and manually run it either from your current BIOS menu or by booting something like shellx64.efi (provided as Shell.efi in the edk2-ovmf package; copy it to $BOOT/shellx64.efi) and running it from the EFI shell command line. But all of that is quite a bit of a hassle for something that may not pay off.

This is getting a bit out of my depth, but if you want to dig into it, I think this is the file that is responsible for many of the keyboard key mappings.

You might try digging through the change history of that file and see if there is anything that might have affected your keyboard.


For example, something like this might have broken your keyboard’s mute key if you happen to have a MICRO-STAR keyboard:

...

While at it, use "unknown" instead of "reserved" to mute keys, to avoid
the "atkbd serio0: Unknown key pressed" flood in dmesg.

...

evdev:atkbd:dmi:bvn*:bvr*:bd*:svnMICRO-STAR*:pnU90/U100:*
- KEYBOARD_KEY_e4=reserved
+ KEYBOARD_KEY_e4=unknown
+ KEYBOARD_KEY_e2=unknown
+ KEYBOARD_KEY_f6=unknown

But that commit is probably too old to be responsible for something that recently changed on your system.

1 Like

Alright, thanks for your help. I guess I’ll stick with using a custom shortcut for now, haha!

Same issue here on Debian 12 KDE Plasma ThinkPad X1 Carbon 2017.

I ma facing the same issue but only on Gnome Xorg, I guess since gnome is not installed by default anymore one of the deps that make these shortcuts work is not working as expected.
Note: all other button (+/- sound/brightness) work as expected

I thought you might be interested to know that I installed Fedora 42 just now, and my mute button is back to working correctly!

1 Like

I thought you might be interested to know that I installed Fedora 42 just now, and my mute button is back to working correctly!

It is the opposite for me. Since fedora 42 upgrade , the Fn+F4 function key to mute the microphone does not work anymore.

trying the gsettings command shows exactly what @glb has.

however, with the sudo libinput debug-events command, nothing happens when I hit fn+F4 :thinking:

Hitting only F4 shows this:

-event3   KEYBOARD_KEY                 +0.000s	*** (-1) pressed
^[OS event3   KEYBOARD_KEY                 +0.095s	*** (-1) released

Interestingly, nothing is logged either when pressing fn+F5 (keyboard backlight), but keyboard backlight changes.
The other fn+Fx keys work as expected (sound/brigthness increase/decrease, muting sound…)
gnome+dell latitude 5320