我有一台配备 Ubuntu 18.04.4 LTS 的 Dell G5 5590。BIOS 版本为 1.11.1。
即使没有任何处理器负载,我的风扇也会持续打开和关闭 30 秒(30 秒全速,30 秒完全关闭)。这非常烦人,我不确定它应该是这样的,因为我希望有更多梯度的风扇控制。
我做了什么:
lm-sensors
、设置并sensors-detect
添加coretemp
到/etc/modules
;i8kutils
并运行了sudo modprobe i8k force=1
,现在我可以在psensor
GUI中看到风扇速度,如下图所示;fancontrol
并尝试按照此处所述进行设置: https: //askubuntu.com/a/46135/762767 - 该pwmconfig
工具能够在校准期间关闭和打开我的风扇,但是,校准后它说:No correlations were detected.
There is either no fan connected to the output of hwmon7/pwm1,
or the connected fan has no rpm-signal connected to one of
the tested fan sensors. (Note: not all motherboards have
the pwm outputs connected to the fan connectors,
check out the hardware database on http://www.almico.com/forumindex.php)
Run Code Online (Sandbox Code Playgroud)
另外,即使我完成pwmconfig
设置并运行fancontrol
服务,风扇行为也没有变化。
我有一台 Dell G5 5590,配有 i7-9750H 和 RTX 2070MQ。我正在运行 Pop_OS 20.10,它是 ubuntu 变体,并使用 systemd。
据我所知,BIOS的更新(至少在1.10之后,之前不能告诉你)主要是为了修复英特尔处理器架构的安全缺陷。“修复”需要以永久降低性能的方式限制处理器,并且降级是相当困难和危险的(被戴尔阻止,需要生成您自己的假BIOS有效负载来绕过,并且可能使指纹读取器永远无法再次工作)。根据我从 1.10 到 1.14 的经验,按照上述答案以及对上述答案和其他链接的评论,他们也不会改变这台笔记本电脑的风扇/热分布。
这是我的温度曲线,即使在 800mhz 空闲时,在最新的 BIOS 1.14 上:
正如您在图像底部看到的,我的温度只是上下波动。在这些摆动的顶部,风扇打开至“高”/全速 4700rpm,在底部,风扇关闭至 0rpm。非常令人恼火。与我在 BIOS 1.10 上的体验相同。
后来更新:在这台笔记本电脑上,我的问题是通过 hdmi 和 miniDP 端口使用外部显示器 - 这样做会导致我的温度升高 40+ 摄氏度,无论是在 Linux 还是 Windows 中,这似乎是 nvidia 驱动程序问题。通过 USB-C 将我的外部显示器连接到双 HDMI 集线器,可以让我的电脑在没有风扇的情况下保持在 47 摄氏度,在干净启动后处于空闲状态。
戴尔对风扇进行了限制,并且只允许控制特定的预设,但是可以通过阅读以下链接在您的硬件上尽可能地访问它们:
(更新:戴尔似乎没有开源风扇控制,并且逆向工程工作取得的成功有限;Windows 可用的预设似乎比我在 Linux 中能够访问的要多。)
如何控制风扇转速? https://www.cyberciti.biz/faq/controlling-dell-fan-speeds-Temperature-on-ubuntu-debian-linux/ https://mijorus.medium.com/ Thermal-tweaks-on-dell-laptops- running-linux-769c8c80022e https://wiki.archlinux.org/index.php/fan_speed_control#BIOS_overriding_fan_control https://github.com/TomFreudenberg/dell-bios-fan-control
(请注意,我认为 /etc/i8kutils/i8kmon.conf 在更高版本中移至 /etc/i8kmon.conf,这就是我现在在我的文件系统和手册页中看到的内容。手册页中还有一项规定在您的主目录中指定一个conf文件。)
sudo apt install lm-sensors i8kutils -y
sudo modprobe i8k
if that doesn't work, which it did not for me, you may try:
# sudo modprobe i8k force=1
# (which seems to work for me?)
git clone https://github.com/TomFreudenberg/dell-bios-fan-control.git
cd dell-bios-fan-control
make
sudo mv dell-bios-fan-control /usr/bin/dell-bios-fan-control
Run Code Online (Sandbox Code Playgroud)
如果您遇到 i8k 无法工作的问题,您可以尝试以下操作:
sudo -i
echo "options i8k force=1" > /etc/modprobe.d/i8k.conf
echo i8k >> /etc/modules
exit
Run Code Online (Sandbox Code Playgroud)
如果重新启动计算机,您也可能会看到更好的结果。
为了真正生效,我们需要启动服务,并禁用风扇的 BIOS 控制,这显然是非常危险的。像这样的处理器可能会在 10 秒的高温活动中自行烧毁而无法修复,因此请务必小心。
我的建议:
psensor
或其他一些图形温度应用程序,以便您可以密切关注温度,并准备好在发现温度上升高于应有水平时采取行动。dell-bios-fan-control 1
(按照此处)。psensor
以便在达到特定温度时自动运行dell-bios-fan-control 1
,以更加安全。shutdown now
因为这不会足够快地杀死CPU上的负载,但我不确定。)ctrl
+ alt
+ printscrn
/(sysreq) +b
可能是让内核立即硬重启的最快方法。可能有更好的方法。这可能有点过分了,但是......如果您有一台昂贵的笔记本电脑,请做好准备。(不过,不要偏执,因为有硬件安全开关可以关闭笔记本电脑以防止自身过热。)
既然你已经准备好了,
sudo systemctl stop i8kmon.service
sudo systemctl status i8kmon.service
Run Code Online (Sandbox Code Playgroud)
好的,我们现在要禁用 BIOS 控制——风扇应该安静——然后立即打开风扇——我们1
将测试您实际上有多少个风扇设置,并确保这一点工作中。
一一运行这些命令并注意您的系统。
dell-bios-fan-control 0
# fans are now not being controlled by anything; are they quiet?
# how are temps? You can watch for a second if desired.
dell-bios-fan-control 1
# let's turn it back on to make sure our failsafe works. With that settled,
# let's turn it back off
dell-bios-fan-control 0
# and let's manually set the fans on with i8kctl
i8kctl fan 1 1
# did fans turn on? let's see what RPM we're at:
i8kctl
# you can spam this command a few times to get info.
# the 7th and 8th values (will be in the thousands if fan is running, otherwise 0)
# are the left and right fan RPM.
# Now let's try and see if you hear different rpm's at different levels.
sudo i8kctl fan 2 2
# hear a difference? we can check again:
i8kctl
sudo i8kctl fan 3 3
i8kctl
# did they all work? If not, not which ones did and didn't. For my G5 5590, I'm only seeing 0,1,2 work, which are 0rpm, 2200~ rpm, and 4740rpm.
Run Code Online (Sandbox Code Playgroud)
现在您需要设置风扇曲线。我们通过编辑此文件来做到这一点:
sudo nano /etc/i8kmon.conf
Run Code Online (Sandbox Code Playgroud)
现在您必须根据计算机的热特性编辑该文件。根据需要查看手册页和文档。简短的版本是其中的几行是这样说的:
set config(0) {{0 0} -1 55 -1 60}
set config(1) {{1 1} 45 80 45 80}
set config(2) {{2 2} 70 90 70 90}
set config(3) {{3 3} 80 128 80 128}
Run Code Online (Sandbox Code Playgroud)
您需要根据笔记本电脑的热特性调整这些值。我的特定机器不能怠速低于 85,期间,因此风扇必须始终打开,因此我的曲线会相应调整。一旦我重新粘贴,我会再次更改它,可能是为了获得安静的空闲状态。
(请注意,G5 5590 不支持功率级 3,仅支持功率级 2——不过,如果您不打算包含该行,请确保您测试它不会破坏任何东西,i8kutils 对事情很敏感像那样)
要解释如何编写这些行,它们的意思是:
# DO NOT COPY PASTE THESE LINES, ADDING COMMENTS AFTER BREAKS THIS CONFIG FILE
set config(0) {{0 0} -1 55 -1 60} # run fans at 0,0; above 55(ac) / 60(batt), move up to config(1)
set config(1) {{1 1} 50 65 55 70} # run fans at 1,1; at 50(ac),55(batt) drop down to config(0); at 65(ac),70(batt) move up to config(2)
set config(2) {{2 2} 60 75 65 80} # etc.
set config(3) {{2 2} 70 128 75 128} # etc.
Run Code Online (Sandbox Code Playgroud)
注意:请勿在与这些命令相同的行上添加注释,仅在换行符上/之后添加注释。另外,最大/最小温度设置应该重叠,最好至少 10 度左右——如果您不明白为什么,请参阅手册页。
# set
# config(configuration-number)
# {
# {speed-of-fan-n1 speed-of-fan-n2}
# drop-down-temp-AC
# step-up-temp-AC
# drop-down-temp-battery
# step-up-temp-battery
# }
#
# https://mijorus.medium.com/thermal-tweaks-on-dell-laptops-running-linux-769c8c80022e
Run Code Online (Sandbox Code Playgroud)
fans at 0,0
并fans at 1,1
对应于这些行:
set status(leftspeed) "0 1000 2000 3000"
# 0=0rpm, 1=1000rpm, etc.
set status(rightspeed) "0 1000 2000 3000"
# same for right fan
# so 1,1 correponds to 1000rpm left fan,1000rpm right fan
Run Code Online (Sandbox Code Playgroud)
(再次请注意,在 G5 中(我认为甚至在精密系列中也不支持,这太疯狂了),不支持手动设置风扇 RPM,但我认为在 XPS 和 Alienware 系列中是支持的 - 然而,说,不要省略这些行。程序会运行,但风扇永远不会旋转!)
这告诉我们您在此处的评论中看到了什么。我认为 Alienware 允许此功能,而根据我简要阅读的内容,XPS 似乎是允许的 - 然而,戴尔人为地限制了粉丝使用所有不是他们顶级高端机器的东西 - 甚至是他们的半高端机器Precision 和 G5(不确定 G7?)系列不允许转速设置。不错,戴尔。
现在,如果您过去关注过您的临时情况,您可以尝试进入配置文件并将其设置为您想要的任何级别,然后打开 i8kmon 的 systemd 服务。
sudo systemctl status i8kmon.service
sudo systemctl enable i8kmon.service
sudo systemctl start i8kmon.service
Run Code Online (Sandbox Code Playgroud)
现在,我们还需要添加一个 systemd 进程,以确保重启时 BIOS 不会再次接管。按照本指南,我们基本上会这样做:
sudo nano /lib/systemd/system/dell-bios-fan-control.service
Run Code Online (Sandbox Code Playgroud)
将其粘贴到那里:
[Unit]
Description=Turn off bios control of fans
[Service]
Type=simple
ExecStart=/usr/bin/dell-bios-fan-control 0
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
然后
sudo cp /lib/systemd/system/dell-bios-fan-control.service /etc/systemd/system/dell-bios-fan-control.service
sudo systemctl enable dell-bios-fan-control
sudo systemctl start dell-bios-fan-control
Run Code Online (Sandbox Code Playgroud)
你应该可以走了。不过,我会继续重新启动计算机,并确保它按预期工作。观察 psensor 应该会告诉您它是否遵循您的配置值。
如果这里有任何东西不起作用,请告诉我,在通过反复试验弄清楚之后,我正在以一种非常混乱的方式编写此内容。随着时间的推移,我正在清理它,因为我巩固了对此的理解。
一个明显的问题是,为了安全起见,在启动 i8k 服务时应该进行错误处理,以便在启动失败时重新打开 BIOS 控制。
即使这样也不能保证。我已经注释掉了“风扇转速”行,因为默认文件表明它们是不必要的,可以自动探测,并且我的型号(G5 5590)不支持该功能。该服务似乎启动良好,但无法真正激活风扇。因此,我还建议在另一个应用程序中设置另一个温度故障保护装置。如果/当我有时间这样做时,我会尝试更新本指南。
如果您是双启动的,则在任何其他未添加手动风扇控制的发行版中都不会运行任何风扇,因此,您会过热并崩溃。要改变这一点,您应该添加一个反向过程,以在关机时将控制权交回 BIOS,如下所示:
sudo apt install lm-sensors i8kutils -y
sudo modprobe i8k
if that doesn't work, which it did not for me, you may try:
# sudo modprobe i8k force=1
# (which seems to work for me?)
git clone https://github.com/TomFreudenberg/dell-bios-fan-control.git
cd dell-bios-fan-control
make
sudo mv dell-bios-fan-control /usr/bin/dell-bios-fan-control
Run Code Online (Sandbox Code Playgroud)
sudo -i
echo "options i8k force=1" > /etc/modprobe.d/i8k.conf
echo i8k >> /etc/modules
exit
Run Code Online (Sandbox Code Playgroud)
然后
sudo cp /lib/systemd/system/dell-bios-fan-control-reverse.service /etc/systemd/system/dell-bios-fan-control-reverse.service
sudo systemctl enable dell-bios-fan-control-reverse
sudo systemctl start dell-bios-fan-control-reverse
Run Code Online (Sandbox Code Playgroud)
请将您的Dell G5 5590 笔记本电脑从 BIOS 版本 1.11.1 更新到最新的BIOS 1.12.0,以解决风扇问题,因为风扇的控制是通过 BIOS 进行的,尽管您无法在其中调整控制(然而)。
后一个断言基于我在网络搜索中发现的前三篇帖子,这表明运行 Windows 10 和 Linux 的用户存在问题;因此我认为涉及BIOS。
https://www.reddit.com/r/Dell/comments/ag5d4p/dell_g5_manual_fan_control_utility/
https://www.dell.com/community/Inspiron/Dell-G5-15-5590-fan-control/td-p/7390514
https://www.dell.com/community/Inspiron/Annoying-fan-speed-oscillation-on-DELL-G5-5590/td-p/7403566
归档时间: |
|
查看次数: |
5684 次 |
最近记录: |