Lenovo Legion 7 Cannot Adjust Screen Brightness and Sleep Problem

I have a problem with Lenovo Legion 7 laptop that the screen brightness cannot be adjusted and when waking up from sleep, it’s only black screen.

The laptop has discrete graphics mode, which is the mode where integrated graphics is disabled and the display is connected directly to the discrete graphics (not via integrated graphics).

The graphics driver is NVIDIA proprietary driver version 510.xx via YaST.

I can use the Fn key to change the screen brightness value, but the screen brightness isn’t changed; it’s always at the max brightness.

ls /sys/class/backlight/nvidia_0/ shows nvidia_0.

The output of cat /sys/class/backlight/nvidia_0/actual_brightness and cat /sys/class/backlight/nvidia_0/brightness are the screen brightness value set from the Fn key.

I tried adding to /etc/default/grub “video.use_native_backlight=1” to GRUB_CMDLINE_LINUX_DEFAULT and then ran sudo grub2-mkconfig -o /boot/grub2/grub.cfg, but the problem still persists.

I suspect this is probably the X11 server issue not configured properly with the NVIDIA driver.

Appreciated if anyone can help this as I like OpenSUSE Tumbleweed so far.

The system information inxi -Fazy:

**System:**
  **Kernel:** 5.16.5-1-default x86_64 **bits:** 64 **compiler:** gcc **v:** 11.2.1 
  **parameters:** BOOT_IMAGE=/boot/vmlinuz-5.16.5-1-default 
  root=UUID=3f6e9f1e-5858-4312-9f4b-ef4aab041425 splash=silent 
  resume=/dev/disk/by-uuid/abb4a792-71ce-4da1-8120-a6c1695d0d3e 
  mitigations=auto quiet security=apparmor 
  **Desktop:** KDE Plasma 5.24.0 **tk:** Qt 5.15.2 **wm:** kwin_x11 **vt:** 7 **dm:** SDDM 
  **Distro:** openSUSE Tumbleweed 20220210 
**Machine:**
  **Type:** Laptop **System:** LENOVO **product:** 82N6 **v:** Legion 7 16ACHg6 
  **serial:** <filter> **Chassis:****type:** 10 **v:** Legion 7 16ACHg6 **serial:** <filter> 
  **Mobo:** LENOVO **model:** LNVNB161216 **v:** SDK0R32862 WIN **serial:** <filter> 
  **UEFI:** LENOVO **v:** GKCN49WW **date:** 11/08/2021 
**Battery:**
  **ID-1:** BAT0 **charge:** 83.5 Wh (100.0%) **condition:** 83.5/80.0 Wh (104.3%) 
  **volts:** 17.6 **min:** 15.4 **model:** Celxpert L20C4PC1 **type:** Li-poly 
  **serial:** <filter> **status:** Charging **cycles:** 47 
**CPU:**
  **Info:** 8-Core **model:** AMD Ryzen 7 5800H with Radeon Graphics **bits:** 64 
  **type:** MT MCP **arch:** Zen 3 **family:** 19 (25) **model-id:** 50 (80) **stepping:** 0 
  **microcode:** A50000C **cache:****L2:** 4 MiB 
  **flags:** avx avx2 lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 svm 
  **bogomips:** 102213 
  **Speed:** 1196 MHz **min/max:** 1200/3200 MHz **boost:** enabled **Core speeds (MHz):**
  **1:** 1196 **2:** 1196 **3:** 1197 **4:** 1197 **5:** 1196 **6:** 1197 **7:** 1196 **8:** 1197 **9:** 1198 
  **10:** 1367 **11:** 1283 **12:** 1195 **13:** 1198 **14:** 1198 **15:** 1397 **16:** 1353 
  **Vulnerabilities:****Type:** itlb_multihit **status:** Not affected 
  **Type:** l1tf **status:** Not affected 
  **Type:** mds **status:** Not affected 
  **Type:** meltdown **status:** Not affected 
  **Type:** spec_store_bypass 
  **mitigation:** Speculative Store Bypass disabled via prctl 
  **Type:** spectre_v1 
  **mitigation:** usercopy/swapgs barriers and __user pointer sanitization 
  **Type:** spectre_v2 **mitigation:** Full AMD retpoline, IBPB: conditional, IBRS_FW, 
  STIBP: always-on, RSB filling 
  **Type:** srbds **status:** Not affected 
  **Type:** tsx_async_abort **status:** Not affected 
