Lenovo Legion 5 Gen 6 AMD with nvidia backlight issue under Manjaro

The Legion 5 Gen 6 AMD Ryzen with NVIDIA graphics (15ACH6H, model 82JU00APUS) is what I have on my hand. The Linux system I use is Manjaro due to its simplicity. I’ve experienced a very common backlight issue, Fn key won’t adjust the backlight at all, it’s always on 100% brightness. I use discrete / dedicated nvidia graphics all the time, so this solution may not be suitable for everyone.

Here are the steps I tried with my setup, all commands are executed as root:

1 Install manjaro with proprietary driver (nvidia-drm), not nouveau open source driver.

2 Generate xorg.conf with nvidia-xconfig

3 Write the following content to /etc/X11/xorg.conf.d/20-nvidia-backlight.conf

Section "OutputClass"
    Identifier "nvidia"
    MatchDriver "nvidia-drm"
    Driver "nvidia"
    Option "RegistryDwords" "EnableBrightnessControl=1"
EndSection

4 Add these kernel parameters to /etc/default/grub:

amdgpu.backlight=0 acpi_backlight=vendor

And run update-grub

5 Reboot into the newly configured kernel.

6 Test if we can adjust the backlight via setting system values:

echo "50" > /sys/class/backlight/nvidia_0/brightness

If it works, we are able to use acpi events to tune the brightness.

7 Enable and start the acpid service.

systemctl enable acpid

then start

systemctl start acpid

and then monitor its logs

journalctl -u acpid -f

8 Press Fn+F5 or Fn+F6 key to toggle brightness up/down, we should see the acpid complain about ACPI group/action undefined: video/brightnessup or brightnessdown. If we do not see this error, then the next thing won’t work.

9 Assuming we can see the undefined error, we can write some scripts to override the brightness value.

cd /etc/acpi
mkdir handlers

cd handlers

vim backlight and paste the following content to it

#!/bin/sh
bl_dev=/sys/class/backlight/nvidia_0
step=6

case $1 in
  -) echo $(($(< $bl_dev/brightness) - $step)) >$bl_dev/brightness;;
  +) echo $(($(< $bl_dev/brightness) + $step)) >$bl_dev/brightness;;
esac

Let’s continue.

chmod +x backlight

cd ../events

vim bl_d and copy the following script to it

 
event=video/brightnessdown
action=/etc/acpi/handlers/backlight -

vim bl_u and copy the following script to it

event=video/brightnessup
action=/etc/acpi/handlers/backlight +

10 Restart acpid service

systemctl restart acpid

11 Use your Fn+F5 or Fn+F6 to adjust brightness, note the value presented on your screen does not reflect the real brightness.

ACPI example usages and docs: https://wiki.archlinux.org/title/Acpid#Enabling_backlight_control

Leave a comment

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.