Отправляет email-рассылки с помощью сервиса Sendsay

Linux Open Source Software Technologies

  Все выпуски  

Linux Open Source Software Technologies Управление кулером в Linux


Сидите вы сейчас смотрите на эти строки и слышите равномерный, в меру громкий шум кулера. По любому слышите, иначе вас бы не заинтересовала эта статья. На самом деле громкая работа кулера в Linux довольно частая проблема недавно перешедших с Windows пользователей. А ведь он не должен так шуметь. В Windows обороты вентилятора и многие другие параметры управляются автоматически в зависимости от нагрузки на систему и следовательно температуры оборудования, здесь же из коробки вентилятор всегда крутиться на полную мощность, не зависимо от того играете вы тяжелую игрушку, компилируете программу или просто серфите в интернете. Это нужно исправлять. В этой инструкции мы рассмотрим управление кулером в Linux и настройку автоматической регуляции оборотов в зависимости от температуры.

Подготовка системы

Чтобы правильно управлять и ничего не спалить, ну на самом деле и ничего не сгорит, компьютер просто уйдет в перезагрузку, но все же… нам нужно знать температуру оборудования в данный момент. Для снятия показаний со всяких датчиков на материнской плате используется набор программ lm_sensors.

Установка lm_sensors

Это можно сказать системный компонент, поэтому он есть в репозиториях всех дистрибутивов.

Для Ubuntu или Debian команда установки выглядит следующим образом:

$ sudo apt-get install lm-sensors

Для Fedora и RHEL:

$ sudo yim installlm-sensors

Для Gentoo:

$ sudo emerge -av lm-sensors

Также для Gentoo в ядре необходимо будет включить следующие функции:

Device Drivers —>
-*- I2C support —>
<*> I2C device interface
<*> Hardware Monitoring support —>
//вообще говоря лучше включить все драйвера оборудования а потом посмотреть какие загрузятся и отключить ненужные.
[M] Intel Core/Core2/Atom temperature sensor (coretemp)

Также не забудьте пересобрать все пакеты с флагом lm_sensors

Настройка lm_sensors

Теперь нам нужно найти и записать информацию о всех доступных сенсорах, для этого выполните:

$ sudo sensors-detect
# sensors-detect revision 6170 (2013-05-20 21:25:22 +0200)
# Board: ASUSTeK Computer

This program will help you determine which kernel modules you need
to load to use lm_sensors most effectively. It is generally safe
and recommended to accept the default answers to all questions,
unless you know what you’re doing.

После запуска команды нужно будет последовательно нажимать y, чтобы подтвердить сканирование следующей группы устройств, затем Enter:

Now follows a summary of the probes I have just done.
Just press ENTER to continue:

А потом опять y для сохранения собранной конфигурации в файл:

o you want to overwrite /etc/conf.d/lm_sensors? Enter s to specify other file name?
(yes/NO/s):

Далее добавляем сервис в автозагрузку:

$ sudo rc-update add lm_sensors default

Запускаем:

$ sudo /etc/init.d/lm_sensors start

Уже можем посмотреть показания сенсоров:

$ sensors

Здесь показаны не только температура, но и обороты кулера а также напряжение. Но это не главное, у нас есть инфа и мы можем переходить к следующему пункту.

Управление кулером в Linux

Для управления оборотами кулера нам понадобиться сервис fancontrol. Устанавливается он командой:

В Ubuntu:

$ sudo apt-get install fancontrol

В RedHalt:

$ sudo yum install fancontrol

После установки переходим к настройке автоматического регулирования оборотов кулера. Сначала нужно программно связать каждый кулер с соответствующим ему датчиком температуры, и настроить допустимый уровень температур. Для этого выполните:

$ sudo pwmconfig
# pwmconfig revision 6166 (2013-05-01)
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.

Сначала программа покажет доступные драйверы кулеров:

Found the following fan sensors:
hwmon1/device/fan1_input current speed: 3292 RPM
hwmon1/device/fan2_input current speed: 0 … skipping!
hwmon1/device/fan3_input current speed: 0 … skipping!

