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