我的笔记本电脑似乎处于最大亮度,亮度控制滑块/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=video
acpi_backlight=none
acpi_backlight=native
video.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 添加模块来解决,但对于某些人来说,问题仍然没有解决。现在还有一件事,我看到两份使用与我相同的笔记本电脑的报告提到,通过遵循上述步骤的几个组合,它可以为他们工作:
该人使用 Regolith Linux 1.5.3https://www.reddit.com/r/GamingLaptops/comments/ls9k5r/legion_5_pro_other_info_64gb_ram_upgrade_linux/
这家伙使用 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 中测试)。
答案4
在我的 Legion 5 pro(5600H、RTX3060、参考 82JQ002KCK)上尝试了 5 个小时后,终于让它工作正常了。
在我的 xorg.conf 中添加此行,设备部分似乎有效:选项“RegistryDwords”“EnableBrightnessControl = 1”
但我必须注销并重新登录,或者重新启动 lightdm/X 服务器才能使其工作:启动后,亮度控制不起作用(界面工作但屏幕背光保持在 100%)。
我的配置是最新的 Mint(基于 Ubuntu 20.4),带有 5.11 内核(随主线安装,Mint 自带 5.4)、Nvidia 驱动程序 460、安全启动已禁用、Bios 设置为离散(动态不起作用,黑屏)。
由于该文件不存在,我使用 Nvidia 驱动程序接口自动创建了 /etc/X11/xorg.conf。
不完全确定它是如何以及为什么会起作用,但已经花了太多时间了,希望它能有所帮助。也许它在 5.10 上有效,我可能会尝试并报告。