调整 Nvidia GPU 的风扇曲线

调整 Nvidia GPU 的风扇曲线

因此,我试图弄清楚如何为我的 Gigabyte GTX 960 ITX 卡制作自定义风扇曲线。它的长度约为一半(对于我的小机箱而言),但这意味着它的散热器非常小,而 Nvidia 驱动程序无法正确补偿这一点。

我进行了大量谷歌搜索,但大多数答案由于某种原因并没有起到什么作用。

如何制作自定义风扇曲线?

答案1

我发现我的大部分答案在 Ubuntu 论坛上但给出的设置风扇速度的命令是错误的。我也自己写了 shell 脚本(我是菜鸟),所以请随意评论我做错了什么,只要你告诉我如何修复它 :) 我添加了过多的评论,以便不懂 bash 的人可以了解我在做什么。这仅适用于 1 个 GPU,并且需要修改多个 GPU。顺便说一句,我设置的风扇曲线是speed%=0.028*(degreesC^2)

设置

  1. 以 root 身份运行您选择的文件浏览器(就我而言sudo konqueror)。
  2. 转至/etc/X11所有组并允许其写访问(但保持窗口打开)。
  3. 打开 Nvidia X 服务器设置窗口(nvidia-settings在终端中)。
  4. 前往nvidia-settings 配置
  5. 点击保存当前配置然后在弹出的窗口中单击“保存”。
  6. 关闭Nvidia 设置并运行sudo nvidia-xconfig,然后再用--cool-bits=4
  7. 重启。

脚本

#!/bin/bash
# Put "sleep 30" here if you run it at start-up
# to make sure this starts after the Nvidia driver does.

fan="0"
gpu="0"
echo "GPU fan controller service started."
nvidia-settings -a "[gpu:$gpu]/GPUFanControlState=1" > /dev/null
check="$(nvidia-settings -a \"[fan:$fan]/GPUTargetFanSpeed=30\" | tr -d '[[:space:]]')"
working="Attribute'GPUTargetFanSpeed'($(hostname):0fan:$fan)assignedvalue30."

if [[ "$check" != "$working" ]]; then
    echo "error on fan speed assignment: $check"
    echo "Should be: $working"
    exit 1
fi
while true
do
    degreesC="$(nvidia-smi -i $gpu | grep -owEe '[0-9]+C')"
    fanSpeed=$(($degreesC ** 2))
    fanSpeed=$(($fanSpeed / 50))
    if [[ $fanSpeed -gt 100 ]]
    then
        fanSpeed=100
    fi
    nvidia-settings -a "[fan:$fan]/GPUTargetFanSpeed=$fanSpeed" > /dev/null
    sleep 8
done

我将来可能不会更新它,因为我将升级到 RX 480。

答案2

我为此编写了自己的脚本,这是我迄今为止见过的最好的脚本。我希望你们中的一些人能够贡献并改进我的代码。我的代码只需运行它就可以工作,并且应该能够支持 349.16 以下的旧版本。它还具有可调节的风扇曲线。

这是 github 链接: https://github.com/abc123me/Nvidia-Fancontrol

答案3

感谢提供脚本。我遇到了风扇控制器的问题,这会破坏硬件风扇控制(第二个风扇无法识别,第一个风扇开始疯狂旋转。)。软件控制在 Windows 上运行良好,所以我决定检查如何在 Ubuntu 上使用风扇曲线实现软件控制。

无论如何,我输入这些内容的原因是您在脚本中硬编码了计算机的名称(第 4 行:Bens-PC)。最好使用变量,并对脚本进行注释,这样人们就可以更容易地注意到它。

相关内容