2010
01.04

После покупки минисервера появилась необходимость контролировать обороты кулеров, чтобы убрать вообще издаваемый шум.

Для того чтобы это сделать необходимо поставить пакет lm-sensors.
apt-get install lm-sensors

В папке /etc/init.d/ появляется новый скрипт fancontrol который периодически опрашивает датчики и если необходимо меняет обороты.

Для получения данных об оборотах куллеров необходимо  выполнить комманду:

root@vovanys:~# sensors
it8718-isa-0290
Adapter: ISA adapter
in0: +1.17 V (min = +0.00 V, max = +4.08 V)
in1: +1.82 V (min = +0.00 V, max = +4.08 V)
in2: +3.39 V (min = +0.00 V, max = +4.08 V)
in3: +4.08 V (min = +0.00 V, max = +4.08 V) ALARM
in4: +3.15 V (min = +0.00 V, max = +4.08 V)
in5: +0.03 V (min = +0.00 V, max = +4.08 V)
in6: +1.23 V (min = +0.00 V, max = +4.08 V)
in7: +4.08 V (min = +0.00 V, max = +4.08 V) ALARM
in8: +4.08 V
fan1: 537 RPM (min = 0 RPM)
fan2: 891 RPM (min = 0 RPM)
fan3: 0 RPM (min = 0 RPM)
temp1: -53.0°C (low = +127.0°C, high = +127.0°C) sensor = thermistor
temp2: -2.0°C (low = +127.0°C, high = +127.0°C) sensor = thermistor
temp3: +20.0°C (low = +127.0°C, high = +90.0°C) sensor = thermal diode
cpu0_vid: +0.000 V
coretemp-isa-0000
Adapter: ISA adapter
Core 0: +47.0°C (high = +86.0°C, crit = +100.0°C)
coretemp-isa-0001
Adapter: ISA adapter
Core 1: +47.0°C (high = +86.0°C, crit = +100.0°C)

Fan1: обороты кулера  процессора.

Fan2: обороты внешнего кулера, который подключается отдельно (у меня отдельно подключена 120-тка)

Для управления используются файлы /sys/class/hwmon/hwmon0/device/fan1_input и /sys/class/hwmon/hwmon0/device/fan2_input

Взависимости от числа записанного в файле меняется скорость вращения (и шума) кулера.

Для того чтобы включить кулер на «полную» можно сделать так:
echo "255" > /sys/class/hwmon/hwmon0/device/fan1_input

Чтобы у знать какое число отвечает за какие обороты необходимо выполнить команду pwmconfig

При запуске команды запустится утилита которая выдаст список оборотов и число которое необходимо посылать в файл /sys/class/hwmon/hwmon0/device/fan1_input, такого плана:
hwmon0/device/pwm1
PWM 255 FAN 1713
PWM 240 FAN 1713
PWM 225 FAN 1642
PWM 210 FAN 1527
PWM 195 FAN 1400
PWM 180 FAN 1285
PWM 165 FAN 1153
PWM 150 FAN 1036
PWM 135 FAN 902
PWM 120 FAN 784
PWM 105 FAN 829
PWM 90 FAN 1106
PWM 75 FAN 0
Fan Stopped at PWM = 75

Как показывает вывод самые большие обороты у кулера при значении 255, а если передать что-то ниже 75 кулер остановится вообще.

Теперь необходимо настроить файл которые отвечает за обороты и температуру (взаимосвязь температура = обороты)  /etc/fancontrol :

У меня он имеет вид:
INTERVAL=3
FCTEMPS=hwmon0/device/pwm1=/sys/bus/platform/drivers/coretemp/coretemp.0/temp1_input hwmon0/device/pwm3=/sys/bus/platform/drivers/coretemp/coretemp.0/temp1_input
FCFANS= hwmon0/device/pwm1=hwmon0/device/fan1_input hwmon0/device/pwm3=hwmon0/device/fan2_input
MINTEMP=hwmon0/device/pwm1=30 hwmon0/device/pwm3=30
MAXTEMP=hwmon0/device/pwm1=60 hwmon0/device/pwm3=60
MINSTART=hwmon0/device/pwm1=120 hwmon0/device/pwm3=120
MINSTOP=hwmon0/device/pwm1=75 hwmon0/device/pwm3=0

INTERVAL: частота (в секундах) опроса датчиков температуры.
FCTEMPS: устройство ввода температуры процессора.
FCFANS: устройство ввода текущей скорости кулера. Например: hwmon0/device/pwm1=hwmon0/device/fan1_input. Здесь мы описываем что за температуру pwm1 отвечают обороты fan1_input.
MINTEMP: температура (°C) при которой нужно ВЫКЛЮЧАТЬ кулер на процессоре.
MAXTEMP: температура (°C) при которой кулер надо включать на МАКСИМАЛЬНУЮ скорость.
MINSTOP: значение PWM при котором останавливается кулер.
MINSTART: значение PWM при котором кулер запускается вновь, должно быть немного выше MINSTOP.
Если используется несколько кулеров то параметры необходимо писать через пробел.
После того как файл сохранен необходимо запустить fancontrol:

/etc/init.d/fancontrol start

И посмотреть используя sensors какие сейчас обороты и какая температура.

7 комментариев