**Graphics:**
  **Device-1:** NVIDIA GA106M [GeForce RTX 3060 Mobile / Max-Q] **vendor:** Lenovo 
  **driver:** nvidia **v:** 510.47.03 **alternate:** nouveau,nvidia_drm **bus-ID:** 01:00.0 
  **chip-ID:** 10de:2560 **class-ID:** 0300 
  **Display:** x11 **server:** X.Org 1.21.1.3 **compositor:** kwin_x11 **driver:**
  **loaded:** nvidia **unloaded:** fbdev,modesetting,vesa **alternate:** nouveau,nv 
  **display-ID:** :0 **screens:** 1 
  **Screen-1:** 0 **s-res:** 2560x1600 **s-dpi:** 191 **s-size:** 340x221mm (13.4x8.7") 
  **s-diag:** 406mm (16") 
  **Monitor-1:** DP-4 **res:** 2560x1600 **dpi:** 4064 **size:** 16x10mm (0.6x0.4") 
  **diag:** 19mm (0.7") 
  **OpenGL:****renderer:** NVIDIA GeForce RTX 3060 Laptop GPU/PCIe/SSE2 
  **v:** 4.6.0 NVIDIA 510.47.03 **direct render:** Yes 
**Audio:**
  **Device-1:** NVIDIA **driver:** snd_hda_intel **v:** kernel **bus-ID:** 01:00.1 
  **chip-ID:** 10de:228e **class-ID:** 0403 
  **Device-2:** AMD Family 17h HD Audio **vendor:** Lenovo **driver:** snd_hda_intel 
  **v:** kernel **bus-ID:** 05:00.6 **chip-ID:** 1022:15e3 **class-ID:** 0403 
  **Sound Server-1:** ALSA **v:** k5.16.5-1-default **running:** yes 
  **Sound Server-2:** PulseAudio **v:** 15.0 **running:** yes 
  **Sound Server-3:** PipeWire **v:** 0.3.45 **running:** no 
**...**

inxi -Fazy continued:

...
**Network:** 
  **Device-1:** Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet 
  **vendor:** Lenovo **driver:** r8169 **v:** kernel **port:** 1000 **bus-ID:** 03:00.0 
  **chip-ID:** 10ec:8168 **class-ID:** 0200 
  **IF:** eno1 **state:** down **mac:** <filter> 
  **Device-2:** Intel Wi-Fi 6 AX200 **vendor:** Rivet Networks Killer™ 
  **driver:** iwlwifi **v:** kernel **bus-ID:** 04:00.0 **chip-ID:** 8086:2723 **class-ID:** 0280 
  **IF:** wlp4s0 **state:** up **mac:** <filter> 
**Bluetooth:** 
  **Device-1:** Intel AX200 Bluetooth **type:** USB **driver:** btusb **v:** 0.8 **bus-ID:** 3-4:2 
  **chip-ID:** 8087:0029 **class-ID:** e001 
  **Report:** rfkill **ID:** hci0 **rfk-id:** 3 **state:** up **address:** see --recommends 
**Drives:** 
  **Local Storage:** **total:** 953.87 GiB **used:** 18.86 GiB (2.0%) 
  **SMART Message:** Unable to run smartctl. Root privileges required. 
  **ID-1:** /dev/nvme0n1 **maj-min:** 259:0 **vendor:** Samsung **model:** MZVLB1T0HBLR-000L2 
  **size:** 953.87 GiB **block-size:** **physical:** 512 B **logical:** 512 B **speed:** 31.6 Gb/s 
  **lanes:** 4 **type:** SSD **serial:** <filter> **rev:** 3L1QEXF7 **temp:** 37.9 C **scheme:** GPT 
**Partition:** 
  **ID-1:** / **raw-size:** 234.38 GiB **size:** 234.38 GiB (100.00%) 
  **used:** 18.83 GiB (8.0%) **fs:** btrfs **dev:** /dev/nvme0n1p5 **maj-min:** 259:5 
  **ID-2:** /boot/efi **raw-size:** 260 MiB **size:** 256 MiB (98.46%) 
  **used:** 35.2 MiB (13.8%) **fs:** vfat **dev:** /dev/nvme0n1p1 **maj-min:** 259:1 
  **ID-3:** /home **raw-size:** 234.38 GiB **size:** 234.38 GiB (100.00%) 
  **used:** 18.83 GiB (8.0%) **fs:** btrfs **dev:** /dev/nvme0n1p5 **maj-min:** 259:5 
  **ID-4:** /opt **raw-size:** 234.38 GiB **size:** 234.38 GiB (100.00%) 
  **used:** 18.83 GiB (8.0%) **fs:** btrfs **dev:** /dev/nvme0n1p5 **maj-min:** 259:5 
  **ID-5:** /var **raw-size:** 234.38 GiB **size:** 234.38 GiB (100.00%) 
  **used:** 18.83 GiB (8.0%) **fs:** btrfs **dev:** /dev/nvme0n1p5 **maj-min:** 259:5 
**Swap:** 
  **Kernel:** **swappiness:** 60 (default) **cache-pressure:** 100 (default) 
  **ID-1:** swap-1 **type:** partition **size:** 37.11 GiB **used:** 0 KiB (0.0%) **priority:** -2 
  **dev:** /dev/nvme0n1p6 **maj-min:** 259:6 
**Sensors:** 
  **Message:** No sensor data found. Is lm-sensors configured? 
**Info:** 
  **Processes:** 348 **Uptime:** 0h 39m **wakeups:** 1 **Memory:** 31.19 GiB 
  **used:** 3.08 GiB (9.9%) **Init:** systemd **v:** 249 **runlevel:** 5 
  **target:** graphical.target **tool:** systemctl **Compilers:** **gcc:** 11.2.1 **alt:** 11 
  **clang:** 13.0.1 **Packages:** N/A **note:** see --pkg **flatpak:** 0 **Shell:** Bash **v:** 5.1.16 
  **running-in:** konsole **inxi:** 3.3.07

Can you try switch to switchable graphics mode in bios?

I tried switching to the switchable graphics mode from the BIOS (called dynamic graphics in the Lenovo Legion BIOS). But, using the switchable graphics mode ended up booting to the /dev/tty1; I couldn’t get into the Desktop Environment GUI thing.

I installed OpenSUSE in discrete graphics mode, so maybe the installation process specifically targeted the environment in the discrete graphics mode ? I don’t know.

Anyway, I switched to discrete graphics mode again and the output of sudo journalctl -p3 -b0 :

Feb 16 08:31:30 localhost kernel: ACPI BIOS Error (bug): Could not resolve symbol _SB.PCI0.PB2], AE_NOT_FOUND (20210930/dswload2-162)
Feb 16 08:31:30 localhost kernel: ACPI Error: AE_NOT_FOUND, During name lookup/catalog (20210930/psobject-220)
Feb 16 08:31:30 localhost kernel: integrity: Problem loading X.509 certificate -65
Feb 16 08:31:31 localhost kernel: ACPI BIOS Error (bug): Could not resolve symbol _SB.PCI0.GP17.VGA.LCD._BCM.AFN7], AE_NOT_FOUND (20210930/psargs-330)
Feb 16 08:31:31 localhost kernel: ACPI Error: Aborting method _SB.PCI0.GP17.VGA.LCD._BCM due to previous error (AE_NOT_FOUND) (20210930/psparse-529)
Feb 16 00:31:32 localhost smartd[792]: Device: /dev/nvme0, number of Error Log entries increased from 463 to 464
Feb 16 00:31:32 localhost kernel:
Feb 16 00:31:35 localhost kernel: Bluetooth: hci0: Failed to read codec capabilities (-56)
Feb 16 00:31:35 localhost kernel: Bluetooth: hci0: Failed to read codec capabilities (-56)
Feb 16 00:31:35 localhost kernel: Bluetooth: hci0: Failed to read codec capabilities (-56)
Feb 16 00:31:35 localhost kernel: Bluetooth: hci0: Failed to read codec capabilities (-56)
Feb 16 00:31:35 localhost kernel: Bluetooth: hci0: Failed to read codec capabilities (-56)
Feb 16 00:31:35 localhost kernel: Bluetooth: hci0: Failed to read codec capabilities (-56)
Feb 16 00:31:35 localhost kernel: Bluetooth: hci0: Failed to read codec capabilities (-56)
Feb 16 00:31:41 localhost.localdomain kernel: Bluetooth: hci0: Failed to read codec capabilities (-56)
Feb 16 00:31:41 localhost.localdomain kernel: Bluetooth: hci0: Failed to read codec capabilities (-56)
Feb 16 00:31:41 localhost.localdomain kernel: Bluetooth: hci0: Failed to read codec capabilities (-56)
Feb 16 00:31:41 localhost.localdomain kernel: Bluetooth: hci0: Failed to read codec capabilities (-56)
Feb 16 00:31:41 localhost.localdomain kernel: Bluetooth: hci0: Failed to read codec capabilities (-56)
Feb 16 00:31:41 localhost.localdomain kernel: Bluetooth: hci0: Failed to read codec capabilities (-56)
Feb 16 00:31:41 localhost.localdomain kernel: Bluetooth: hci0: Failed to read codec capabilities (-56)

While the output of sudo journalctl -p3 -b-1 (previous boot in switchable graphics mode):

[FONT=monospace]Feb 16 08:29:02 localhost kernel: ACPI BIOS Error (bug): Could not resolve symbol _SB.PCI0.PB2], AE_NOT_FOUND (20210930/dswload2-162)
Feb 16 08:29:02 localhost kernel: ACPI Error: AE_NOT_FOUND, During name lookup/catalog (20210930/psobject-220)
Feb 16 08:29:02 localhost kernel: integrity: Problem loading X.509 certificate -65
Feb 16 00:29:04 localhost smartd[816]: Device: /dev/nvme0, number of Error Log entries increased from 460 to 463
Feb 16 00:29:04 localhost kernel:
Feb 16 00:29:07 localhost sddm[1111]: Failed to read display number from pipe
Feb 16 00:29:07 localhost sddm[1111]: Could not start Display server on vt 7
Feb 16 00:29:08 localhost kernel: Bluetooth: hci0: Failed to read codec capabilities (-56)
Feb 16 00:29:08 localhost kernel: Bluetooth: hci0: Failed to read codec capabilities (-56)
Feb 16 00:29:08 localhost kernel: Bluetooth: hci0: Failed to read codec capabilities (-56)
Feb 16 00:29:08 localhost kernel: Bluetooth: hci0: Failed to read codec capabilities (-56)
Feb 16 00:29:08 localhost kernel: Bluetooth: hci0: Failed to read codec capabilities (-56)
Feb 16 00:29:08 localhost kernel: Bluetooth: hci0: Failed to read codec capabilities (-56)
Feb 16 00:29:08 localhost kernel: Bluetooth: hci0: Failed to read codec capabilities (-56)

There are several errors, but I think [FONT=monospace]ACPI BIOS Error (bug)[/FONT][/FONT] is the relevant one for this problem.

I noted that the switchable graphics mode doesn’t have the BIOS bug [FONT=monospace]ACPI BIOS Error (bug): Could not resolve symbol _SB.PCI0.GP17.VGA.LCD._BCM.AFN7], AE_NOT_FOUND (20210930/psargs-330)[/FONT]. From Ubuntu forum “kernel - ACPI BIOS Error (bug): Could not resolve symbol [\_SB.PCI0.GP17.VGA.LCD._BCM.AFN7] - Ask Ubuntu”, this seems having something to do with screen brightness.

