Laptop backlight control regression with 465.24.02

Same for me, brightness buttons work with neither 460 nor 470 nor 495.

Graphic: GA106M [GeForce RTX 3060 Mobile / Max-Q]
Operating System: Pop!_OS 21.10
Kernel: Linux 5.15.5-76051505-generic
Hardware Model: Lenovo Legion 5 Pro 16ACH6H

Can confirm the same issue here, still present. The last driver that worked for me is 460xx. Can somebody fix this shit already? This is beginning to get annoying now!

Make: Clevo/Eurocom
Model: P775TM1-G/Sky X7C
OS: Ubuntu 21.10 x86_64
Kernel: 5.13.0-22-generic
CPU: Intel i7-9700KF (8) @ 4.900GHz
GPU: NVIDIA GeForce RTX 2080 Mobile (150 Watts)

Last working driver version = 460.106.00

It’s beyond annoying. Even 495.46 still does not work.

It’s not just the brightness buttons/FN keys that don’t work. It’s everything.

Changing /sys/class/backlight/nvidia_0/brightness still does not have any effect.

Ironically, changing the brightness works BEFORE loading any nVidia module, but that’s through the more generic ACPI interface, since the only node available is /sys/class/backlight/acpi_video0 at that time. Once the nVidia driver takes over, everything stops working and the brightness is reset to 100 % without any way of changing it.

Can this please be fixed after almost a year of constant glare? It’s affecting battery time and probably also wearing out my display’s backlight more quickly than it’d need to.

1 Like

So annoying indeed that it made me try to debug this issue.

And it gets more annoying.

Since I know (or, well, experimentally found out) that the backlight brightness can be changed by the Linux kernel via ACPI before loading the nVidia driver, I figured that I could disable the backlight handling in the nVidia driver in order to let the kernel handle this component.

To this effect, I found the documented kernel option NVreg_EnableBacklightHandler, but this one has been removed without notice or updating the documentation in the 465 version branch, like other users reported.

I reimplemented the kernel module option as a kernel module option local to nvidia-modeset instead, which merely stubs out nvkms_register_backlight() and nvkms_unregister_backlight(). This… worked, to some degree. Enabling it at least kept the acpi_video0 node instead of creating a nvidia_0 node, but upon loading the nVidia driver, the brightness is still reset to 100 % (even though I previously set it to, e.g., a value of 20).

So the workaround I had in mind (to let the kernel handle the backlight and the driver to not interfere) won’t work either.

The only workaround would be to not use the nVidia driver, but that’s probably even more annoying.

Why was the option suddenly removed without notice? Especially if it could have been a way to make the driver move out of the way in case it’s actually harmful, as it has been for 8 months now?

1 Like

Hi folks,

I am facing the same issue with my Dell G15 5515 (Ryzen 7 5800h + RTX 3060), namely, brightness and keyboard leds control doesn’t work at all.

How about this?:
https://forums.developer.nvidia.com/t/ga106m-geforce-rtx-3060-mobile-misbehaves-on-kubuntu-with-nvidia-driver-version-470-57-01/195746/11?u=generix

thanks for your reply, but if you have been looking around on the internet you should be aware that what you propose is not working for the majority of us.

At least for my laptop “Lenovo P17 Gen 1”, the last working nVidia driver is 460.91.03
you can download the driver from the NVIDIA web site in the Beta and Older Drivers

my config:
$ inxi -SGc
System: Host: lenovo Kernel: 5.13.0-23-generic x86_64 bits: 64 Desktop: Xfce 4.16.0 Distro: Ubuntu 21.10 (Impish Indri)
Graphics: Device-1: NVIDIA TU117GLM [Quadro T2000 Mobile / Max-Q] driver: nvidia v: 460.91.03
Device-2: IMC Networks Integrated Camera type: USB driver: uvcvideo
Display: x11 server: X.Org 1.20.13 driver: loaded: nvidia resolution: 3840x2160~60Hz
OpenGL: renderer: Quadro T2000/PCIe/SSE2 v: 4.6.0 NVIDIA 460.91.03

I’ll have to check that.

In general, it naturally won’t work, since the backlight handler within the nVidia driver is exactly the reason why the backlight control is not working.

However, don’t be so quick to dismiss it, since his post brings up an interesting fact I haven’t been thinking about previously: generally, kernel module options can be substituted with NVreg_RegistryDwords=... parameters and the source code especially documents that each option is first checked against the static options list before applying to “the RM” (whatever that abbreviation stands for, I believe it’s Registry Msomething… Machinery?).

