Brightness Issue Fedora37

I’ve been using fedora since fedora 35 and never encountered this issue. The brightness controls work on fresh fedora 37 install but the moment I update my kernel to 6.1.xx, I lose the ability to control my brightness. I’m using lenovo legion 5 with ryzen 5 4600h and nvidia 1660.I asked this on reddit and they mentioned it’s an issue with amd graphics, however, I face the same issue when I switch to x11 and discreet graphics. Please help, as I love fedora and don’t want to switch to another distro.
P.S.: My nvidia drivers are installed completely and working fine. I’ve set graphics mode to switchable graphics in the bios.

Linux kernel 6.1 introduced new code for handling brightness. Seems it is not fully compatible with all situations. You should be able to boot off an older kernel for now. It seems to impact all distros using that kernel version.


Brightness was a mess, so hopefully the new code will ultimately simplify brightness control.
While waiting for a proper fix, you could use a script based on ddcutil. To see if ddutil works for your hardware (mine is an old iMac):

% doas ddcutil capabilities | grep "Feature: 10"
   Feature: 10 (Brightness)
% doas ddcutil getvcp 10
VCP code 0x10 (Brightness                    ): current value =  9408, max value = 65535
% doas ddcutil setvcp 10 20000

thanks for the reply

Thanks a lot but it’s not supported for my hardware:(

On my Lenovo Legion 5i I had no problems with brightness using Fedora 37 6.1.x, at least a until 6.1.14 + Nvidia drivers 525 series. But I started using CachyOS’s kernel most of the time instead of Fedora’s one and now I’m on Fedora 38 Beta, so I don’t know if some update broke it.

During boot pressing ESC to see what was going on, I would always see that the line where the nvidia module/driver whatever would start the brightness control and also, when not on verbose mode, the laptop screen would change from full brightness to the one I used last.

Looking for your model on the Internet, it seems to have the same dGPU as mine RTX2060, just my system is Intel + Nvidia. That doesn’t mean the same PRIME implentation nor same configurations work, and I’m not familiar with AMD + NVIDIA settings.

Things you can try is:

Reinstall the drivers, check if the nvidia-drm modules is set to be loaded on /etc/default/grub or /etc/modprobe.d/nvidia-modeset.conf or /etc/modprobe.d/nvidia.conf as options nvidia-drm modeset=1 and then run dracut:

sudo dracut --verbose --force --regenerate-all --parallel --printsize sudo grub2-mkconfig -o /boot/grub2/grub.cfg

If you do not want to run dracut for all kernels just remove the --regenerate-all parameter.

Instead you can also teste with Negativo17’s repositories, which are the ones I am using now.

As having nvidia cards on Linux, at least on my experience, is not a set and forget thing (tiresome), things change by it self and things like flickering in games, tearing “come and go at will”, had to, again, messing with configuration last two weeks or so.

Here my current configuration that wasn’t needed before, to avoid flickering and most tearing.

cat /etc/X11/xorg.conf.d/10-nvidia.conf
Section "OutputClass"
    Identifier "nvidia"
    MatchDriver "nvidia-drm"
    Driver "nvidia"
    Option "AllowEmptyInitialConfiguration"
    Option "SLI" "off"
    Option "BaseMosaic" "off"
    Option "PrimaryGPU" "yes"
Section "ServerLayout"
	Identifier "layout"
	Option "AllowNVIDIAGPUScreens"

cat /etc/modprobe.d/nvidia-modeset.conf
# Nvidia modesetting support. There is NO console graphical framebuffer (like
# OSS drivers); this is only for Wayland support.

# Set to 0 or comment to disable kernel modesetting support. This must be
# disabled in case of Mosaic or SLI.
options nvidia-drm modeset=1

cat /etc/modprobe.d/nvidia.conf
# Enable DynamicPwerManagement
options nvidia NVreg_DynamicPowerManagement=0x02

The nvidia.conf and nvidia-modeset.conf inside modprobe can be just one file.
This dracut one helps me to have the passfrase field from Plymouth + LUKS on both my screens instead of just on the integrated screen.

Sadly, it’s not supported on my machine, I’ll just stick with 6.0