Legion 5 pro 亮度控制在装有 nvidia 驱动程序 460 的 ubuntu 20.04 上不起作用

Legion 5 pro 亮度控制在装有 nvidia 驱动程序 460 的 ubuntu 20.04 上不起作用

我的笔记本电脑似乎处于最大亮度,亮度控制滑块/Fn 键对屏幕亮度没有影响,只是显示滑块的弹出通知。这个问题对于 Legion 系列(或其他一些笔记本电脑)来说并不新鲜,但与其他(旧)Legion 5 笔记本电脑不同,对于 Ubuntu 20.04.2,所有潜在的解决方案都对我不起作用。在不同的 Ubuntu 和 Manjaro 版本上,有针对完全相同的笔记本电脑的解决方案,但在普通的 Ubuntu 20.04 上仍然不起作用,这就是为什么它有点令人困惑。

所以我的笔记本电脑的配置是 AMD 5800H + Nvidia RTX3070。我目前使用的是主线内核 5.10.0-051000-generic 和 ubuntu 20.04.2。我添加了 Nvidia 图形 PPA,目前使用的是驱动程序 v460.67。我处于 dGPU 模式(显卡直接连接到屏幕)。这是 conf 位置:

 /usr/share/X11/xorg.conf.d$ ll
total 36
drwxr-xr-x 2 root root 4096 Apr  6 21:34 ./
drwxr-xr-x 5 root root 4096 Feb  9 19:50 ../
-rw-r--r-- 1 root root   92 Okt 22  2019 10-amdgpu.conf
-rw-r--r-- 1 root root  239 Apr  6 20:34 10-nvidia-brightness.conf
-rw-r--r-- 1 root root  206 Apr  6 21:34 10-nvidia.conf
-rw-r--r-- 1 root root 1350 Jan 17 10:13 10-quirks.conf
-rw-r--r-- 1 root root   92 Okt 22  2019 10-radeon.conf
-rw-r--r-- 1 root root 1429 Aug 13  2019 40-libinput.conf
-rw-r--r-- 1 root root 3458 Mär 11  2020 70-wacom.conf

以下是相关文件的输出:

/usr/share/X11/xorg.conf.d$ cat 10-nvidia-brightness.conf 
Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce RTX 3070 Laptop GPU"
    Option         "RegistryDwords" "EnableBrightnessControl=1"
EndSection

/usr/share/X11/xorg.conf.d$ cat 10-nvidia.conf 
Section "OutputClass"
    Identifier "nvidia"
    MatchDriver "nvidia-drm"
    Driver "nvidia"
    Option "AllowEmptyInitialConfiguration"
    ModulePath "/usr/lib/x86_64-linux-gnu/nvidia/xorg"
EndSection

注意:即使对于 10-nvidia.conf,我也已经尝试过Option "RegistryDwords" "EnableBrightnessControl=1"但仍然没有结果。

我已将 nouveau 驱动程序列入黑名单:

cat /etc/modprobe.d/blacklist-nvidia-nouveau.conf 
blacklist nouveau
options nouveau modeset=0

并且还添加了以下内容以便 Nvidia 驱动程序首先加载:

cat /etc/initramfs-tools/modules
# List of modules that you want to include in your initramfs.
# They will be loaded at boot time in the order below.
#
# Syntax:  module_name [args ...]
#
# You must run update-initramfs(8) to effect this change.
#
# Examples:
#
# raid1
# sd_mod

# Other settings...
nvidia
nvidia-drm
nvidia-modeset

我尝试向 grub 添加参数,例如,,,,,acpi_backlight=vendor但是都没有用。acpi_backlight=videoacpi_backlight=noneacpi_backlight=nativevideo.use_native_backlight=1

如果有人需要的话,这里有一些相关的输出:

sudo lshw -C display
  *-display                 
       description: VGA compatible controller
       product: NVIDIA Corporation
       vendor: NVIDIA Corporation
       physical id: 0
       bus info: pci@0000:01:00.0
       version: a1
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress vga_controller bus_master cap_list rom
       configuration: driver=nvidia latency=0
       resources: iomemory:fa0-f9f iomemory:fc0-fbf irq:76 memory:d0000000-d0ffffff memory:fa00000000-fbffffffff memory:fc00000000-fc01ffffff ioport:2000(size=128) memory:d1080000-d10fffff

lspci | grep -i vga
01:00.0 VGA compatible controller: NVIDIA Corporation Device 24dd (rev a1)