In any case, passing NVreg_RegistryDwords=EnableBacklightHandler=0 (not ...=1, of course) might actually stop the driver from interfering with the backlight even though the kernel module option has been removed and have the kernel handle this stuff. IF this stuff is still hooked up internally. Grepping the binary data shipped with the driver, it turns out that the string can still be found in the proprietary, binary part, so there’s a chance that we can still force/use it. It’s worth a try, but I’m too hold up to restart my graphical environment just now, so won’t be able to test for a while.

Yeah, the 460 series is the last version that worked across the board when it comes to backlight handling. I’m not keen on upgrading, though. Especially since 465+ fix quite a few lock up issues.

Please note the difference, not
EnableBacklightHandler
but
EnableBrightnessControl
just in case…

I’m already force-setting EnableBrightnessControl to true/1 in the X.Org configuration file without any effect, so that won’t help.

However, disabling the backlight handler is still on the table for me.

Finally I got it working thanks to someone answering to my Reddit question:

i915.enable_dpcd_backlight=0 that is the key, do not try it with 1 which does not work and is everywhere quoted… just change it to 0 and enjoy working backlight dimming…

grubby --info=ALL

index=0
kernel=“/boot/vmlinuz-5.15.12-200.fc35.x86_64”
args=“ro rootflags=subvol=root rhgb quiet rd.driver.blacklist=nouveau modprobe.blacklist=nouveau nvidia-drm.modeset=1 i915.enable_dpcd_backlight=0
root=“UUID=3f93ca69-acd9-4a7d-98f6-f9ae374ead12”
initrd=“/boot/initramfs-5.15.12-200.fc35.x86_64.img”

That probably works only for machines with Intel CPU. I’ll give it a try later, but I have an AMD CPU.

Downgrading, I meant downgrading, of course.

Sadly, it does not. Everything works fine up until loading nvidia-drm (or initializing the card by starting X), afterwards the backlight stays put on 100 %, no matter what value is written to the sysfs node.
The option doesn’t help to tell the driver to back off and let the kernel handle this part. It was worth a shot, though.

I’m glad that this worked for you. But it won’t work for everyone, merely users with hybrid graphic setups where the primary adapter is an Intel one.

Yep, pretty much. It also won’t work for machines where the Nvidia graphics card is hooked up to the display directly, without using a hybrid gmux/indirection through another framebuffer.

So… some of us are still stuck. I just hope that it won’t be a full year until Nvidia actually fixes the issue.

1 Like

Sidenote, EnableBacklightHandler is not a RegistryDword but an own setting, so the correct kernel parameter would be

nvidia.NVreg_EnableBacklightHandler=0

or as modeprobe config
options nvidia NVreg_EnableBacklightHandler=0

At least this setting is also in the manual.

That’s exactly what I’ve written in this post.

There used to be such an option to the nvidia module, and it’s still documented as such, but the option was removed a while ago without modifying the documentation. Passing it will just do nothing now, other than issue a warning about an unknown option.

Due to this, I reimplemented the option local to nvidia-modeset (which registers the custom backlight handler) and stubbed out the functions if 0 is passed, which lead to no nvidia backlight node being created, but didn’t change the fact that changing the brightness of the apci_video0 node doesn’t have any effect either.

2 Likes

I had been having this problem as well, and upgrading the kernel to 5.16 (on Arch Linux) with the Nvidia 495.46 driver has resolved the problem for me.

2 Likes

Just updated the kernel? Or did you make some other changes to the Xorg file? More details, please.
And what kernel are you using, ZEN?

I just updated the kernel and the nvidia package (as it is required to match the kernel version). I have no Xorg configuration files, it is all auto-detected. I am using the stock linux kernel package on Arch, no ZEN.

can you please elaborate what system you have and if you’re sure the nvidia driver is in use.
I’ve installed the latest kernel (5.16.1-051601-generic) using mainline application together with the latest nvidia beta driver (510.39.01) and there is still no backlight control.

I’m using xubuntu 21.10
inxi -SGc
System: Host: lenovo Kernel: 5.16.1-051601-generic x86_64 bits: 64 Desktop: Xfce 4.16.0 Distro: Ubuntu 21.10 (Impish Indri)
Graphics: Device-1: NVIDIA TU117GLM [Quadro T2000 Mobile / Max-Q] driver: nvidia v: 510.39.01
Device-2: IMC Networks Integrated Camera type: USB driver: uvcvideo
Display: x11 server: X.Org 1.20.13 driver: loaded: nvidia resolution: 3840x2160~60Hz
OpenGL: renderer: Quadro T2000/PCIe/SSE2 v: 4.6.0 NVIDIA 510.39.01

The nvidia driver (460.91.03) and the xubuntu supplied nouveau driver are the only drivers supporting backlight control.