更新 BIOS 并没有解决我的风扇问题。

更新 BIOS 并没有解决我的风扇问题。

我有一台装有 Ubuntu 18.04.4 LTS 的 Dell G5 5590。BIOS 版本是 1.11.1。

我的风扇总是每隔 30 秒就打开和关闭一次(30 秒全速,30 秒完全关闭),即使没有任何处理器负载。这非常烦人,我不确定它是否应该这样,因为我期望风扇控制更具梯度。

我做了什么:

  • 我查看了 BIOS 设置,但没有找到与风扇控制相关的设置;
  • 我已经安装lm-sensors、设置sensors-detect并添加coretemp/etc/modules
  • 我已经安装i8kutils并运行sudo modprobe i8k force=1,现在我能够在psensorGUI 中看到风扇速度,如下图所示;
  • 我已经安装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)

此外,即使我完成pwmconfig设置并运行fancontrol服务,风扇行为也不会发生改变。

它在 psensor 中的样子如下: 在此处输入图片描述

答案1

更新 BIOS 并没有解决我的风扇问题。

但是,它会永久降低处理器的性能,并且会剥夺某些处理器的降压能力。

以下是如何手动控制风扇并设置自定义风扇曲线的方法

我有一台配备 i7-9750H 和 RTX 2070MQ 的 Dell G5 5590。我正在运行 Pop_OS 20.10,它是 Ubuntu 的一个变体,并使用 systemd。

据我所知,BIOS 更新(至少在 1.10 之后,在此之前无法告知)主要是为了修复英特尔处理器架构的安全漏洞。“修复”需要以永久降低性能的方式限制处理器,降级非常困难且有风险(被戴尔阻止,需要生成自己的假 BIOS 负载才能绕过,并且可能导致指纹读取器无法再工作)。根据我按照上述答案和上述答案的评论以及其他链接从 1.10 升级到 1.14 的经验,它们也不会改变这台笔记本电脑的风扇/散热性能。

这是我的温度曲线,即使在最新的 bios 1.14 上以 800mhz 处于空闲状态: 在此处输入图片描述

如您在图片底部看到的,我的温度只是上下波动。在波动的顶部,风扇打开至“高”/全速 4700rpm,在底部,风扇关闭至 0rpm。非常烦人。与我在 bios 1.10 上遇到的情况相同。

后来更新:在这台笔记本电脑上,我的问题是通过 hdmi 和 miniDP 端口使用外接显示器——这样做会导致我的温度上升超过 40 摄氏度,无论是在 Linux 还是 Windows 下,这似乎是 nvidia 驱动程序的问题。通过 usb-c 连接到双 hdmi 集线器将我的外接显示器连接到双 hdmi 集线器,可以使我的电脑在干净启动后处于空闲状态,温度为 47c,没有风扇。

戴尔限制了风扇的使用,仅允许控制特定的预设,但您可以通过阅读以下链接在硬件上尽可能地访问它们:

(更新:戴尔似乎没有开源风扇控制,逆向工程工作收效甚微;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 文件。)

步骤 1:安装和设置

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

如果您遇到 i8k 无法工作的问题,您可以尝试以下操作:

sudo -i
echo "options i8k force=1"  >  /etc/modprobe.d/i8k.conf
echo i8k  >> /etc/modules
exit

如果您重新启动计算机,您可能会看到更好的结果。

如果您仍然遇到问题,您可以检查上面提到的链接并使用 modprobe 进行进一步挖掘。此链接也可能帮助指导你。

第 2 步:看看是否有效

为了真正使这个生效,我们需要启动服务,并且禁用风扇的 BIOS 控制,这显然非常危险。这样的处理器在 10 秒的高温活动中就会烧坏,无法修复,所以在这里要特别小心。

我的建议:

  1. 打开psensor或其他图形温度应用程序,以便您可以密切关注温度,如果发现温度上升到应有的水平,请立即采取行动。
  2. 测试并确保您可以通过运行dell-bios-fan-control 1(按照这里)。
  3. 您可以设置警报,当达到特定温度时psensor自动运行,以确保额外的安全。dell-bios-fan-control 1
  4. 如果您看到温度上升,并且在运行该命令时没有听到风扇启动的声音,请准备好快速关闭电源。我注意到在这台笔记本电脑上,按住电源按钮进行硬关机非常慢,因此为了安全起见,您应该将操作系统电源按钮设置更新为“关机”而不是“睡眠”。(我认为您不会想运行,shutdown now因为那样不会足够快地消除 CPU 上的负载,但我不确定。)
  5. ctrl+ alt+ printscrn/(sysreq) +b可能是让内核立即硬重启的最快方法。可能还有更好的方法。

这可能有点过头了,但是……如果你有一台昂贵的笔记本电脑,那就做好准备吧。(不过,不要过于担心,因为有硬件安全开关可以关闭笔记本电脑,防止其过热。)

现在你已经准备好了,

sudo systemctl stop i8kmon.service 
sudo systemctl status i8kmon.service 

