How to make the mute button on X200(s/t), T400(s), T500, and W500 work properly
The mute button on GM45 ThinkPads doesn't work properly under GNU (and probably other operating systems that aren't Microshaft Winglows) The EC (Embedded Controller) doesn't map the button to the actual “mute” button like on external keyboards, but rather makes it mute the hardware itself, regardless of which operating system you run. To use it for your software mixer's mute function, you need to remap it:
make a file called
/etc/systemd/system/mutekey.service and paste this into it:
make another file called
/usr/local/bin/mutekey.sh and paste this into it:
ectool -w 0x03 -z 0x40
and don't forget to make it executable!
chmod +x /usr/local/bin/mutekey.sh
now enable and start the service
systemctl enable mutekey
systemctl start mutekey
the suspend.target part is required because the EC resets the value the systemd service set on suspending for some reason, so the ectool command has to be executed again after wakeup.*
For proprietary stock BIOSes (not recommended):
acpi_osi=Linux as kernel parameter.
in other words:
edit /etc/default/grub, and add
GRUB_CMDLINE_LINUX_DEFAULT line somewhere before or in between the rest of your kernel paremeters. now run
grub-mkconfig -o /boot/grub/grub.cfg and reboot.
*At least on X200s models it's like this, I'm not sure about others, please DO let me know if you have any GM45 ThinkPad and are willing to test it out.
If you use another init system than soystemd, you're on your own for making re-execution on wakeup work, but let me know how to do it if you figure it out so i can add it here.