Управление кулером в Ubuntu при помощи fancontrol
После покупки минисервера появилась необходимость контролировать обороты кулеров, чтобы убрать вообще издаваемый шум.
Для того чтобы это сделать необходимо поставить пакет 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
FCFANS: устройство ввода текущей скорости кулера. Например: hwmon0/device/pwm1=hwmon0/device/fan1_input. Здесь мы описываем что за температуру pwm1 отвечают обороты fan1_input.
MINSTART: значение PWM при котором кулер запускается вновь, должно быть немного выше MINSTOP.
И посмотреть используя sensors какие сейчас обороты и какая температура.
Управление кулером в системе Linux
Оборудование
Эта функциональность зависит как от вашего оборудования, так и от программного обеспечения. Если ваше оборудование не поддерживает управление скоростью вращения вентилятора или не отображает их в ОС, очень вероятно, что вы не сможете использовать это решение. Если это так, но программное обеспечение (как ядро) не знает, как его контролировать, вам не повезло.
Но, если все в порядке то мы может приступить к тому, чтобы рассказать вам как управлять кулером в Linux.
Установка LM-Sensors
Или с помощью команды для установки LM-Sensors в системе Ubuntu или Debian:
sudo apt-get install lm-sensors
sudo yim installlm-sensors
Для Gentoo нужно использовать эту команду:
sudo emerge -av lm-sensors
Настройка lm-sensors
Управление кулером в Linux является очень простым. Но, перед эти нужно правильно установить и настроить программное обеспечение.
- В терминальных типах датчики sudo — обнаруживают и отвечают ДА всем YES / no questions.
- В конце обнаружения датчиков отобразится список модулей, которые необходимо загрузить.
Введите «Yes», чтобы обнаружить датчики, вставить эти модули в / etc / modules или отредактировать / etc / modules самостоятельно.
Запустите sudo service module-init-tools restart. Это действие прочитает изменения, внесенные вами в / etc / modules на шаге 3, и вставьте новые модули в ядро.
Примечание. Если вы используете Ubuntu 13.04 или выше, эта команда 3-го шага должна быть заменена запуском sudo service kmod start.
Установка Fancontrol
Управление оборотами вентилятора вашего кулера происходит с помощью специальной программы. Эта программа очень просто устанавливается. Делается это также через командную строку как и в способе выше. Чтобы установить программу для операционной системы Ubuntu или Debian, нужно использовать эту команду:
sudo apt-get install fancontrol
Настройка Fancontrol
В терминале типа sudo pwmconfig. Этот скрипт остановит каждый вентилятор в течение 5 секунд, чтобы узнать, какие вентиляторы можно контролировать, с помощью ручного управления PWM. После того, как скрипт будет проходить через все вентиляторы, вы можете настроить, какой вентилятор соответствует температуре.
В моем случае я установил интервал до 2 секунд. Если говорить про управление кулером в Linux то можно отметить автозапуск настроек. Об этом мы поговорим в следующем пункте нашего руководства.
Настройка службы fancontrol
Запустите sudo service fancontrol start. Это также приведет к автоматическому запуску службы fancontrol при запуске системы. Это сделает управление кулером в Linux полностью автоматизированным после указанных настроек.
Ручное управление оборотами кулера
Если вы хотите организовать управление оборотами кулера через терминал вручную, каждый раз вводя команду — то, мы расскажем как это сделать. Для начала введите команду для отключения Fancontrol:
sudo systemctl stop fancontrol
Далее просмартиваем список доступных устройств и выбираем нужное:
$ ls /sys/class/hwmon/hwmon1/device/ | grep pwm
Здесь будет значение pwm1 или pwm2 — это файлы кулеров. Далее, нужно разрешить ручное управление вентилятором Linux, например для pwm2:
root $ echo 1 >>/sys/class/hwmon/hwmon1/device/pwm2_enable
Включаем кулер на всю мощь с помощью этой команды:
root $ echo 255 >> /sys/class/hwmon/hwmon1/device/pwm2
а теперь давайте сведем обороты в стандартный режим:
root $ echo 2 >> /sys/class/hwmon/hwmon1/device/pwm1
Управление кулером в Linux является очень простым. Мы рассказали как это можно сделать с помощью программ самостоятельно через терминал. Но, если у вас есть вопросы — задавайте их в комментарии. Перед написание обязательно укажите каким дистрибутивом вы пользуетесь.