For [FONT=monospace]ACPI BIOS Error (bug): Could not resolve symbol _SB.PCI0.PB2], AE_NOT_FOUND (20210930/dswload2-162)[/FONT], there’s another similar post in Arch “Backlight not working [\_SB.PCI0.PB2], AE_NOT_FOUND / Kernel & Hardware / Arch Linux Forums”.

I also note that the battery life is absurd. It takes from 100% to 10% in 2 hours just for Youtube streaming while doing GIMP with max screen brightness + 165Hz refresh rate. In Windows 10, this roughly takes 4 hours.

Any idea on how to fix this?

I also followed the solution from “https://askubuntu.com/questions/1217133/cant-control-screen-brightness-acpi-error-lenovo-legion-y540”, but it didn’t work.

Added /etc/X11/xorg.conf with contents:


Section "Device" 
        Identifier "Nvidia GPU" 
        Driver "nvidia" 
        VendorName "NVIDIA Corporation" 
        BoardName "GeForce RTX 3060 Mobile" 
        Option "RegistryDwords" "EnableBrightnessControl=1" 
EndSection

Hi,
I am also using Lenovo Legion, but it is Lenovo Legion 5 15ARH05
But I’m using GTX1650Ti, and I use driver 470 version (updating to 510 cannot change brightness too)

