Есть у меня AGP карточка GF 6600 GT у которой жутко шумит кулер. Решено исправить.
Метод 1:
$ nvclock --fanspeed auto -f
К сожалению на эту команда программа ругнулась и сказала, что эта карта не поддерживает такую фичу:
Error: This card doesn't support automatic fanspeed adjustments.
поэтому идём дальше,
Метод 2:
скрипт запускать можно после старта X/DE:
$ cat auto_fan.pl
#!/usr/bin/perl
use strict;
use warnings;
my $nextDown = time();
while(1) {
my ($tempGPU, $speedFan) = (qx(nvclock -i) =~ /GPU temperature: (\d+)C.*Fanspeed: (\d+)/s);
my $newSpeed = $tempGPU * 2 - 100;
$newSpeed = 20 if($newSpeed < 20);
$newSpeed = 100 if($newSpeed > 100);
# print "GPU: $tempGPU°C Board: $tempBoard°C OldFan: $speedFan% NewFan: $newSpeed\n";
if($speedFan < $newSpeed) {
system("nvclock -F $newSpeed -f > /dev/null");
} else {
if($nextDown < time()) {
system("nvclock -F $newSpeed -f > /dev/null");
$nextDown = time()+30;
}
}
sleep(2);
}
Метод 3 (переписанный предыдущий вариант):
скрипт вешается на cron
crontab -e
*/1 * * * * nice -n 18 /home/stan/bin/auto_nvidia_fan.py
$ cat auto_nvidia_fan.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
import os
command_result = os.popen("nvclock -i | grep 'Fanspeed\|GPU temperature'")
result = []
for row in command_result:
result.append(row)
tempGPU = result[0].replace('GPU temperature: ', '').replace('C\n', '')
speedFan = result[1].replace('Fanspeed: ', '').replace('%\n', '')
newSpeed = int(tempGPU) * 2 - 90
if newSpeed < 20:
newSpeed = 20
if newSpeed > 100:
newSpeed = 100
if newSpeed != int(round(float(speedFan))):
os.system('nvclock -F ' + str(newSpeed) + ' -f > /dev/null')
nice -n 18 означает запуск с пониженным приоритетом, иначе может в играх притормаживать.
3-й вариант я написал для того чтобы проверить быстрее ли он будет работать, чем perl скрипт и чтоб потренироваться в python, в итоге его и использую