Warning!!! This program will stop your fans, one at a time,
for approximately 5 seconds each!!!
This may cause your processor temperature to rise!!!
If you do not want to do this hit control-C now!!!
Hit return to continue:

Здесь вы видите предупреждение о том что кулеры будут отключены на некоторое время (5 секунд), как прочитаете нажмите Enter. Дальше будет выполнено тестирование доступных скоростей кулера:

Testing pwm control hwmon1/device/pwm1 …
hwmon1/device/fan1_input … speed was 3292 now 1051
It appears that fan hwmon1/device/fan1_input
is controlled by pwm hwmon1/device/pwm1
Would you like to generate a detailed correlation (y)? y
Note: If you had gnuplot installed, I could generate a graphical plot.
PWM 255 FAN 3276
PWM 240 FAN 3169
PWM 225 FAN 3026

Дальше настроим максимальную, минимальную и рабочую температуры, сначала выберите кулер, например 1:

Select fan output to configure, or other action:
1) hwmon1/device/pwm3 3) Change INTERVAL 5) Save and quit
2) hwmon1/device/pwm1 4) Just quit 6) Show configuration

select (1-n): 1

Теперь выберите датчик температуры для этого кулера:

Devices:
hwmon0 is k10temp
hwmon1/device is it8712

Current temperature readings are as follows:
hwmon0/temp1_input 37
hwmon1/device/temp1_input 47
hwmon1/device/temp2_input 40
hwmon1/device/temp3_input -128

Select a temperature sensor as source for hwmon1/device/pwm3:

1) hwmon0/temp1_input
2) hwmon1/device/temp1_input
3) hwmon1/device/temp2_input
4) hwmon1/device/temp3_input
5) None (Do not affect this PWM output)

select (1-n): 1

Теперь укажите температуру при которой кулер будет вращаться на минимальной скорости:

Enter the low temperature (degree C)
below which the fan should spin at minimum speed (20): 45

Затем температуру при которой нужно переходить на максимальные обороты:

Enter the high temperature (degree C)
over which the fan should spin at maximum speed (60): 60

Далее нужно указать минимальное значение оборотов pwm, можно узнать нажав кнопку t

Enter the minimum PWM value (0-255)
at which the fan STOPS spinning (press t to test) (100):2

Какое значение pwm использовать если температура превышает минимальную, по сути это рабочие обороты:

Enter the PWM value (0-2) to use when the temperature
is below the low temperature limit 100

Какое значение использовать при превышении максимальной температуры:

Enter the PWM value (2-255) to use when the temperature
is over the high temperature limit (255): 255

Готово теперь, отсается настроить таким же образом другие кулеры, если у вас их несколько и можно сохранять:

Select fan output to configure, or other action:
1) hwmon1/device/pwm3 3) Change INTERVAL 5) Save and quit
2) hwmon1/device/pwm1 4) Just quit 6) Show configuration
select (1-n): 5

Сохранить и выйти под номером 5.

Добавляем fancontrol в автозагрузку:

$ sudo rc-update add fancontrol default

и стартуем:

$ sudo /etc/init.d/fancontrol start

Чувствуете? тишина… теперь fancontrol управляет вашими кулерами и шума без надобности больше не будет.

Ручное управление оборотами кулера

Меня всегда интересовало как вручную выключить кулер. Сразу забегая на перед скажу что ничего не сгорит, температура просто будет плавно расти. И так если запущен fancontrol останавливаем, чтобы не мешал:

$ sudo /etc/init.d/fancontrol stop

Смотрим доступные устройства:

$ ls /sys/class/hwmon/hwmon1/device/ | grep pwm

Здесь pwm1, pwm2.. это файлы кулеров. Разрешаем ручное управление, например для pwm1:

root $ echo 1 >>/sys/class/hwmon/hwmon1/device/pwm1_enable

Включаем на полную:

root $ echo 255 >> /sys/class/hwmon/hwmon1/device/pwm1

А теперь на минимум:

root $ echo 0 >> /sys/class/hwmon/hwmon1/device/pwm1

 

Здесь можно оставить свои комментарии. Выпуск подготовленплагином wordpress для subscribe.ru


В избранное