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て実行すると、下の写真のように GUIsudo modprobe i8k force=1でファンの速度を確認できるようになりました。psensor
  • ここで説明されているようにインストールし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 を使用しています。Ubuntu の派生版で、systemd を使用する Pop_OS 20.10 を実行しています。

私の知る限り、BIOS のアップデート (少なくとも 1.10 以降、それより前はわかりません) は、主に Intel プロセッサ アーキテクチャのセキュリティ上の欠陥を修正するためのものでした。この「修正」では、プロセッサにハンディキャップを課してパフォーマンスを恒久的に低下させる必要があり、ダウングレードはかなり困難でリスクがあります (Dell によってブロックされ、回避するには独自の偽の BIOS ペイロードを生成する必要があり、指紋リーダーが二度と機能しなくなる可能性があります)。また、上記の回答と、上記の回答に対するコメント、およびその他のリンクに従って 1.10 から 1.14 にアップグレードした私の経験からすると、このラップトップのファン/熱プロファイルは変更されません。

以下は、最新の BIOS 1.14 で 800 MHz でアイドル時でも温度曲線です。 ここに画像の説明を入力してください

画像の下部でわかるように、温度が上下に振れています。振れの頂点ではファンがオンになり、「高」/全速力の 4700 rpm になり、底部ではファンがオフになり 0 rpm になります。非常にイライラします。これは、BIOS 1.10 で経験したこととまったく同じです。

後日の更新: このラップトップで、HDMI および miniDP ポート経由で外部モニターを使用すると問題が発生しました。これを行うと、Linux と Windows の両方で温度が文字通り 40 度以上も高くなります。これは、NVIDIA ドライバーの問題のようです。代わりに、USB-C からデュアル HDMI ハブ経由で外部モニターを接続すると、クリーン ブート後のアイドル状態で、コンピューターはファンがオンになっていない状態で 47 度で動作します。

Dell はファンを制限し、特定のプリセットのみの制御を許可していますが、次のリンクを参照することで、ハードウェア上で可能な限りファンにアクセスできます。

(更新: Dell はファン制御をオープンソース化していないようで、リバース エンジニアリング作業の成功は限られています。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. テストして、BIOSコントロールにすぐに戻れることを確認してくださいdell-bios-fan-control 1ここ)。
  3. 安全性を高めるために、特定の温度に達したときにpsensor自動的にアラームが作動するように設定できます。dell-bios-fan-control 1
  4. このコマンドを実行しても温度が上昇し、ファンが作動する音が聞こえない場合は、すぐに電源を切る準備をしてください。このラップトップでは、電源ボタンを押したまま強制的にシャットダウンすると非常に時間がかかることに気付きました。そのため、安全のために、OS の電源ボタン設定を「スリープ」ではなく「シャットダウン」に更新する必要があります。( shutdown nowCPU の負荷を十分に速く減らすことができないため、実行したくないと思いますが、確信はありません。)
  5. ctrl+ alt+ printscrn/(sysreq) + はbカーネルをただちにハードリブートさせる最も速い方法かもしれません。もっと良い方法があるかもしれません。

おそらくこれはやりすぎでしょうが...高価なノートパソコンをお持ちの場合は、準備だけはしておいてください。(ただし、過熱からノートパソコンを保護するために電源をオフにするハードウェア安全スイッチがあるので、心配する必要はありません。)

準備ができましたので、

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

わかりました。BIOS コントロールを無効にします。ファンは静かになるはずです。その後すぐにファンをオンにして、1実際に使用できるファン設定の数をテストし、これが機能していることを確認します。

これらのコマンドを 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 はパワーステージ 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 度程度は重複している必要があります。理由がわからない場合は、man ページを参照してください。

# 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 では (Precision シリーズでもそうではないと思いますが、これはおかしいです)、ファン RPM を手動で設定することはサポートされていませんが、XPS シリーズと Alienware シリーズではサポートされていると思います。ただし、これらの行を省略しないでください。プログラムは実行されますが、ファンは回転しません。)

ここでのコメントで何がわかるか教えてください。Alienware のものはこの機能を許可していると思いますし、私がざっと読んだところによると XPS も許可しているようです。しかし、Dell は最高級のプレミアム マシン以外のすべての製品でファンを不利な立場に追い込んでいます。準プレミアムの Precision や G5 (G7 についてはよくわかりません) のラインでも rpm 設定は許可されていません。Dell さん、素晴らしいです。

ステップ4: サービスとしてのファン

これまで温度に注意を払ってきた場合は、設定ファイルを開いて温度を任意のレベルに設定し、i8kmon の systemd サービスをオンにしてみてください。

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

ここで、再起動時にBIOSが再び制御を引き継がないようにするために、systemdプロセスも追加する必要があります。このガイド基本的には次のようになります:

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、 あなたのためのDell G5 5590 ノートパソコンファンの問題を解決するには、BIOS で調整できるコントロールがまだないにもかかわらず、ファンの制御は BIOS を介して行われるためです。

後者の主張は、この件について Web 検索して見つけた最初の 3 つの投稿に基づいています。これらの投稿では、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/DELL-G5-5590 のファン速度が遅い

答え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と書きました。

そしてそれは仕事です!!

関連情報