[原创]Intel 13代无核显i5加RTX4060台式机Linux下闪屏及锁屏无法关闭背光的解决
原创文章,如有转载,请注明出处。
——by realasking
前段时间自己组装了一台i5-13490f+RTX4060的台式机,顶替一台不久前坏掉的笔记本,并在还没有计算设备的情况下,暂时兼作计算模拟平台使用。
机器使用大体上还行,但是遇到了几个问题,折腾了十几天,才算解决,其中花了最多精力的就是偶发闪屏,并且锁屏后无法关闭背光的问题。
这台机器在Linux下使用时,用HKC显示器带的HDMI线连接时,使用中会偶而闪屏,在Windows下正常。因为显示器自带的线不算粗,自己以前又对DP线有比较好的印象,并且显示器自带DP和HDMI切换功能,也许可以节省一台KVM,所以就买了一条联想的DP线。换线之后,闪屏立马消失了,为此我着实高兴了一阵,殊不知这恰恰是走了一段弯路。
然后就着手解决Linux下锁屏后无法关闭背光问题。这个问题表现为自动锁屏或手动锁屏后,显示器背光会熄灭,但几秒后就会亮起,此后就一直长亮。这个问题在我的机器上和多个因素有关,因此开始时被一些因素干扰了判断。
显示器背光开始会熄灭,说明主板BIOS、内核和系统中的ACPI选项与服务都是正常工作的,然后再亮起,说明之后有什么进程唤起了相关功能。经过检查journal和dmesg信息,发现wifi在报错和启动。我的wifi是AX101,默认设置下在Linux下无法成功进行认证的,必须disable掉wifi6、只启动wifi5才能正常使用,但这么做了之后,在锁屏后它会发送报错信息,这一操作,是屏幕亮起来的第一个原因。如果能够不用此wifi,只用有线,那应该能解决了吧?但这个wifi是集成在主板上的,而我用的这块七彩虹战斧b760m white wifi v20主板的BIOS中并没有关闭此wifi或关闭此wifi的wifi6功能的选项,所以最后的解决方法是:
1.连接有线网卡
2.不再屏蔽wifi6功能
3.在KDE中去掉启用WIFI前的复选框
这么做了之后,确实日志中没再报错了,但锁屏并关闭背光后会几乎立刻亮起来,这是什么原因呢?经过检查后发现,由于显示器是VA的,最低亮度比较高,我调用了xrandr降低亮度,但当时偷了点懒,相关的命令写在conky中的。把这个命令从conky配置中移到单独的脚本中,然后配置为KDE的启动脚本,然后屏幕又变成了过几秒亮起来......
启动脚本~/bin/AutoBrightness.sh:
#!/bin/bash
# Disp = "DP-4"
Disp = "HDMI-0"
sleep 10
xrandr --output ${Disp} --brightness 0.76
至此陷入了困境。由于我有一台R7000p2021版,是amd 5800h+RTX3050Ti的,它的锁屏是正常的,我就对比了一下两台机器加载的内核模块,有两个发现:
1.R7000p2021加载了nvidia_wmi_ec_backlight,wmi,wmi_bmof模块,而这台台式机没有
2.drm的模块不同,R7000p2021的除了加载了nvidia_drm外,还加载了amd核显的相关模块
尝试用modprobe手动加载nvidia_wmi_ec_backlight后,wmi,wmi_bmof也会被加载,但锁屏并关闭背光后,屏幕还是会再次亮起,只是时间间隔又是瞬间亮起了。
纠结了一段时间之后,突然想换成HDMI线试试,然后发现手动加载相关模块的情况下,用HDMI线连接,有时能正常关闭背光,有时还是会亮起,但用配置文件自动加载模块则还是不能关闭背光,同时,屏幕偶发闪烁又出现了。那么,是否和drm有关呢?于是又做了两个设置:
- 新建内核模块自动加载文件/etc/modprobe.d/gpu.conf:
blacklist nouveau
blacklist ttm
blacklist drm_kms_helper
blacklist drm
options nvidia "NVreg_DynamicPowerManagement=0x02"
install wmi /sbin/modprobe -i -f wmi
install wmi_bmof /sbin/modprobe -i -f wmi_bmof
2.在/etc/default/grub中关闭modeset:
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet nomodeset"
3.重新生成/boot/grub/grub.cfg
然后重启。
于是锁屏也能黑屏了,闪屏也不再发生了...