Ubuntu – Can’t control screen brightness – ACPI Error – Lenovo Legion Y540

acpibacklightbiosbrightnesslenovo

I've observed the same behavior on 4 different Linux distributions (mint, manjaro, debian, ubuntu), they show ACPI errors on boot (link of a picture: https://imgur.com/a/7rLTsyr edit: this seems to be an unrelated and harmless bug reported and marked as won't fix on https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1864895 ) and then the systems works fine, but I can't control the screen brightness that is stuck at 100%. This is a huge issue since I work at night and the 300 nits of the screen are burning my eyes, making the laptop unusable while also draining the battery.
Looking online, this is a common issue:

Brightness control keys don't work on Lenovo Y540 but xrandr does
https://www.reddit.com/r/Ubuntu/comments/cxygkp/brightness_not_working_on_ubuntu18_nvidia_rtx/
Brightness adjustment not working on Lenovo Y540
https://www.reddit.com/r/pop_os/comments/ckkqod/cannot_change_screen_brightness_lenovo_legion_y540/

but everyone seem to have "fixed" their issue the same way: by changing the bios settings from discrete graphics to switchable graphics. Sadly, my processor is the i7-9750HF variant, which does not include an integrated GPU (that's the meaning of the F part). This means that I only have my RTX 2060 discrete GPU and I'm not able to chose switchable graphics since there is nothing else to switch into.

Here is a list of some of the things I tried and didn't work:

  • linux kernels tested: 5.4, 5.3, 5.0, 4.15

  • Nvidia drivers tested: nouveau, 430, 435, 440

  • BIOS version: BHCN36WW, BHCN35WW

  • Tried updating /etc/default/grub acpi_backlight=<all different options>, no luck.

  • xbacklight does nothing.

  • ls /sys/class/backlight shows only acpi_video0

  • sudo tee /sys/class/backlight/acpi_video0/brightness <<< 5 has no effect

  • the only thing that works is xrandr --output DP-2 --brightness 1 but that is not a solution since the backlight brightness isn't actually being changed, it just ramps the gamma. This is a software workaround that doesn't actually control the hardware. It also wouldn't help with battery life.

I have tried every solution that I could find or think, but nothing worked. It sounds like something that could be fixed with a BIOS update, since it seems BIOS and ACPI related, but I don't know when or if ever a BIOS update will ever come, is there something on the OS side that could fix this issue?

Please let me know if there is any extra information I should provide and thank you in advance for your help and patience!

system info dump:

  • CPU: i7-9750HF
  • GPU: Nvidia RTX 2060
  • Screen: 1920×1080, 300 nits, 144 Hz
  • Laptop: Lenovo Legion Y540 – 15IRH
  • Model name: 81SX
  • BIOS version: BHCN36WW

PS:
Switching secure boot back on makes the brightness control issue go away. But sadly other problems show up, apparently because it loads the nouveau driver and doesn't tell you that it did (the gui will say you are using the proprietary drive but inxi -Gx will tell you the truth that you are using the nouveau one). I was going to try to blacklist it but turns out it was already blacklisted and loaded it anyway.

Best Answer

I also have same laptop Lenovo Legion Y540. This is now fixed in new update but you have to switch the BIOS option for graphics from Discrete Graphics to Switchable Graphics.

Also you have to update grub configuration (i.e. edit the file /etc/default/grub and then run sudo update-grub) as follows:

GRUB_CMDLINE_LINUX_DEFAULT="acpi_osi=linux acpi_backlight=intel"

Confirm that the acpi_backlight=intel it should not be set to vendor. Setting it to vendor stops the working of function-keys.