[ltp] x41 volume, mute buttons, and acpi

Henrique de Moraes Holschuh linux-thinkpad@linux-thinkpad.org
Wed, 27 Jun 2007 20:55:44 -0300


On Wed, 27 Jun 2007, Paul Fox wrote:
> marius wrote:
>  > On Wed, Jun 27, 2007 at 03:28:27PM -0400, Paul Fox wrote:
>  > > i don't do audio or video very often, so it was only recently
>  > > that i realized that the special volume and mute keys (they're
>  > > separate physical keys) aren't "hooked up" to anything via acpi.
>  > 
>  > That appears to be true.  Strangely, I notice that Fn-Home (increase
>  > brightness) reports an event to acpid (ibm/hotkey HKEY 00000080
>  > 00001010), but Fn-End (decrease brightness) doesn't.
>  > 
>  > > they do have a very real effect on output volume, but no effect
>  > > on the alsa mixer levels.
>  > 
>  > They have an effect on alsa mixer levels on my laptop.  Actually, they
>  > have a double effect:
> 
> sigh.  remind me never to buy another thinkpad.  they definitely don't
> go to acpid on my X41, and there's no setting in the bios that lets
> one control that behavior.  what idiocy.  :-/

Yes, there is.  And yes, you can partially control it.  And yes, you need a
kernel patch to do it, because I only learned about it about a month ago, so
the thinkpad-acpi code that is needed is still being revised.

That said:

1. There is no reason to do it. These keys *already* do their function, they
control the built-in hardware mixer that drives the speakers and
headphone-out, which has nothing to do with the AC97 mixer you see in gnome.

2. If you control the AC97 mixer with these keys, you are screwing up your
built-in sound (it will work OK for the dock sound output though, as that
seems to be done *before* the hardware mixer for the built-in speakers and
headphone out, at least on a T43... and therefore, the keys don't control
any hardware that modifies the output levels on the dock sound output).

3. The proper way to use these keys is to *ignore* them in the OS, GNOME,
KDE, whatever.  They just work.  If you want to have them do some OSD
thingie, you need something that knows they must not react to these keys by
messing up with any mixers.

4. You cannot tell the BIOS not to react to these keys. Either it, or the
embedded controller will always process them.  You can mess with the ACPI
DSDT to stop doing something when the keys are pressed, but this will likely
only make the thinkpad forget the previous sound volume when you reboot it.

>  >   * they send keyboard events (I think thinkpad-keys from the
>  >     hotkey-setup package is responsible for this), which are mapped to

Exactly.

>  >     GNOME's global key bindings that change the volume (of the ALSA
>  >     'master' mixer).

Which is a bug.  These keys should have never been mapped to
VOLUME_UP/DOWN at all, but whomever did it didn't have a thinkpad, or
didn't know what he was doing.

> so you get two volume changes stacked on top of one another?  one from
> the bios, and one from keybindings?

Yes.  Because nobody should be mapping these keys to something that change
volume in any mixers.

-- 
  "One disk to rule them all, One disk to find them. One disk to bring
  them all and in the darkness grind them. In the Land of Redmond
  where the shadows lie." -- The Silicon Valley Tarot
  Henrique Holschuh