Screen brightness stuck at 100% on Lenovo Legion 7i

Hello,

I got the Lenovo Legion 7i. I installed a few distribution on it and I’m currently testing Manjaro. Most things work great, except the screen brightness. I can’t control it and it’s stuck at 100%.

Arch wiki says it’s working out of the box.
It there something special on Manjaro that might have broken the brightness control?

Did you try other kernels? Such as Kernel 5.7 or 5.8?

Hi!
You can try kernel 5.8 but even so I’m not sure it will fix it. I have the same problem with an asus with r5 3550h and even with kernel 5.8 can’t make it work.
So I made a scritp and add it to startup so every time you boot up your system it’ll launch the script automatically and change the brightness as you like.

    sleep 5 
    xrandr --output <outputname> --brightness 0.8

Change to your video output name, some like eDP1, you can check with

 xrandr 

And 0.8 to valor you like, it goes from 0 to 1
Save the file like brightness.sh give it exec permissions in your /home and add it to you settings/start up section

Yes, I tried both of them. Sames results, when pressing the keys, the brightness ui/indicator appears, but the backlight doesn’t change.

I’m using Redshift for adjusting the color temperature and it can also change the brightness.
It’s only a software solution, so for battery life it’s not great.

I can confirm this still happening, running Manjaro i3 on a Lenovo X1 Carbon. Pressing the brightness keys shows the Power Manager applet (xfce4-power-manager?) at Brightness 100 percent, but it cannot be changed.

Changing the brightness with xrandr works, but I’d really prefer to have the brightness keys working as intended. The other function keys, such as the volume keys, work fine.

EDIT: Nevermind, I’m dumb. I solved it by simply opening xfce4-power-manager-settings and turning “Handle display brightness keys” on (it was off by default)

1 Like

This seems to be a problem coming from upstream arch and not from the kernel itself because other distros have backlight control working out of the boxe. I don’t know if it’s going to be fixed in the near future but the workaround for now is to change it from terminal using xrander as explained in the wiki, but that’s just a change through software so energy consumption is still considerable : https:// wiki. archlinux .org /title/Lenovo_Legion_7i#Backlight

Here are my findings that I mentioned in the archlinux forum:

So after some tinkering, I found that for this model, there are two backlight interfaces located in /sys/class/backlight/. One for intel intel_backlight and the other for nvidia nvidia_0. If you turn on the machine in hybrid mode, you will find both of these. For some reason, changing brightness using fn+F5/fn+F6 or from desktop environment affects the values in the nvidia_0 interface (/sys/class/backlight/nvidia_0/actual_brightness so the changes are not visible since technically it is intel gpu that outputs at the end in hybrid mode. So changing manually the values in /sys/class/backlight/intel_backlight/brightness actually changed the brightness level, I think that’s how xrandr and oled-linux probably work. I have also checked on my other system running Pop OS and I can confirm that the system applies the changes to the intel_backlight interface and not to the nvidia_0 one when in hybrid mode.
So as a fix, I suggest that devs change the target of the backlight change to intel_backlight instead of nvidia’s from the system, then maybe the desktop environment and keyboard mapping will work as intended. I don’t know how to do it honestly but I can see that it is not an issue of the kernel.
Also as another confirmation, when booting in dedicated gpu mode, only the nvidia_0 is present in /sys/class/backlight/ and backlight control works just fine from DE and keyboard keys.

The conclusion was that the backlight control is handled by the desktop environment. KDE is rolling a fix in the next release to affect bright changes to the correct interface