Как контролировать скорость вращения вентилятора?

Как я могу контролировать скорость вращения вентилятора компьютера?

В Windows есть замечательная программа под названием Скоростной вентилятор.

Примечание перед началом:

Эта функциональность зависит как от вашего оборудования, так и от программного обеспечения. Если ваше оборудование не поддерживает регуляторы скорости вращения вентилятора или не отображает их в операционной системе, весьма вероятно, что вы не сможете использовать это решение. Если это так, но программное обеспечение (оно же ядро) не знает, как им управлять, вам не повезло.


  1. Установите пленочные датчики и фанконтроль пакеты.

  2. Конфигурировать пленочные датчики следующим образом:

    1. В терминальном типе sudo sensors-detect и отвечайте "ДА" на все вопросы "ДА/нет".
      (Потенциально это может повредить вашу систему или привести к сбою системы. Для многих систем это безопасно. Нет никакой гарантии, что этот процесс не повредит вашу систему навсегда, я просто думаю, что вероятность такого критического сбоя равна действительно очень низкий. Сохранение всей вашей работы на случай возможных сбоев / зависаний / перезапусков перед обработкой конфигурации системы всегда является хорошей идеей. Если вы чувствуете себя неуверенно, прочтите комментарии и попробуйте выполнить поиск в Интернете и получить некоторый обзор высокого уровня, прежде чем ответить "ДА" на все, возможно, избирательности в ваших ответах все равно будет достаточно)

    2. В конце sensors-detect будет отображен список модулей, которые необходимо загрузить. Введите "да", чтобы датчики обнаруживали, вставьте эти модули в /etc/modules или отредактируйте /etc/modules самостоятельно.

    3. Бежать sudo service kmod start Это позволит прочитать изменения, внесенные вами в /etc/modules на шаге 3 и вставьте новые модули в ядро.

      • Примечание: Если вы используете Ubuntu 12.04 или более позднюю версию, эта команда 3-го шага должна быть заменена на sudo service module-init-tools restart
  3. Конфигурировать фанконтроль

    1. В терминальном типе sudo pwmconfig . Этот скрипт остановит каждый вентилятор на 5 секунд, чтобы выяснить, какими вентиляторами можно управлять с помощью какой ручки PWM. После того, как скрипт переберет все вентиляторы, вы сможете настроить, какой вентилятор соответствует какой температуре.
    2. Вам нужно будет указать, какие датчики использовать. Это немного сложно. Если у вас только один вентилятор, обязательно используйте датчик температуры для вашего ядра, чтобы основывать скорость fancontrol.
    3. Выполните действия с подсказками и сохраните изменения в расположении по умолчанию.
    4. Внесите коррективы для точной настройки /etc/fancontrol и использовать sudo service fancontrol restart чтобы применить ваши изменения. (В моем случае я установил интервал в 2 секунды.)
  4. Устанавливать фанконтроль обслуживание

    1. Бежать sudo service fancontrol start. Это также приведет к автоматическому запуску службы fancontrol при запуске системы.

В моем случае /etc/fancontrol для процессора я использовал:

Настройки для hwmon0/device/pwm2:
(Зависит от hwmon0/device/temp2_input)(Управляет hwmon0/device/fan2_input)

  INTERVAL=2  MINTEMP=40    MAXTEMP=60    MINSTART=150    MINSTOP=0    MINPWM=0    MAXPWM=255 

и в другой системе это:

  INTERVAL=10  DEVPATH=hwmon1=devices/platform/coretemp.0 hwmon2=devices/platform/nct6775.2608  DEVNAME=hwmon1=coretemp hwmon2=nct6779  FCTEMPS=hwmon2/pwm2=hwmon1/temp2_input  FCFANS=hwmon2/pwm2=hwmon2/fan2_input  MINTEMP=hwmon2/pwm2=49  MAXTEMP=hwmon2/pwm2=83  MINSTART=hwmon2/pwm2=150  MINSTOP=hwmon2/pwm2=15  MINPWM=hwmon2/pwm2=14  MAXPWM=hwmon2/pwm2=255

здесь есть некоторая полезная информация о настройках и о том, что они на самом деле делают