There have been some issue on the latest kernel and nvidia driver.
Check out this thread, see if it may help.
https://forums.opensuse.org/showthread.php/566506-Latest-Snapshot-(12022022)-problem-booting

Hmmm, I don’t think the kernel v 5.16 and NVIDIA v 510 cause this issue. But, I’ll look into this though; I’m still new with OpenSUSE, so I still need to study zypper and YaST.

I suspect there must be some Linux boot parameter and X11 configuration missing somewhere for discrete graphics mode. Because I don’t see any error logs at both systemd journal and “/var/”, and I tried using xrandr to modify the screen brightness and it worked, something like “xrandr --output DP-4 --brightness 0.5”.

I’m in the middle of studying the Xorg documentation to see for any possible solution.

If running in switchable graphics mode, if you have an xorg conf file it will fail so to test that you might want to remove the xorg.conf file or any file in xorg.conf.d that has mention of either amdgpu or nvidia.

But to your point with the brightness control, have you attempted booting with the following kernel parameter :

nvidia.NVreg_RegistryDwords=EnableBrightnessControl=1

Information taken from here : https://wiki.archlinux.org/title/NVIDIA#Enabling_brightness_control

Uninstall nouveau and Nvidia drivers, delete Xorg settings, then install Nvidia G05 (470) drivers.

