
我有一台配備 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
,現在我可以在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)
另外,即使我完成pwmconfig
設定並運行fancontrol
服務,風扇行為也沒有變化。
答案1
更新 BIOS 並沒有解決我的粉絲行為。
不過,它會永久降低處理器的效能,並且對某些處理器來說會失去降壓能力。
以下是如何手動控制風扇並設定自訂風扇曲線
我有一台 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檔。
第 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 秒的高溫活動中自行燒毀而無法修復,因此請務必小心。
我的建議:
- 打開
psensor
或其他一些圖形溫度應用程序,以便您可以密切關注溫度,並準備好在發現溫度上升高於應有水平時採取行動。 - 測試並確保您可以透過運行立即返回 BIOS 控制
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
好的,我們現在要停用 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.
第三步:設定風扇“曲線”
現在您需要設定風扇曲線。我們透過編輯此文件來做到這一點:
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 不支援功率級 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.
注意:請勿在與這些命令相同的行上新增註釋,僅在換行符上/之後新增註釋。另外,最大/最小溫度設定應該重疊,最好至少 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 中(我認為甚至在精密系列中也不支持,這太瘋狂了),不支持手動設置風扇 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
現在,我們還需要新增一個 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 Look here 未在 $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
這就是工作!