Если у вас есть ThinkPad, есть часть программного обеспечения , называемая thinkfan это делает именно это. Как очевидно следует из названия, он специально создан для ThinkPads (thinkpad_acpi).

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

Вот простое пошаговое руководство:

http://www.lxle.net/forums/discussion/821/how-to-set-up-thinkfan-on-a-lenovo-thinkpad-t430/p1

(который в основном представляет собой переведенную версию этого руководства на немецком языке:http://thinkwiki.de/Thinkfan)


Соответствующая информация из сообщения:

Шаг 1. Установите программное обеспечение thinkfan и датчики:

sudo apt-get install thinkfan lm-sensors

Шаг 2. Убедитесь, что демон управляет вентилятором, отредактировав файл thinkpad.conf:

sudo nano /etc/modprobe.d/thinkfan.conf

добавив следующую строку:

options thinkpad_acpi fan_control=1

Шаг 3. Сделайте так, чтобы демон загружался автоматически при запуске, отредактировав файл:

sudo nano /etc/default/thinkfan

убедитесь, что клавиша "ПУСК" установлена в значение "да", т.Е. должна быть строка с надписью:

START=yes

Шаг 4. Обнаружение датчиков вашего ноутбука:

sudo sensors-detect

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

Шаг 5. Загрузите новые модули. Начиная с ubuntu 13.10, это делается с помощью:

sudo service kmod start

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

sudo service module-init-tools start

Шаг 6. Выясните, какие датчики используются:

sensors

(те, которые указывают на 0 градусов, не используются, я не знаю, почему они тоже "обнаружены"). Запомните, какие из них используются.

Шаг 7. Узнайте полные пути этих датчиков:

find /sys/devices -type f -name "temp*_input"

Результатом должен быть список путей типа /sys/devices/...

Шаг 8. Скопируйте и вставьте пути к датчикам в конфигурационный файл /etc/thinkpad.conf. Чтобы сделать это, сначала откройте файл:

sudo nano /etc/thinkfan.conf

Там уже должна быть строка типа

#sensor /proc/acpi/ibm/thermal (0, 10, 15, 2, 10, 5, 0, 3, 0, 3) 

(символ # означает, что эта строка закомментирована). Добавьте строку, начинающуюся с sensor (без символа #), и скопируйте и вставьте свой первый датчик. Повторите это, если у вас более одного датчика. Например, на моей машине вывод на шаге 7 дает

/sys/devices/virtual/hwmon/hwmon0/temp1_input/sys/devices/platform/thinkpad_hwmon/temp3_input/sys/devices/platform/thinkpad_hwmon/temp4_input/sys/devices/platform/thinkpad_hwmon/temp5_input/sys/devices/platform/thinkpad_hwmon/temp6_input/sys/devices/platform/thinkpad_hwmon/temp7_input/sys/devices/platform/thinkpad_hwmon/temp1_input/sys/devices/platform/thinkpad_hwmon/temp8_input/sys/devices/platform/thinkpad_hwmon/temp2_input/sys/devices/platform/coretemp.0/temp4_input/sys/devices/platform/coretemp.0/temp2_input 

Те, которые используются на моей машине, находятся в первой и двух последних строках, поэтому я добавил три строки:

sensor /sys/devices/virtual/hwmon/hwmon0/temp1_inputsensor /sys/devices/platform/coretemp.0/temp4_inputsensor /sys/devices/platform/coretemp.0/temp2_input 

Шаг 9. Наконец, мы можем установить уровни скорости вентилятора в файле конфигурации. Откройте файл /etc/thinkpad.conf, если он еще не был открыт.

sudo nano /etc/thinkfan.conf

Уровни вентилятора, которые я использую на своем ThinkPad x201, следующие:

(0, 0, 51)(1, 50, 52)(2, 51, 55)(3, 54, 58)(4, 56, 63)(5, 60, 70)(6, 66, 79)(7, 74, 92)(127, 85, 32767) 

Последняя строка обеспечивает полную скорость вращения вентилятора (127 = "отключено", т.е. нерегулируемо). Вы можете изменять эти уровни в соответствии с вашими потребностями / пожеланиями, но, ПОЖАЛУЙСТА, БУДЬТЕ ОСТОРОЖНЫ!

Шаг 10. Перезагрузить. Теперь все должно работать. Чтобы проверить, правильно ли работает thinkpad, используйте

sudo thinkfan -n

который запускает thinkfan в подробном режиме. Возможно, вы захотите сначала остановить демона thinkfan:

sudo /etc/init.d/thinkfan stop

Если вы хотите снова запустить демон thinkfan, введите:

sudo /etc/init.d/thinkfan start

Просто для полноты, мой конфигурационный файл /etc/thinkfan.conf:

# IMPORTANT:## To keep your HD from overheating, you have to specify a correction value for# the sensor that has the HD's temperature. You need to do this because# thinkfan uses only the highest temperature it can find in the system, and# that'll most likely never be your HD, as most HDs are already out of spec# when they reach 55 °C.# Correction values are applied from left to right in the same order as the# temperatures are read from the file.## For example:# sensor /proc/acpi/ibm/thermal (0, 0, 10)# will add a fixed value of 10 °C the 3rd value read from that file. Check out# http://www.thinkwiki.org/wiki/Thermal_Sensors to find out how much you may# want to add to certain temperatures.# Syntax:# (LEVEL, LOW, HIGH)# LEVEL is the fan level to use (0-7 with thinkpad_acpi)# LOW is the temperature at which to step down to the previous level# HIGH is the temperature at which to step up to the next level# All numbers are integers.## I use this on my T61p:#sensor /proc/acpi/ibm/thermal (0, 10, 15, 2, 10, 5, 0, 3, 0, 3)#(0, 0, 55)#(1, 48, 60)#(2, 50, 61)#(3, 52, 63)#(4, 56, 65)#(5, 59, 66)#(7, 63, 32767)# My settings for my ThinkPad X201: (kris)sensor /sys/devices/virtual/hwmon/hwmon0/temp1_inputsensor /sys/devices/platform/coretemp.0/temp4_inputsensor /sys/devices/platform/coretemp.0/temp2_input(0, 0, 51)(1, 50, 52)(2, 51, 55)(3, 54, 58)(4, 56, 63)(5, 60, 70)(6, 66, 79)(7, 74, 92)(127, 85, 32767)

Для нескольких компьютеров Dell вы можете установить пакет i8kutils:

sudo apt install i8kutils

Если у вас есть не протестированный Dell (например, Dell XPS 14z, Dell XPS 15 9550 или даже Alienware M15 R4), вам может потребоваться принудительная загрузка модуля ядра:

sudo modprobe i8k force=1

Если вы хотите управлять вентиляторами, вам может потребоваться следовать более подробному руководству: Вентилятор переключается с полной скорости на выключенную на Dell G5

Установите и настройте пленочные датчики и фанконтроль пакеты:

sudo apt-get install lm-sensors fancontrol

Документация по их настройке доступна на их справочных страницах.

Предполагается, что эта функция обеспечивается BIOS, совместимым с ACPI, но, похоже, большинство производителей материнских плат не утруждают себя соблюдением стандарта.

Вот пример обновленный ответ, основанный на ответ, рекомендующий подумать. но работает с Ubuntu 19.04, а также на других компьютерах, кроме ThinkPads.

1. Настройка

Приведенные ниже инструкции применимы к любому ThinkPad, который имеет /proc/acpi/ibm/fan и /proc/acpi/ibm/thermal "устаревшие" устройства. Это позволяет избежать необходимости установки lm-sensors пакет.

Однако вы все равно можете выбрать установку lm-sensors. Это даст вам больше датчиков температуры и более детальный контроль над вашими вентиляторами, а именно с шагом 256 ШИМ, а не с фиксированными шагами "0-7 и 127" с устаревшими устройствами. Кроме того, поскольку thinkfan теперь можно работать с lm-sensors датчики, это больше не относится к компьютерам IBM / Lenovo ThinkPad. Пожалуйста, обратитесь к man thinkfan для использования этих "расширенных" сенсорных устройств. Кроме того, здесь есть актуальная информация в немецком Thinkwiki.

  1. Установите необходимый пакет:

    sudo apt install thinkfan
  2. Добавьте следующую строку в /etc/modprobe.d/thinkfan.conf:

    options thinkpad_acpi fan_control=1
  3. Настройте thinkfan служба автоматически запускается при запуске системы:

    1. Добавить строку START=yes к /etc/default/thinkfan

    2. Выполните следующую команду (источник):

      sudo systemctl enable thinkfan.service
  4. Приспособиться /etc/thinkfan.conf с правильными указателями на устройства и желаемые уровни вентилятора. Комментарии там содержат документацию. На любом Thinkpad с устаревшим fan и thermal устройства, следующее должно стать хорошей отправной точкой (также должно быть безопасным для жесткого диска, см. Комментарии в файле для получения дополнительной информации). Обратите внимание, что при этом используются новые ключевые слова – те, что в другой ответ теперь они устарели.

    tp_fan /proc/acpi/ibm/fantp_thermal /proc/acpi/ibm/thermal(0, 0, 47)(1, 43, 52)(2, 48, 55)(3, 51, 58)(4, 54, 63)(5, 59, 70)(6, 66, 79)(7, 74, 92)(127, 85, 32767) 

2. Тест

Чтобы протестировать настройки (после перезагрузки), вы можете выполнить следующие действия:

  • В одном окне терминала запустите thinkfan в недемонизированном режиме, чтобы вы могли видеть его сообщения:

    sudo service thinkfan stop && sudo thinkfan -n
  • В другом окне терминала следите за текущими значениями температуры, подавая сигнал на устройство измерения температуры, если оно отличается:

    while true; do sleep 1; cat /proc/acpi/ibm/thermal; done
  • В еще одном окне терминала произведите некоторое нагревание процессора (и прервите его с помощью Ctrl + C в случае, если что-то в управлении температурой не работает должным образом):

    sudo apt install stress-ngstress-ng --cpu-1

Попробуйте заглянуть в настройки UEFI (или BIOS setup) вашего компьютера. Там может быть настройка для управления вентилятором, в которую вы можете поместить свой вентилятор в Silent Mode, Performance Mode, Full Speed, Customize и т.д.

Как получить доступ к настройкам UEFI: Перезагрузите компьютер, и ключ для их ввода, скорее всего, появится в одном из углов (например Press F2 to enter UEFI setup)

ASRock UEFI setup for fan control

Сценарий, который я запускаю каждые несколько секунд, чтобы мой сервер Dell оставался прохладным и тихим. Обновите get_temp для вашего оборудования.

#!/bin/env python3import osimport jsonMIN_FAN = 5MAX_FAN = 100MIN_TEMP = 50 # fans at min at this tempMAX_TEMP = 80 # fans at max at this tempTEMP_POW = 3 # decrease for cooler server, increase for quiterdef get_temp():    sensors = json.loads(os.popen('/usr/bin/sensors -j').read())    temp0 = sensors["coretemp-isa-0000"]["Package id 0"]["temp1_input"]    temp1 = sensors["coretemp-isa-0001"]["Package id 1"]["temp1_input"]    return max(temp0, temp1)def determine_fan_level(temp):    x = min(1, max(0, (temp - MIN_TEMP) / (MAX_TEMP - MIN_TEMP)))    return int(min(MAX_FAN, max(MIN_FAN, pow(x, TEMP_POW)*(MAX_FAN-MIN_FAN) + MIN_FAN)))def set_fan(fan_level):    # manual fan control    os.system("ipmitool raw 0x30 0x30 0x01 0x00")    # set fan level    cmd = "ipmitool raw 0x30 0x30 0x02 0xff " + hex(fan_level)    os.system(cmd)temp = get_temp()fan = determine_fan_level(temp)print("temp", temp, "fan", fan)set_fan(fan)

В Linux fancontrol настраивается с помощью pwmconfig. Используйте датчики наблюдения для наблюдения за датчиками при загрузке процессора и графического процессора. Используйте эти значения на холостом ходу и при полной нагрузке, чтобы установить MINTEMP и MAXTEMP соответственно с INTERVAL=1. Это увеличивает количество ваших поклонников в режиме реального времени по мере увеличения нагрузки. Это наиболее активное охлаждение, обеспечивающее основу для дальнейшей настройки. Запустите pwmconfig один раз, а затем отредактируйте /etc/fancontrol напрямую. Запускайте `перезапуск службы sudo fancontrol" после каждой настройки.

Я разместил здесь простое решение cron для карт ATI http://askubuntu.com/a/875241/375427