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.
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.
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.
the module “nvidia_wmi_ec_backlight” was not loaded, but after configure the module in “/etc/modules” and reboot, i see that the module is loaded by using “lsmod” but still no backlight control. Do i have to configure something else ?
The nvidia_wmi_ec_backlight module (previously called wmaa-backlight-wmi on older kernel versions) is only useful for users with hybrid graphics (at least that’s what the module help text suggests).
Curiously, the Lenovo P17 Gen 1 seems to support hybrid setups, so you might be in luck. Try changing the mode in the UEFI settings: press F1 while booting up, go to Config > Display > Graphic Devices and switch the mode to Hybrid if it’s set to Discrete.
This might change the mux to switch to the Intel graphics card as the primary framebuffer device and make things like the nvidia_wmi_ec_backlight module work.
Looks like non-hybrid, purely discrete graphics users are still out of luck. I will probably try 510.39.01 at a later time, but don’t have too much hope.
I can confirm that this backlight brightness bug has been fixed at long last with the latest beta driver 510.39.01. Tested on up-to-date Arch Linux with beta driver 510.39.01 from AUR repository on Lenovo Legion 5 Pro 16ACH6H (AMD) laptop with RTX 3070 card in discrete mode, of course.
There was no need for any module parameters. The only bug remaining is that the backlight does not get restored at new boot, so a custom systemd unit and a local script are still needed.
The fix below has also been successully tested on the same machine, running Debian GNU/Linux 11 (bullseye) which comes with 460.91.03 (unaffected) version of NVIDIA driver. The only difference is that the custom script “save-nvidia-brightness.sh” was saved to /etc/init.d folder which is present on said Debian release.
Found an alernative maybe better solution for my situation:
Create a file /etc/modprobe.d/random-name-here.conf with content:
softdep nvidia pre: i915
Making sure that the intel driver gets initialized before the nvidia driver. (Also establishes a dependency relation as a sideeffect so should not be set on amd devices)
How do you actually change the brightness on your device?
Until driver 495 I would simply use echo 80 > sudo tee /sys/class/backlight/nvidia_0/brightness along with nvidia.NVreg_RegistryDwords=EnableBrightnessControl=1 in my kernel parameters, but after updating to driver 510, I can no longer change the brightness, even after removing the kernel param. Any tips?