好的,我们现在要禁用 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.

步骤 3:设置风扇“曲线”

现在你需要设置风扇曲线。我们通过编辑此文件来实现:

sudo nano /etc/i8kmon.conf

现在,您必须根据计算机的热量特性编辑该文件。 根据需要参阅手册页和文档。 简而言之,其中的几行内容如下:

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}

您需要根据笔记本电脑的热特性调整这些值。我的特定机器不能低于 85 度,所以风扇必须一直开着,所以我的曲线会相应地进行调整。一旦我重新粘贴,我可能会再次更改它以获得安静的空闲状态。

(请注意,G5 5590 不支持第三阶段功率,仅支持最高第二阶段功率 - 不过,如果您不打算包含该行,请确保测试它不会破坏任何东西,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.    

注意:不要在这些命令的同一行上添加注释,只能在换行符上/之后添加注释。此外,设置的最大/最小温度应该重叠,最好至少重叠 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

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

(请注意,在 G5 中(我认为甚至在精密系列中也不支持,这很疯狂),不支持手动设置风扇转速,但我认为在 XPS 和 Alienware 系列中是支持的 - 但是,话虽如此,请不要省略这些行。程序将运行,但风扇永远不会旋转!)

这会告诉我们您在评论中看到了什么。我推测 Alienware 允许使用此功能,而从我简要阅读的内容来看,XPS 似乎也允许使用此功能——但是,戴尔人为地限制了除其顶级高端机器之外的所有产品的风扇——甚至其半高端 Precision 和 G5(不确定 G7 是否允许?)系列也不允许设置转速。戴尔,干得好。

第四步:粉丝即服务

现在,如果您过去曾关注过温度,您可以尝试进入配置文件并将其设置为您想要的任何级别,然后为 i8kmon 启用 systemd 服务。

sudo systemctl status i8kmon.service 
sudo systemctl enable i8kmon.service 
sudo systemctl start i8kmon.service 

现在,我们还需要添加一个 systemd 进程,以确保重启时 bios 不会再次接管。以下本指南,我们基本上会这样做:

sudo nano /lib/systemd/system/dell-bios-fan-control.service

粘贴此内容:

[Unit]
Description=Turn off bios control of fans

[Service]
Type=simple
ExecStart=/usr/bin/dell-bios-fan-control 0

[Install]
WantedBy=multi-user.target

然后

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

一切就绪。不过,我会继续重启电脑,确保它能按预期工作。观察 psensor 应该会告诉你它是否遵循了你的配置值。

如果这里有什么地方不起作用,请告诉我,我通过反复试验才弄明白,写这篇文章的方式真的很混乱。随着我对此的理解逐渐巩固,我会慢慢整理它。

一个明显的问题是,为了安全起见,在启动 i8k 服务时应该进行错误处理,如果启动失败则重新打开 bios 控制。

即使这样也不能保证;我注释掉了“风扇转速”行,因为默认文件表明它们是不必要的,可以探测,大概是自动的,而我的型号(G5 5590)不支持该功能。该服务似乎启动正常,但实际上无法激活风扇。因此,我还建议在另一个应用程序中使用另一个温度故障保护。如果/当我有时间这样做时,我会尝试更新本指南。

步骤 5:关机行为/双启动安全

如果您使用双启动,则在任何其他未添加手动风扇控制的发行版中,风扇都不会运转——因此,您会过热并崩溃。要改变这种情况,您应该添加一个反向过程,在关机时将控制权交还给 BIOS,如下所示:

sudo nano /lib/systemd/system/dell-bios-fan-control-reverse.service
[Unit]
Description=Turn fan control back over to bios at shutdown, in case of windows boot, or i8k >

[Service]
Type=oneshot
RemainAfterExit=true
ExecStop=/usr/bin/dell-bios-fan-control 1

[Install]
WantedBy=multi-user.target

然后

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

答案2

请从 BIOS 版本 1.11.1 更新至最新版本BIOS,1.12.0, 为您戴尔 G5 5590 笔记本电脑,以解决风扇问题,因为风扇的控制通过 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

答案3

我想我找到了解决方案,但是这个在我的笔记本电脑 DELL Latitude 上工作,看这里没有在 $etc/fancontrol 文档中定义

# Configuration file generated by pwmconfig, changes will be lost
INTERVAL=0000.1
DEVPATH=hwmon3= hwmon4=devices/pci0000:00/0000:00:03.0/0000:01:00.0
DEVNAME=hwmon3=dell_smm hwmon4=nouveau
FCTEMPS= hwmon3/pwm1=hwmon4/temp1_input
FCFANS= hwmon3/pwm1=
MINTEMP= hwmon3/pwm1=30
MAXTEMP= hwmon3/pwm1=60
MINSTART= hwmon3/pwm1=150
MINSTOP= hwmon3/pwm1=10
MAXPWM= hwmon3/pwm1=250

FCFANS 为空,我写的是 FCFANS= hwmon3/pwm1=1

这就是工作!

相关内容