Add Your Comment
  1. А если у меня так:
    PWM 255 FAN 2678
    PWM 240 FAN 2636
    PWM 225 FAN 2410
    PWM 210 FAN 2250
    PWM 195 FAN 2033
    PWM 180 FAN 1795
    PWM 165 FAN 1795
    PWM 150 FAN 1534
    PWM 135 FAN 1250
    PWM 120 FAN 1048
    PWM 105 FAN 1028
    PWM 90 FAN 1028
    PWM 75 FAN 1022
    PWM 60 FAN 1022
    PWM 45 FAN 1028
    PWM 30 FAN 1068
    PWM 28 FAN 1074
    PWM 26 FAN 1074
    PWM 24 FAN 1074
    PWM 22 FAN 1088
    PWM 20 FAN 1095
    PWM 18 FAN 1102
    PWM 16 FAN 1102
    PWM 14 FAN 1110
    PWM 12 FAN 1117
    PWM 10 FAN 1125
    PWM 8 FAN 1132
    PWM 6 FAN 1140
    PWM 4 FAN 1147
    PWM 2 FAN 1147
    PWM 0 FAN 1147
    А я хочу, что бы он всетаки отключался при minstop

  2. Vista была такая тоже хрень, поищи в биосе, он не дает программно его отключить

  3. Вот такая гадость
    sudo pwmconfig
    # pwmconfig revision 5770 (2009-09-16)
    This program will search your sensors for pulse width modulation (pwm)
    controls, and test each one to see if it controls a fan on
    your motherboard. Note that many motherboards do not have pwm
    circuitry installed, even if your sensor chip supports pwm.

    We will attempt to briefly stop each fan using the pwm controls.
    The program will attempt to restore each fan to full speed
    after testing. However, it is ** very important ** that you
    physically verify that the fans have been to full speed
    after the program has completed.

    /usr/sbin/pwmconfig: There are no pwm-capable sensor modules installed
    и
    sudo echo «2505» > /sys/class/hwmon/hwmon0/device/hwmon/hwmon0/fan2_input
    bash: /sys/class/hwmon/hwmon0/device/hwmon/hwmon0/fan2_input: Отказано в доступе
    что можно сделать?

  4. А, и еще, у меня нет такого файла по этому пути
    FCTEMPS=hwmon0/device/pwm1=/sys/bus/platform/drivers/coretemp/coretemp.0/temp1_input
    что нужно искать, может он в другой директории?
    ОС Linux Mint 10

  5. There are no pwm-capable sensor modules installed
    Либо на мамке что-то не поддерживает (физически), либо что-то не доустановил…

  6. Спасибо! Разобрался, изрядно погуглив)))). Вот что нашел, если кому интересна аналогичная трабла
    Пост с ветки форума:-http://unixforum_точека_org/index.php?showtopic=129856
    «драйвер «тут_у_кого_какой» не грузился из-за конфликта с ACPI
    Добавил параметр к ядру в /etc/default/grub
    GRUB_CMDLINE_LINUX=»acpi_enforce_resources=lax»

    Теперь модуль грузится, сенсоры отображаются, и соответственно pwmconfig настраивается»

  7. Доброго времени суток!
    Когда запускаю sensors выдаёт:
    anton-System-Product-Name anton # sensors
    radeon-pci-0200
    Adapter: PCI adapter
    temp1: +88.0°C
    it8712-isa-0290
    Adapter: ISA adapter
    in0: +1.06 V (min = +0.00 V, max = +4.08 V)
    in1: +4.08 V (min = +0.00 V, max = +4.08 V) ALARM
    in2: +3.23 V (min = +0.00 V, max = +4.08 V)
    +5V: +4.08 V (min = +0.00 V, max = +4.08 V) ALARM
    in4: +3.10 V (min = +0.00 V, max = +4.08 V)
    in5: +1.57 V (min = +0.00 V, max = +4.08 V)
    in6: +4.08 V (min = +0.00 V, max = +4.08 V) ALARM
    5VSB: +4.08 V (min = +0.00 V, max = +4.08 V) ALARM
    Vbat: +3.18 V
    fan1: 2303 RPM (min = 0 RPM)
    fan2: 0 RPM (min = 0 RPM)
    fan3: 0 RPM (min = 0 RPM)
    temp1: +42.0°C (low = -1.0°C, high = +127.0°C) sensor = thermistor
    temp2: +43.0°C (low = -1.0°C, high = +127.0°C) sensor = thermistor
    temp3: -128.0°C (low = -1.0°C, high = +127.0°C) sensor = disabled
    intrusion0: OK
    k10temp-pci-00c3
    Adapter: PCI adapter
    temp1: +30.6°C (high = +70.0°C)
    (crit = +115.5°C, hyst = +113.5°C)

    А затем при запуске pwmconfig
    появляются строки:

    Testing pwm control hwmon1/device/pwm1 …
    hwmon1/device/fan1_input … speed was 2303 now 2303
    no correlation

    No correlations were detected.
    There is either no fan connected to the output of hwmon1/device/pwm1,
    or the connected fan has no rpm-signal connected to one of
    the tested fan sensors. (Note: not all motherboards have
    the pwm outputs connected to the fan connectors,
    check out the hardware database on http://www.almico.com/forumindex.php)

    Моя материнская плата M3N78-VM поддерживает изменения куллера. Может дело в том, что
    temp3: -128.0°C (low = -1.0°C, high = +127.0°C) sensor = disabled ?

    Помогите, пожалуйста, разобраться!