Ajustando a Curva de Ventilador da GPU Nvidia

3

Então, eu estava tentando descobrir como fazer uma curva de fãs personalizada para minha placa Gigabyte GTX 960 ITX. É cerca de metade do comprimento (para o meu caso pequeno), mas isso significa que ele tem um dissipador de calor muito pequeno, e o driver da Nvidia não estava compensando adequadamente isso.

Eu fiz um monte de googling, e a maioria das respostas realmente não funcionou por algum motivo.

Como posso fazer uma curva de fãs personalizada?

    
por Ben 02.05.2016 / 00:32

3 respostas

5

Eu encontrei a maior parte da minha resposta nos fóruns do Ubuntu , mas o comando para definir a velocidade do ventilador estava errado . Eu também escrevi o script shell (e eu sou um noob), então sinta-se livre para comentar como eu fiz tudo errado, contanto que você me diga como consertá-lo :) Eu adicionei comentários excessivos para pessoas que não entendem O bash pode ter uma ideia do que estou fazendo. Isso só funciona para 1 GPU e precisará de modificações para vários. A propósito, a curva do ventilador que eu defini é speed%=0.028*(degreesC^2) .

Configuração

  1. Execute o seu navegador de arquivos escolhido como raiz (no meu caso, sudo konqueror ).
  2. Acesse /etc/X11 e permita acesso de gravação a todos os grupos (mas mantenha a janela aberta).
  3. Abra a janela de configurações do servidor Nvidia X ( nvidia-settings no terminal).
  4. Vá para a configuração nvidia-settings .
  5. Clique em Salvar configuração atual e clique em salvar na janela pop-up.
  6. Feche Configurações da Nvidia e execute sudo nvidia-xconfig , depois novamente com --cool-bits=4 .
  7. Reinicie.

Script

#!/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

Eu provavelmente não atualizarei isso no futuro, já que atualizarei para um RX 480.

    
por Ben 02.05.2016 / 00:32
2

Eu fiz meu próprio roteiro para isso e é o melhor que vi até agora. Espero que alguns de vocês contribuam e melhorem meu código. O meu funciona apenas executando-o e deve ser capaz de suportar versões mais antigas em 349.16. Também possui uma curva de ventilador ajustável.

Aqui está o link do github: link

    
por Jeremiah 10.10.2018 / 03:02
0

Obrigado pelo script. Eu estou tendo problemas com um dos controladores do ventilador, o que freia controle de ventilador de hardware (Segundo fã não é reconhecido, primeiro começa a girar como um louco.). O controle de software funciona bem no Windows, então decidi verificar como implementar o controle de software com a curva do ventilador no Ubuntu.

De qualquer forma, a razão pela qual estou digitando isso é porque você codificou com firmeza o nome do seu computador no script (Linha 4: Bens-PC). Seria melhor usar uma variável e comentar o script para que as pessoas possam perceber isso mais facilmente.

    
por Denis 04.09.2016 / 12:36