Управление кулером Linux
Читаете, вы, сейчас эти строки и слышите равномерный, в меру громкий шум кулера. Однозначно слышите, иначе вас бы не заинтересовала эта статья. На самом деле громкая работа кулера в Linux довольно частая проблема недавно перешедших с Windows-пользователей. А ведь он не должен так шуметь.
В Windows, обороты вентилятора и многие другие параметры управляются автоматически в зависимости от нагрузки на систему и следовательно температуры оборудования, здесь же из коробки вентилятор всегда крутится на полную мощность, независимо от того, играете вы тяжелую игру, компилируете программу или просто просматриваете интернет страницы. Это нужно исправлять. В этой инструкции мы рассмотрим управление кулером Linux и настройку автоматической регуляции оборотов в зависимости от температуры.
Подготовка системы
Чтобы правильно управлять и ничего не спалить, ну на самом деле и ничего не сгорит, компьютер просто уйдет в перезагрузку, но все же… нам нужно знать температуру оборудования в данный момент. Для снятия показаний со всяких датчиков на материнской плате используется набор программ lm_sensors. Сначала настроим lm_sensors затем управление кулером linux.
Установка lm_sensors
Это, можно сказать, системный компонент, поэтому он есть в репозиториях всех дистрибутивов.
Для Ubuntu или Debian команда установки выглядит следующим образом:
sudo apt install lm-sensors
sudo yum installlm-sensors
Также для Gentoo в ядре необходимо будет включить следующие функции:
Device Drivers —>
-*- I2C support —>
I2C device interface
Hardware Monitoring support —>
//вообще говоря, лучше включить все драйвера оборудования а потом посмотреть какие загрузятся и отключить ненужные.
[M] Intel Core/Core2/Atom temperature sensor (coretemp)
Не забудьте пересобрать все пакеты с флагом lm_sensors
Настройка lm_sensors
Теперь нам нужно найти и записать информацию обо всех доступных сенсорах, для этого выполните:
После запуска команды нужно будет последовательно нажимать y, чтобы подтвердить сканирование следующей группы устройств, затем Enter:
Now follows a summary of the probes I have just done.
Just press ENTER to continue:
А потом опять y для сохранения собранной конфигурации в файл:
Do you want to overwrite /etc/conf.d/lm_sensors? Enter s to specify other file name?
(yes/NO/s):
Далее, добавляем сервис в автозагрузку:
sudo systemctl enable lm-sensors
sudo systemctl start lm-sensors
Уже можем посмотреть показания сенсоров:
В зависимости от драйвера здесь показаны не только температура, но и обороты кулера, а также напряжение. Но это не главное, у нас есть информация и мы можем переходить к следующему пункту.
Управление кулером Linux
Управление оборотами вентилятора linux выполняется с помощью сервиса fancontrol. Для установки в Ubuntu:
sudo apt install fancontrol
sudo yum install fancontrol
После установки переходим к настройке автоматического регулирования оборотов кулера. Сначала нужно программно связать каждый кулер с соответствующим ему датчиком температуры, и настроить допустимый уровень температур. Для этого выполните:
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!
Здесь вы видите предупреждение о том что вентиляторы linux будут отключены на некоторое время (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
Теперь выберите датчик температуры для этого кулера:
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)
Теперь укажите температуру, при которой вентилятор linux будет вращаться на минимальной скорости:
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 systemctl enable fancontrol
sudo systemctl start fancontrol
Чувствуете? тишина… теперь fancontrol управляет вашими кулерами и шума без надобности больше не будет.
Ручное управление оборотами кулера
Меня всегда интересовало, как вручную выключить кулер. Сразу забегая на перед скажу, что ничего не сгорит, температура просто будет плавно расти. Если запущен fancontrol останавливаем, чтобы не мешал:
sudo systemctl stop fancontrol
Смотрим доступные устройства:
ls /sys/class/hwmon/hwmon1/device/ | grep pwm
Здесь pwm1, pwm2.. это файлы кулеров. Разрешаем ручное управление вентилятором linux, например, для pwm1:
echo 1 >>/sys/class/hwmon/hwmon1/device/pwm1_enable
echo 255 >> /sys/class/hwmon/hwmon1/device/pwm1
echo 0 >> /sys/class/hwmon/hwmon1/device/pwm1
Выводы
Теперь вы достаточно знаете и управление кулером не вызовет у вас проблем. Вы можете заставить свой компьютер или ноутбук не шуметь и не мешать вам спать ночью. В современных системах это вовсе может не понадобится, там кулером управляет UEFI и не допускает того чтобы он крутился быстрее, чем это необходимо. Если остались вопросы, пишите их в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Управление кулерами linux mint
изначальная цель — возможность отключить кулер когда ноут работает от батареи. но в идеале — полный ручной контроль над cpu fan. в гугле все что нашел ӕто root $ echo 1 >>/sys/class/hwmon/hwmon1/device/pwm1_enable и root $ echo 0 >> /sys/class/hwmon/hwmon1/device/pwm1 . но
f4dis@HP-250-G5:~$ root $ echo 1 >>/sys/class/hwmon/hwmon1/device/pwm1_enable
bash: /sys/class/hwmon/hwmon1/device/pwm1_enable: No such file or directory
в биосе управления оборотами, естественно, нет. есть только fan always on, и судя по описанию, при отключении ее, кулер должен включаться только при критической температуре на цпу. но как бы не так. по наблюдениям она вообще ничего не делает. железо —
f4dis@HP-250-G5:~$ inxi -Fxz
System:
Host: HP-250-G5 Kernel: 4.15.0-20-generic x86_64 bits: 64 compiler: gcc
v: 7.3.0 Desktop: Xfce 4.12.3 Distro: Linux Mint 19.1 Tessa
base: Ubuntu 18.04 bionic
Machine:
Type: Laptop System: HP product: HP 250 G5 Notebook PC
v: Type1ProductConfigId serial:
Mobo: HP model: 81F0 v: 63.38 serial: UEFI: Insyde v: F.21
date: 10/27/2016
CPU:
Topology: Dual Core model: Intel Core i3-5005U bits: 64 type: MT MCP
arch: Broadwell rev: 4 L2 cache: 3072 KiB
flags: lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx bogomips: 15962
Speed: 1243 MHz min/max: 500/1900 MHz Core speeds (MHz): 1: 1243 2: 1289
3: 1136 4: 1140
Graphics:
Device-1: Intel HD Graphics 5500 vendor: Hewlett-Packard driver: i915
v: kernel bus ID: 00:02.0
Device-2: AMD Sun XT [Radeon HD 8670A/8670M/8690M / R5 M330 / M430 / R7
M520]
vendor: Hewlett-Packard driver: N/A bus ID: 0d:00.0
Display: x11 server: X.Org 1.19.6 driver: modesetting unloaded: fbdev,vesa
resolution: 1920×1080~60Hz
OpenGL: renderer: Mesa DRI Intel HD Graphics 5500 (Broadwell GT2)
v: 4.5 Mesa 18.2.8 direct render: Yes
Audio:
Device-1: Intel Broadwell-U Audio vendor: Hewlett-Packard
driver: snd_hda_intel v: kernel bus ID: 00:03.0
Device-2: Intel Wildcat Point-LP High Definition Audio
vendor: Hewlett-Packard driver: snd_hda_intel v: kernel bus ID: 00:1b.0
Sound Server: ALSA v: k4.15.0-20-generic
Network:
Device-1: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet
vendor: Hewlett-Packard driver: r8169 v: 2.3LK-NAPI port: 5000
bus ID: 07:00.0
IF: enp7s0 state: down mac:
Device-2: Intel Wireless 3165 driver: iwlwifi v: kernel port: 4000
bus ID: 13:00.0
IF: wlp19s0 state: up mac:
Drives:
Local Storage: total: 465.76 GiB used: 235.01 GiB (50.5%)
ID-1: /dev/sda vendor: Toshiba model: MQ01ABF050 size: 465.76 GiB
temp: 34 C
Partition:
ID-1: / size: 36.15 GiB used: 25.77 GiB (71.3%) fs: ext4 dev: /dev/sda4
ID-2: swap-1 size: 4.65 GiB used: 0 KiB (0.0%) fs: swap dev: /dev/sda5
Sensors:
System Temperatures: cpu: 45.0 C mobo: N/A
Fan Speeds (RPM): N/A
Info:
Processes: 182 Uptime: 13m Memory: 3.77 GiB used: 1.37 GiB (36.3%)
Init: systemd runlevel: 5 Compilers: gcc: 7.4.0 Shell: bash v: 4.4.19
inxi: 3.0.27
может тут информации маловато конечно, но вы спросите, я все выводы и дампы покажу. просто не шарю
п с вот еще acpi -V
f4dis@HP-250-G5:~$ acpi -V
Adapter 0: on-line
Thermal 0: ok, 27.8 degrees C
Thermal 0: trip point 0 switches to mode hot at temperature 104.0 degrees C
Cooling 0: iwlwifi no state information available
Cooling 1: Fan 1 of 1
Cooling 2: Fan 1 of 1
Cooling 3: Processor 0 of 10
Cooling 4: Processor 0 of 10
Cooling 5: B0D4 no state information available
Cooling 6: intel_powerclamp no state information available
Cooling 7: x86_pkg_temp no state information available
Cooling 8: Fan 1 of 1
Cooling 9: Fan 1 of 1
Cooling 10: Processor 0 of 10
Cooling 11: INT3400 Thermal no state information available
Cooling 12: Processor 0 of 10
Cooling 13: pch_wildcat_point no state information available
F4DiS , а ты нормально прошел предварительную настройку lm_sensors?
У меня так сразу засада, в принципе всё как у этого ТС.. Управление вращением куллера на ноутбуке (Пост wanoska #15193)
Вообще гугл подсказывает, вряд ли тут обойдёшь производителя.