I forgot to mention that brightness hotkeys show the same behaviour: if I press fn+right arrow, the brightness "reported" by wsconsctl changes but the "real" brightness of the display doesn't change.
The hotkey to disable the touchpad, the hotkey to turn off the screen, the hotkeys to mute/unmute and change the volume work (the hotkey for suspend does nothing, however). This led me to investigate specifically acpivout, that according to man pages is responsible for changing the brightness of the display. Since acpivout and acpivideo print some debug info with ACPIVIDEO_DEBUG, I build a kernel with this option enabled. Here the relevant portions of dmesg: $ dmesg | grep acpi acpi0 at bios0: rev 2 acpi0: sleep states S0 S3 S4 S5 acpi0: tables DSDT FACP UEFI FPDT MSDM ASF! HPET APIC MCFG SSDT BOOT ASPT DBGP SSDT SSDT SSDT SSDT acpi0: wakeup devices P0P1(S4) EHC1(S3) XHC_(S3) HDEF(S4) TPD4(S4) TPD7(S0) TPD8(S0) PXSX(S4) RP03(S4) PEGP(S4) PEGA(S4) PXSX(S4) RP07(S4) PXSX(S4) RP08(S4) PEG0(S4) [...] acpitimer0 at acpi0: 3579545 Hz, 24 bits acpihpet0 at acpi0: 14318179 Hz acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat acpimcfg0 at acpi0 addr 0xe0000000, bus 0-255 acpiprt0 at acpi0: bus 0 (PCI0) acpiprt1 at acpi0: bus -1 (P0P1) acpiprt2 at acpi0: bus -1 (RP01) acpiprt3 at acpi0: bus -1 (RP02) acpiprt4 at acpi0: bus 1 (RP03) acpiprt5 at acpi0: bus 2 (RP04) acpiprt6 at acpi0: bus 3 (RP05) acpiprt7 at acpi0: bus -1 (RP06) acpiprt8 at acpi0: bus -1 (RP07) acpiprt9 at acpi0: bus -1 (RP08) acpiprt10 at acpi0: bus -1 (PEG0) acpiprt11 at acpi0: bus -1 (PEG1) acpiprt12 at acpi0: bus -1 (PEG2) acpiec0 at acpi0 acpicpu0 at acpi0: C1, PSS acpicpu1 at acpi0: C1, PSS acpicpu2 at acpi0: C1, PSS acpicpu3 at acpi0: C1, PSS acpibat0 at acpi0: BAT1 model "xxxxxxxxxxxxxxxxxxxx" serial xx type Lion oem "SANYO " acpiac0 at acpi0: AC unit online acpibtn0 at acpi0: LID0 acpibtn1 at acpi0: PWRB acpibtn2 at acpi0: SLPB acpivideo0 at acpi0: GFX0 acpivideo0: set policy to 0 Inside acpi_foundvout() acpivout0 at acpivideo0: DD1F --- wsconsctl display.brightness: acpivout0: BQC = 90 --- wsconsctl display.brightness=10%: acpivout0: BQC = 90 acpivout0: BCM = 10 acpivout0: BQC = 10 --- wsconsctl display.brightness: acpivout0: BQC = 10 --- fn + right arrow: acpivout0: BQC = 20 acpivout0: BCM = 30 --- wsconsctl display.brightness: acpivout0: BQC = 30 $ 1) In "acpivideo0: set policy to 0", is 0 the expected result? 2) I see that acpivout is calling acpi method BCM to set the display brightness, but it has no effect on the display. On the internet I found this article: http://moorray.wordpress.com/2013/04/06/acer-e1-and-v3-acpi/ It says that on Acer E1 and V3 laptops the BCM method passes the brightness value to the Embedded Controller, then the EC is supposed to modify the brightness of the display but it does nothing instead. It suggests that maybe the EC has to be enabled or its operation mode has to be set up, possibly using a WMI method. It also says that the AINT method sets the brightness bypassing the EC and that, if the OS presents itself as Linux, the BIOS itself calls AINT when pressing the brightness hotkeys. Two things support the observations made by the author in the article above: A) In my first message I attached the output of acpidump. In the DSDT I found this: Method (_BCM, 1, NotSerialized) { Divide (Arg0, 0x0A, Local0, Local1) Store (Local1, \_SB.PCI0.LPCB.EC0.BRTS) } It looks like BCM writes the brightness value to an EC register. B) From acpidump I could not understand what happens when pressing the brightness hotkey if the OS presents itself as Linux. Out of curiosity I booted a kernel built with this patch: --- /sys/dev/acpi/dsdt.c Thu Dec 12 21:56:01 2013 +++ dsdt.c Tue Jan 7 16:19:16 2014 @@ -1500,16 +1500,7 @@ * We return True for Windows to fake out nasty bad AML */ char *aml_valid_osi[] = { - "Windows 2000", - "Windows 2001", - "Windows 2001.1", - "Windows 2001 SP0", - "Windows 2001 SP1", - "Windows 2001 SP2", - "Windows 2001 SP3", - "Windows 2001 SP4", - "Windows 2006", - "Windows 2009", + "Linux", NULL }; The brightness hotkeys worked, wsconsctl still didn't work. Assuming that the author is right, maybe acpiec can be modified in order to make the EC set the brightness to the value passed to it by BCM or maybe acpivout can be modified in order to set the brightness using AINT instead of BCM. 2014/1/3 mark rowland <[email protected]>: > I found a bug in brightness control. According to wsconsctl, display > brightness is initially set to 90%: > > # wsconsctl | grep brightness > wsconsctl: Use explicit arg to view keyboard.map. > display.brightness=90.00% > # > > If I lower the brightness, wsconsctl says it has lowered it: > > # wsconsctl display.brightness=10 > display.brightness -> 10.00% > # wsconsctl | grep brightness > wsconsctl: Use explicit arg to view keyboard.map. > display.brightness=10.00% > # > > But even if wsconsctl says that now brightness has been set to 10%, > the brightness of my display has not changed. > > Same thing if try to change the brightness in Xorg with xbacklight: > > $ xrandr --prop > Screen 0: minimum 320 x 200, current 1366 x 768, maximum 8192 x 8192 > eDP1 connected 1366x768+0+0 (normal left inverted right x axis y axis) > 344mm x 194mm > [...] > BACKLIGHT: 90 > range: (0, 100) > Backlight: 90 > range: (0, 100) > scaling mode: Full aspect > supported: None, Full, Center, Full aspect > Broadcast RGB: Full > supported: Full, Limited 16:235 > audio: auto > supported: force-dvi, off, auto, on > 1366x768 60.0*+ > 1024x768 60.0 > 800x600 60.3 56.2 > 640x480 59.9 > > [...] > $ xbacklight -set 10% > $ xrandr --prop > Screen 0: minimum 320 x 200, current 1366 x 768, maximum 8192 x 8192 > eDP1 connected 1366x768+0+0 (normal left inverted right x axis y axis) > 344mm x 194mm > [...] > BACKLIGHT: 10 > range: (0, 100) > Backlight: 10 > range: (0, 100) > scaling mode: Full aspect > supported: None, Full, Center, Full aspect > Broadcast RGB: Full > supported: Full, Limited 16:235 > audio: auto > supported: force-dvi, off, auto, on > 1366x768 60.0*+ > 1024x768 60.0 > 800x600 60.3 56.2 > 640x480 59.9 > > [...] > $ > > According to xrandr brightness has been changed, but this is wrong. > The brightness of my display did not change. > > In case the issue is related to acpi, here I uploaded a dmesg from a > -current kernel built with "ACPI_DEBUG": > > https://drive.google.com/file/d/0B5nVEarf-0aCeUVvQWdiUjRJYW8/edit?usp=sharing
