Регулировка кривой вентилятора графического процессора Nvidia

Поэтому я пытался выяснить, как сделать собственную кривую вентилятора для моей карты Gigabyte GTX 960 ITX. Это примерно половина длины (для моего маленького случая), но это означает, что у него очень маленький радиатор, и драйвер Nvidia не компенсировал это должным образом.

Я занимался поиском, и большинство ответов почему-то не сработало.

Как я могу сделать собственную кривую веер?

3 ответа

Решение

Я нашел большую часть своего ответа на форумах Ubuntu, но команда для установки скорости вращения вентилятора была неверной. Я также сам написал скрипт оболочки (и я нуб), поэтому не стесняйтесь комментировать, как я все сделал неправильно, если вы скажете мне, как это исправить:) Я добавил излишние комментарии, чтобы люди, которые не понимают Баш может понять, что я делаю. Это работает только для 1 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.

Я сделал свой собственный сценарий для этого, и это лучшее, что я когда-либо видел. Я надеюсь, что некоторые из вас внесут свой вклад и улучшат мой код. Мой работает, просто запустив его, и должен поддерживать более старые версии под 349.16. Он также имеет регулируемую кривую вентилятора.

Вот ссылка на github: https://github.com/abc123me/Nvidia-Fancontrol

Спасибо за сценарий. У меня проблемы с одним из контроллеров вентилятора, который тормозит аппаратное управление вентилятором (второй вентилятор не распознается, первый начинает вращаться как сумасшедший). Программный контроль хорошо работает в Windows, поэтому я решил проверить, как реализовать программный контроль с помощью кривой вентилятора в Ubuntu.

В любом случае, я набираю это потому, что вы жестко запрограммировали имя вашего компьютера в сценарии (строка 4: Bens-PC). Было бы лучше использовать переменную и прокомментировать сценарий, чтобы люди могли легче заметить это.

Другие вопросы по тегам