- Управление кулером в системе Linux
- Установка LM-Sensors
- Настройка lm-sensors
- Настройка службы fancontrol
- Ручное управление оборотами кулера
- Выводы
- Еще один способ управления вентилятором в Linux (на примере Acer S3-391)
- Управление кулером в Ubuntu при помощи fancontrol
- Управление кулером Linux
- Подготовка системы
- Установка lm_sensors
- Настройка lm_sensors
- Управление кулером Linux
- Ручное управление оборотами кулера
- Выводы
- Fan speed control
- Contents
- Overview
- Fancontrol (lm-sensors)
- lm-sensors
- Configuration
- Tweaking
- Running Fancontrol
- Fancontrol stops working after suspend–wake cycles
- Installation
- Configuration
- NBFC-Linux
- Dell laptops
- Installation
- Configuration
- Installation as a service
- BIOS overriding fan control
- ThinkPad laptops
- Installation
- Running
- ASUS laptops
- Kernel modules
- asus-nb-wmi
- asus_fan
- Generate configuration file with pwmconfig
- Alternative method using EC registers
- Setting thermal throttle policy
- Fan control modes on certain TUF series laptops
- AMDGPU sysfs fan control
- Configuration of manual control
- amdgpu-fan
- amdfand-bin
- fancurve script
- Setting up fancurve script
- Troubleshooting
- Increase the fan divisor for sensors
- Device paths have changed in /etc/fancontrol
- Solution
- Alternative solution: absolute paths
Управление кулером в системе Linux
Эта функциональность зависит как от вашего оборудования, так и от программного обеспечения. Если ваше оборудование не поддерживает управление скоростью вращения вентилятора или не отображает их в ОС, очень вероятно, что вы не сможете использовать это решение. Если это так, но программное обеспечение (как ядро) не знает, как его контролировать, вам не повезло.
Но, если все в порядке то мы может приступить к тому, чтобы рассказать вам как управлять кулером в Linux.
Установка LM-Sensors
Установите lm-sensors и пакеты fancontrol.
Или с помощью команды для установки LM-Sensors в системе Ubuntu или Debian:
sudo apt-get install lm-sensors
sudo yim installlm-sensors
Для Gentoo нужно использовать эту команду:
Настройка lm-sensors
Управление кулером в Linux является очень простым. Но, перед эти нужно правильно установить и настроить программное обеспечение.
Введите «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
для Fedora или RedHat
Настройка 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:
Включаем кулер на всю мощь с помощью этой команды:
а теперь давайте сведем обороты в стандартный режим:
Выводы
Управление кулером в Linux является очень простым. Мы рассказали как это можно сделать с помощью программ самостоятельно через терминал. Но, если у вас есть вопросы — задавайте их в комментарии. Перед написание обязательно укажите каким дистрибутивом вы пользуетесь.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Еще один способ управления вентилятором в Linux (на примере Acer S3-391)
Понадобился мне однажды для работы ноутбук. Уж не помню почему, но выбор пал на Acer S3-391, тонкий, легкий, быстрый, но не лишенный недостатков. Кроме плохого экрана (который кстати не так просто заменить — у него особый коннектор, и возможно он приклеен к рамке), особенно меня раздражал шум вентилятора.
Пути решения этой проблемы я и постараюсь осветить в этой статье.
Прочитав статью Управляем вентилятором ноутбука через DSDT в Linux и не только, как и автор, я начал усердно гуглить в сторону ACPI и DSDT, даже перекомпилировал и подключил свою таблицу, но найти «ту самую» строчку кода отвечающую за работу вентилятора так и не удалось.
Тем временем шум вентилятора, меня все больше деморализировал. При чем, если на работе шум системников и кондиционера еще как-то перебивал, то дома, наедине со своими тараканами, вентилятор методично разрушал мою психику.
Решено было на время вернуться в Win7.
Как обстоят дела в Win
Для ОС от Майкрософт написано очень много программ для управлени вентилятором, все он по большей части заточены в лучшем случае под одного производителя. Что наводило на неприятные мысли.
Но тем не менее была найдена относительно универсальная программа NBFC, которая сразу заработала, требовалось лишь выставить тригеры переключения оборотов.
Какое-то время решение меня устраивало, но на душе все равно было как-то неспокойно.
Возвращение домой
После пары недель использования вынды понял что неудобно. Нужно было решение для непокоренного пингвина.
Тогда я решил все таки разобраться как же работает вышеупомянутая программа.
Решение было не то что бы совсем на поверхноости, но точно не глубоко. Точнее в мануале приложенном к софтине.
Было найдено «правильное слово» по которому нужно гуглить: Embedded Controller (EC).
как написано на rom.by
Embedded Contoller — это встроенный контроллер типа Hitachi H8 (он же — Renesas), Winbond W83L950D, предназначенный для управления платформой (как правило — мобильной) как на уровне включения и выключения, так и для обработки ACPI-событий. В задачи EC-контроллера входит обслуживание аккумулятора мобильной платформы: выбор режима его заряда, контроль разрядки. Как правило, на мобильных платформах с помощью EC-контроллера реализуется и контроллер клавиатуры.
Оказалось что состояние вентилятора так же записывается в регистры этого контроллера.
Отавалось решить 2 задачи:
1) Какие регистры отвечают за состояние вентилятора
2) Как изменять их значение
Решение
С первой задачей помогла справится все также программка NBFC. Всего-то и нужно было посмотреть значения в конфиге для своего ноутбука (ультрабука?)
А с задачей «Как?» помог справится скрипт на перле шестилетней давности, который заработал сразу и без правок.
В общем-то все можно было бы и успокоиться, но хотелось немного увтоматизировать процесс, в результате чего появилось целых 3 скрипта, возможно и можно было все решить одним, но мои познания в программировании крайне ограничены, а на перле я вообще не писал никогда, если кто подскажет как это все упростить и сделать так что бы управляющий скрипт автоматически перезапускался после сна/пробуждения устройства — буду благодарен.
Собственно сами скрипты:
Просто скопируйте в /usr/local/bin/ и дайте права на выполнение
Значения оборотов и пороговых тепмератур описаны такие как удобно мне, вы можете с ними поиграться, подобрать более подходящие для вас.
Если у вас другой ноутбук, с той же проблемой вам скорее всего потребуется изменить значения записываемого регистра
В этом нам помогут конфиги написанные для уже неоднократно упоминавшейся NBFC
Если ничего найти не удалось то можно попробовать узнать значения запустив:
Если регистры, и их значения подобраны верно просто выполняем в консоли:
вентилятор должен изменить обороты.
Profit!
Спасибо за внимание, надеюсь материал будет кому-нибудь полезен.
Критика, дополнения и улучшения приветствуются.
Управление кулером в Ubuntu при помощи fancontrol
После покупки минисервера появилась необходимость контролировать обороты кулеров, чтобы убрать вообще издаваемый шум.
Для того чтобы это сделать необходимо поставить пакет lm-sensors.
apt-get install lm-sensors
В папке /etc/init.d/ появляется новый скрипт fancontrol который периодически опрашивает датчики и если необходимо меняет обороты.
Для получения данных об оборотах куллеров необходимо выполнить комманду:
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
И посмотреть используя sensors какие сейчас обороты и какая температура.
Управление кулером Linux
Читаете, вы, сейчас эти строки и слышите равномерный, в меру громкий шум кулера. Однозначно слышите, иначе вас бы не заинтересовала эта статья. На самом деле громкая работа кулера в Linux довольно частая проблема недавно перешедших с Windows-пользователей. А ведь он не должен так шуметь. В Windows, обороты вентилятора и многие другие параметры управляются автоматически в зависимости от нагрузки на систему и следовательно температуры оборудования, здесь же из коробки вентилятор всегда крутится на полную мощность, независимо от того, играете вы тяжелую игру, компилируете программу или просто просматриваете интернет страницы. Это нужно исправлять. В этой инструкции мы рассмотрим управление кулером Linux и настройку автоматической регуляции оборотов в зависимости от температуры.
Подготовка системы
Чтобы правильно управлять и ничего не спалить, ну на самом деле и ничего не сгорит, компьютер просто уйдет в перезагрузку, но все же… нам нужно знать температуру оборудования в данный момент. Для снятия показаний со всяких датчиков на материнской плате используется набор программ lm_sensors. Сначала настроим lm_sensors затем управление кулером linux.
Установка lm_sensors
Это, можно сказать, системный компонент, поэтому он есть в репозиториях всех дистрибутивов.
Для Ubuntu или Debian команда установки выглядит следующим образом:
Также для Gentoo в ядре необходимо будет включить следующие функции:
Не забудьте пересобрать все пакеты с флагом lm_sensors
Настройка lm_sensors
Теперь нам нужно найти и записать информацию обо всех доступных сенсорах, для этого выполните:
После запуска команды нужно будет последовательно нажимать y, чтобы подтвердить сканирование следующей группы устройств, затем Enter:
А потом опять y для сохранения собранной конфигурации в файл:
Далее, добавляем сервис в автозагрузку:
Уже можем посмотреть показания сенсоров:
Здесь показаны не только температура, но и обороты кулера, а также напряжение. Но это не главное, у нас есть информация и мы можем переходить к следующему пункту.
Управление кулером Linux
Управление оборотами вентилятора linux выполняется с помощью сервиса fancontrol.
Для установки в Ubuntu:
После установки переходим к настройке автоматического регулирования оборотов кулера. Сначала нужно программно связать каждый кулер с соответствующим ему датчиком температуры, и настроить допустимый уровень температур. Для этого выполните:
Сначала программа покажет доступные драйверы вентиляторов:
Здесь вы видите предупреждение о том что вентиляторы linux будут отключены на некоторое время (5 секунд), как прочитаете нажмите Enter. Дальше будет выполнено тестирование доступных скоростей кулера:
Дальше настроим максимальную, минимальную и рабочую температуры, сначала выберите кулер, например 1:
Теперь выберите датчик температуры для этого кулера:
Теперь укажите температуру, при которой вентилятор linux будет вращаться на минимальной скорости:
Затем температуру, при которой нужно переходить на максимальные обороты:
Далее, нужно указать минимальное значение оборотов pwm, можно узнать нажав кнопку t
Какое значение pwm использовать если температура превышает минимальную, по сути, это рабочие обороты:
Какое значение использовать при превышении максимальной температуры:
Готово теперь, остается настроить таким же образом другие кулеры, если у вас их несколько и можно сохранять:
Сохранить и выйти под номером 5.
Добавляем fancontrol в автозагрузку:
Чувствуете? тишина… теперь fancontrol управляет вашими кулерами и шума без надобности больше не будет.
Ручное управление оборотами кулера
Меня всегда интересовало, как вручную выключить кулер. Сразу забегая на перед скажу, что ничего не сгорит, температура просто будет плавно расти. Если запущен fancontrol останавливаем, чтобы не мешал:
Смотрим доступные устройства:
Здесь pwm1, pwm2.. это файлы кулеров. Разрешаем ручное управление вентилятором linux, например, для pwm1:
Включаем на полную:
А теперь на минимум:
Выводы
Теперь вы достаточно знаете и управление кулером не вызовет у вас проблем. Вы можете заставить свой компьютер или ноутбук не шуметь и не мешать вам спать ночью. Если остались вопросы, пишите их в комментариях!
Fan speed control
Fan control can bring various benefits to your system, such as quieter working system and power saving by completely stopping fans on low CPU load.
Contents
Overview
There are multiple working solutions for fan control for both desktops and notebooks. Depending on your needs:
Fancontrol (lm-sensors)
Support for newer motherboards may not yet be in the Linux kernel. Check the official lm-sensors devices table to see if experimental drivers are available for such motherboards.
lm-sensors
The first thing to do is to run
This will detect all of the sensors present and they will be used for fancontrol. After that, run the following to check if it detected the sensors correctly:
Configuration
Tweaking
Some users may want to manually tweak the configuration file after running pwmconfig with root privileges, usually to fix something. For manually tweaking the /etc/fancontrol configuration file, see fancontrol(8) for the variable definitions.
Users will probably encounter the hwmon path issues as noted above in #Fancontrol (lm-sensors). See #Device paths have changed in /etc/fancontrol for more information.
Running Fancontrol
Try to run fancontrol:
Fancontrol stops working after suspend–wake cycles
Unfortunately, fancontrol does not work after suspending. As per the filed bug, you will have to restart fancontrol after suspending. This can be achieved automatically by a systemd hook.
NBFC is a cross-platform fan control solution for notebooks. It comes with a powerful configuration system, which allows to adjust it to many different notebook models, including some of the latest ones.
Installation
Configuration
NBFC comes with pre-made profiles. You can find them in /opt/nbfc/Configs/ directory. When applying them, use the exact profile name without a file extension (e.g. some profile.xml becomes «some profile» ).
Check if there is anything NBFC can recommend:
If there is at least one model, try to apply this profile and see how fan speeds are being handled. For example:
If above solution did not help, try appending ec_sys.write_support=1 to kernel parameters.
If there are no recommended models, go to NBFC git repository or /opt/nbfc/Configs/ and check if there are any similar models available from the same manufacturer. For example, on Asus Zenbook UX430UQ, the configuration Asus Zenbook UX430UA did not work well (fans completelly stopped all the time), but Asus Zenbook UX410UQ worked fantastically.
Run nbfc to see all options. More information about configuration is available at upstream wiki.
NBFC-Linux
Dell laptops
i8kutils is a daemon to configure fan speed according to CPU temperatures on some Dell Inspiron and Latitude laptops. It uses the /proc/i8k interface provided by the i8k driver (an alias for dell_smm_hwmon ). Results will vary depending on the exact model of laptop.
Installation
i8kutils AUR is the main package to control fan speed. Additionally, you might want to install these:
Configuration
The temperature points at which the fan changes speed can be adjusted in the same configuration file. Only three fans speeds are supported (high, low, and off). Look for a section similar to the following:
This example starts the fan at low speed when the CPU temperature reaches 55 °C, switching to high speed at 75 °C. The fan will switch back to low speed once the temperature drops to 65 °C, and turns off completely at 45 °C.
Installation as a service
BIOS overriding fan control
Some newer laptops have BIOS fan control in place which will override the OS level fan control. To test if this the case, run i8kmon with verbose mode in a command line, make sure the CPU is idle, then see if the fan is turned off or turned down accordingly.
If the BIOS fan control is in place, you can try using dell-bios-fan-control-git AUR :
To enable BIOS fan control:
To disable BIOS fan control:
ThinkPad laptops
Some fan control daemons include simpfand-git AUR and thinkfan AUR (recommended).
Installation
So fan control is enabled by default.
Now, load the module:
You should see that the fan level is «auto» by default, but you can echo a level command to the same file to control the fan speed manually:
The thinkfan daemon will do this automatically.
«7» is not the same as «full-speed». «7» is the maximum regulated speed. full-speed is the maximum unregulated speed.
to use generic hwmon sensors instead of thinkpad-specific ones.
Running
You can test your configuration first by running thinkfan manually (as root):
and see how it reacts to the load level of whatever other programs you have running.
ASUS laptops
This topic will cover drivers configuration on ASUS laptops for Fancontrol (lm-sensors).
Kernel modules
In configuration files, we are going to use full paths to sysfs files (e.g. /sys/devices/platform/asus-nb-wmi/hwmon/hwmon[[:print:]]*/pwm1 ). This is because hwmon1 might change to any other number after reboot. Fancontrol (lm-sensors) is written in Bash, so using these paths in configuration file is completely acceptable. You can find complete /etc/fancontrol configuration file examples at ASUS N550JV#Fan control.
asus-nb-wmi
asus-nb-wmi is a kernel module, which is included in the Linux kernel and is loaded automatically on ASUS laptops. It will only allow to control a single fan and if there is a second fan you will not have any controls over it. Note that blacklisting this module will prevent keyboard backlight to work.
Below are the commands to control it. Check if you have any controls over your fan:
If you were able to modify fan speed with above commands, then continue with #Generate configuration file with pwmconfig.
asus_fan
asus_fan is a kernel module, which allows to control both fans on some older ASUS laptops. It does not work with the most recent models.
Check if you have any control over both fans:
If everything works, you might want to load this kernel module on boot:
Generate configuration file with pwmconfig
If you use asus_fan kernel module and have 2nd fan, in second console:
And finally, in the third console:
Once you are done and the configuration file is generated, you should stop the first and second consoles. Continue with #Fancontrol (lm-sensors). After the configuration file is generated, you might need to manually replace PWM values with full sysfs paths as they are used in these steps, because hwmon number values might change after reboot.
Alternative method using EC registers
If the above methods do not work for you, an alternative method is to directly write to certain registers in the embedded controller (EC). Using the EC-Probe tool, you can set the fan mode to one of the three fan speed modes, provided your model offers such feature in Windows.
In ASUS FX504GD model setting the fan speed to one of the three modes uses these register values:
Here we write to register 0x5e that is responsible in setting the fan speed mode.
If these values do not work for you, run the ec-probe tool in monitor mode in Windows and try to identify which register in the EC changes value when switching through fan speed modes.
Setting thermal throttle policy
Fan control modes on certain TUF series laptops
This was tested on the ASUS TUF FX504GE and ASUS TUF FX504GD models and found to be working.
AMDGPU sysfs fan control
AMDGPU kernel driver offers fan control for graphics cards via hwmon in sysfs.
Configuration of manual control
To switch to manual fan control from automatic, run
Set up fan speed to e.g. 50% (100% are 255 PWM cycles, thus calculate desired fan speed percentage by multiplying its value by 2.55):
To reset to automatic fan control, run
amdgpu-fan
The amdgpu-fan AUR package is an automated fan controller for AMDGPU-enabled video cards written in Python. It uses a «speed-matrix» to match the frequency of the fans with the temperature of the GPU, for example:
amdfand-bin
fancurve script
Not just fan controls are offered via hwmon in sysfs, but also GPU temperature reading:
This outputs GPU temperature in °C + three zeroes, e.g. 33000 for 33°C.
The bash script amdgpu-fancontrol by grmat offers a fully automatic fan control by using the described sysfs hwmon functionality. It also allows to comfortably adjust the fancurve’s temperature/PWM cycles assignments and a hysteresis by offering abstracted configuration fields at the top of the script.
Setting up fancurve script
To start the script, it is recommend to do so via systemd init system. This way the script’s verbose output can be read via journalctl/systemctl status. For this purpose, a .service unit file is already included in the GitHub repository.
It may also be required to restart the script via a root-resume.service after hibernation in order to make it automatically function properly again:
Troubleshooting
Increase the fan divisor for sensors
If sensors does not output the CPU fan RPM, it may be necessary to change the fan divisor.
The first line of the sensors output is the chipset used by the motherboard for readings of temperatures and voltages.
Create a file in /etc/sensors.d/ :
Replacing coretemp-isa- with name of the chipset and X with the number of the CPU fan to change.
Save the file, and run as root:
which will reload the configuration files.
Run sensors again, and check if there is an RPM readout. If not, increase the divisor to 8, 16, or 32. Your mileage may vary.
Device paths have changed in /etc/fancontrol
The enumerated hwmon symlinks located in /sys/class/hwmon/ might vary in order because the kernel modules do not load in a consistent order per boot. Because of this, it may cause fancontrol to not function correctly. The error is «Configuration appears to be outdated, please run pwmconfig again». Upstream bug.
Solution
Alternative solution: absolute paths
Commenting this out should effectively ignore the hwmon validation checks. You can also ignore the variables DEVNAME and DEVPATH in the configuration file as well. After this, replace all of the hwmon paths in the other variables with its absolute path. To make it easier, rerun pwmconfig with root privileges to refresh the hwmon devices. The hwmon paths in the configuration file should now point to the correct absolute paths. For each hwmon path, run the following command (where N is the enumeration of the hwmon path):
This will give you the absolute path of the device.
For example, an /etc/fancontrol file lists FCTEMPS as this:
Essentially, you must replace the hwmon path with the absolute path, concatenated with /hwmon/[[:print:]]*/ so that bash can catch the random enumerated hwmon name.
If you do not see the /hwmon/hwmonN/ directory, then you do not have to worry about this. This means that the temperature files are in the root of the device folder. Just replace hwmonN/ with the absolute file path. For example:
After replacing all of paths, fancontrol should work fine.