I can confirm that the updates are a different issue. I performed a system update 2 weeks ago and got an unbootable system as described in the post. This made me study the* https://doc.opensuse.org* and luckily, I found snapper to rollback the system before the updates (which is also why I was stagnant with this post for 2 weeks).

So brightness and sleep issue still persist here.

I tried adding the additional boot parameter, but it didn’t fix the brightness issue.

After rolling back the system, I uninstalled Nvidia drivers version 510 and installed the version 470. I deleted /etc/X11/xorg.conf and there were no Xorg conf files related to display in the /etc/X11/xorg.conf.d. Unfortunately, the brightness isn’t fixed at all.

Actually, I had switched from Manjaro to OpenSUSE Tumbleweed. I also encountered brightness and sleep issue in Manjaro and I found the solution from the Manjaro forum below:


1. Install NVIDIA proprietary driver.
2. Update the X11 settings: *sudo nano  /usr/share/X11/xorg.conf.d/10-amdgpu-nvidia-drm-outputclass.conf* and add **Option "RegistryDwords" "EnableBrightnessControl=1"** to NVIDIA output  class:
Section "OutputClass"
    Identifier "nvidia"
    MatchDriver "nvidia-drm"
    Driver "nvidia"
    Option "AllowEmptyInitialConfiguration"
    Option "RegistryDwords" "EnableBrightnessControl=1"
    ModulePath "/usr/lib/nvidia/xorg"
    ModulePath "/usr/lib/xorg/modules"
EndSection

 
3. sudo nano /etc/default/grub
Add “video.use_native_backlight=1” to GRUB_CMDLINE_LINUX_DEFAULT, for example GRUB_CMDLINE_LINUX_DEFAULT=“quiet splash …OTHER_CURRENT_ENTRIES_HERE… video.use_native_backlight=1”

 
4. sudo update-grub
5. Reboot

Not only that these steps fixed the brightness issue, but it also automatically fixed the sleep issue. This is also why I raise Lenovo Legion 7 brightness and sleep issue in the same post; I reckon fixing the brightness issue will fix the sleep issue.

The thing is Manjaro and OpenSUSE Tumbleweed have different NVIDIA installation mechanism and X11 configurations, so I’m clueless on how to fix this in Tumbleweed.

After contacting with the Lenovo support up to the Lenovo upper management, the upper management informed that Linux wasn’t supported for the Lenovo Legion 7.

Moreover, I requested their BIOS/UEFI programmer interface since I suspected that their ACPI wasn’t compliant (ACPI bugs from as discovered from the kernel logs), so I can make a customize Linux kernel to support the firmware of this laptop model.

But the Lenovo support said they couldn’t provide details of the BIOS & component levels from the upper management since those are Lenovo Confidential.

Pretty much a letdown, it means that I cannot use any Linux-based OS with this laptop model.

For anyone who is curious with the Linux problem on Lenovo Legion 7, here are the list:

  • Display brightness cannot be changed by the Fn key, it’s fixed at max brightness. You can change the brightness by the xrandr command, but seriously …
  • Cannot go to the sleep state properly: when the system wakes up and the screen is black and you must force shutdown the system.
  • **Ridiculous **power consumption: it takes 2 hours to drain the battery from 100% to 9% just doing GIMP while playing youtube videos, with 165-Hz refresh rate and max brightness display.
  • Audio speaker does not work, but earphones works fine.

So for Linux, beware that anyone should stay away from the Legion 7 model.