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