还有一个错误https://bugs.launchpad.net/ubuntu/+source/nvidia-graphics-drivers-455/+bug/1905591在驱动程序中,这导致使用不同笔记本电脑的人遇到类似的问题,但对于某些人来说,他们的问题可以通过向 /etc/initramfs-tools/modules 添加模块来解决,但对于某些人来说,问题仍然没有解决。现在还有一件事,我看到两份使用与我相同的笔记本电脑的报告提到,通过遵循上述步骤的几个组合,它可以为他们工作:

  1. 该人使用 Regolith Linux 1.5.3https://www.reddit.com/r/GamingLaptops/comments/ls9k5r/legion_5_pro_other_info_64gb_ram_upgrade_linux/

  2. 这家伙使用 Manjarohttps://www.reddit.com/r/LenovoLegion/comments/miqbv4/lenovo_legion_5_pro_actual_linux_experience_and/

我也尝试过内核 5.11.11,但是仍然不起作用,最后一件事是,更改滑块或按下按钮会改变文件的值,/sys/class/backlight/nvidia_0/brightness其他两个文件总是显示以下内容:

cat actual_brightness
0
cat max_brightness 
100

这就是我尝试和测试过的一切。如果有人对这个问题有任何新的想法或建议,我将不胜感激。

最后一件事,我现在正在使用它xrandr --output DP-4 --brightness 0.5来保护我的眼睛。如果有人能评论一下这是否有助于在硬件层面上减少(以任何方式)屏幕背光的压力,那将很有帮助,因为它通常处于最大亮度。

编辑:下面有两个正确答案,一个用于混合模式(已标记为正确),另一个用于离散模式(其中提到了 arch wiki 中提到的新内核参数)。

答案1

我有同样的 Legion,目前我设法按照本指南控制亮度(非常感谢 u/fkorol,我使用的是内核 5.11.16): https://www.reddit.com/r/linux_gaming/comments/mmptqi/lenovo_legion_5_ubuntu_2004_final_guide_dream/

我在这里报告上面链接中所写内容的主要部分,以防它消失:

第一步:在 BIOS 中(联想屏幕上按 F2)必须设置为 HYBRID 模式。

1-安装主线软件,将内核版本升级到最新的5.11.x版本:

sudo 添加 apt 存储库 ppa:cappelikan/ppa

sudo apt 更新

sudo apt 安装主线

然后打开主线并安装最新可用版本(撰写本文时为 5.11.11)。

重新启动笔记本电脑

2- 使用 5.11.11 或更新版本,编辑 grub 并添加条目 amdgpu.backlight=0

sudo nano /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="安静启动 amdgpu.backlight=0"

sudo 更新 grub

重新启动笔记本电脑

就是这样!5.11 版的触摸板可以原生运行,而且通过对 grub 进行这一调整,亮度在混合模式下可以完美运行。

我再补充几点:

  • 在 BIOS 设置中始终使用“动态”模式

  • 在 1)和 2)之间,您可以安装 nvidia-drivers-460

  • 如果您安装了 nvidia 驱动程序,则安装后您应该启动:

    sudo prime-select 按需

  • 在此状态下,您的计算机将使用 iGPU 执行所有活动。如果您想使用 dGPU 执行任务,您可以在命令前定义这些变量 __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia

例如,你可以在 dGPU 上使用以下命令启动 glxheads 命令:

__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia glxheads

答案2

对于离散模式。现在,它对我(ubuntu 20.04.3)和内核(v5.11.0.34.36)参数有效:

nvidia.NVreg_RegistryDwords=EnableBrightnessControl=1

和 nvidia 驱动程序 460.91.03。无需执行任何其他操作(当然您需要执行sudo update-grub)。

该参数在 arch wiki 中有提及

https://wiki.archlinux.org/title/NVIDIA#Enabling_brightness_control

此外,不要同时使用两个内核参数(一个用于另一个答案中提到的混合,一个用于本答案中提到的离散)。

所有功劳都归功于 legion discord 的 @Chaplan 发现了这一点。

答案3

该问题已在 Linux 内核 5.16.0 中完全修复(在使用 liquorix 内核的 Ubuntu 21.10 中测试)。

细节:https://gitlab.freedesktop.org/drm/amd/-/issues/1671

答案4

在我的 Legion 5 pro(5600H、RTX3060、参考 82JQ002KCK)上尝试了 5 个小时后,终于让它工作正常了。

在我的 xorg.conf 中添加此行,设备部分似乎有效:选项“RegistryDwords”“EnableBrightnessControl = 1”

但我必须注销并重新登录,或者重新启动 lig​​htdm/X 服务器才能使其工作:启动后,亮度控制不起作用(界面工作但屏幕背光保持在 100%)。

我的配置是最新的 Mint(基于 Ubuntu 20.4),带有 5.11 内核(随主线安装,Mint 自带 5.4)、Nvidia 驱动程序 460、安全启动已禁用、Bios 设置为离散(动态不起作用,黑屏)。

由于该文件不存在,我使用 Nvidia 驱动程序接口自动创建了 /etc/X11/xorg.conf。

不完全确定它是如何以及为什么会起作用,但已经花了太多时间了,希望它能有所帮助。也许它在 5.10 上有效,我可能会尝试并报告。

相关内容