Шум вентиляторов и высокая температура — две стороны одной проблемы. Одни ноутбуки гудят даже в простое, другие под нагрузкой уходят в троттлинг, потому что прошивка слишком поздно повышает обороты. В Linux есть инструменты, чтобы увидеть реальную картину и, где это возможно, вмешаться в управление охлаждением: lm-sensors показывает датчики, fancontrol задаёт кривую оборотов через ШИМ.

Важно: управление вентиляторами сильно зависит от модели ноутбука и материнской платы. На многих устройствах оборотами управляет встроенный контроллер (EC), и Linux не получает доступа к ШИМ. Непрофессиональное вмешательство может привести к перегреву, а «прошивка» контроллера или модификация BIOS — к неработающему устройству. Ниже — только безопасные шаги и настройка через штатные интерфейсы ядра. Не прошивайте контроллеры и не используйте сомнительные утилиты из случайных источников.

Как Linux видит датчики и вентиляторы

Ядро представляет каждый датчик через подсистему hwmon. В /sys/class/hwmon/ появляются каталоги hwmon0, hwmon1 и так далее; внутри лежат файлы temp1_input, fan1_input, pwm1. Значения температуры хранятся в тысячных долях градуса: 45000 означает 45 °C. ШИМ обычно принимает значения от 0 до 255, но не все платы честно поддерживают весь диапазон.

Пакет lm-sensors содержит утилиту sensors и скрипт sensors-detect, который опрашивает шины и подсказывает, какие модули ядра загрузить. Установка и первичная настройка выглядят так:

sudo apt install lm-sensors fancontrol
sudo sensors-detect
sudo systemctl restart systemd-modules-load
sensors

На вопросы sensors-detect обычно отвечайте согласием. Скрипт предложит добавить модули в /etc/modules-load.d/ — согласитесь, иначе после перезагрузки датчики пропадут. Параметры вроде force_id применяйте только по документации ядра или производителя.

Читаем температуры правильно

Команда sensors выводит несколько чипов: coretemp или k10temp для процессора, nvme для накопителя, acpitz для зон ACPI. Ориентироваться нужно на пакетную температуру CPU (Package id 0) и отдельные ядра, а не на самую низкую цифру. Для NVMe важны Composite и критические пороги: современные SSD начинают снижать скорость задолго до аварийной отметки.

sensors
watch -n 2 sensors
sensors -j | jq '."coretemp-isa-0000"'
cat /sys/class/hwmon/hwmon*/temp1_input

Сравните показания в простое и под нагрузкой: офисный ноутбук обычно держит 35–50 °C, под нагрузкой — 70–90 °C. Если температура доходит до 95–100 °C, а вентилятор не ускоряется, проблема в пыли, термопасте или политике прошивки, а не в Linux.

Проверить троттлинг на Intel можно по счётчикам ядра. Рост core_throttle_count означает, что процессор был вынужден снизить частоту:

grep . /sys/devices/system/cpu/cpu0/thermal_throttle/*_throttle_count
sudo dmesg | grep -i -E 'thermal|throttl'
sudo apt install stress-ng
stress-ng --cpu 4 --timeout 5m

Во время стресс-теста держите открытым watch -n 2 sensors и прервите испытание, если температура превысила разумный для вашей модели предел. Не ставьте ноутбук на мягкую поверхность.

pwmconfig: возможности и риск

pwmconfig ищет каналы ШИМ, по очереди останавливает вентиляторы и просит подтвердить соответствие датчиков. В конце формируется /etc/fancontrol. Это простой, но рискованный способ: на время теста вентилятор действительно останавливается.

sudo pwmconfig
sudo systemctl enable --now fancontrol
systemctl status fancontrol --no-pager

Не запускайте pwmconfig на удалённом сервере, на системе с ценными данными на дисках без мониторинга температуры и на ноутбуке, который нельзя быстро выключить. Перед запуском закройте тяжёлые задачи, убедитесь, что sensors показывает температуры, и держите руку на кнопке питания. Если утилита пишет, что не найдено ни одного канала ШИМ, это не ошибка настройки, а особенность платформы: управление остаётся за прошивкой.

На ноутбуках доступ к ШИМ часто закрыт, а обход через acpi_enforce_resources=lax может вызвать конфликт с ACPI. Не применяйте такие параметры вслепую и не прошивайте EC. Если штатных средств нет, почистите охлаждение и выберите сбалансированный профиль питания.

Разбор /etc/fancontrol

Файл описывает соответствия между датчиками, вентиляторами и порогами. Пример для платы с чипом nct6775; ваши пути и имена почти наверняка будут другими, их печатает pwmconfig.

INTERVAL=10
DEVPATH=hwmon2=devices/platform/nct6775.656
DEVNAME=hwmon2=nct6779
FCTEMPS=hwmon2/pwm1=hwmon2/temp1_input
FCFANS=hwmon2/pwm1=hwmon2/fan1_input
MINTEMP=hwmon2/pwm1=40
MAXTEMP=hwmon2/pwm1=75
MINSTART=hwmon2/pwm1=60
MINSTOP=hwmon2/pwm1=45
MINPWM=hwmon2/pwm1=0
MAXPWM=hwmon2/pwm1=255

INTERVAL задаёт период опроса в секундах. FCTEMPS связывает канал ШИМ с температурным входом, FCFANS — с датчиком оборотов. MINTEMP и MAXTEMP определяют диапазон, внутри которого fancontrol плавно меняет скважность: ниже MINTEMP вентилятор работает на минимуме, выше MAXTEMP — на максимуме. MINSTART — значение, достаточное для запуска остановившегося вентилятора, MINSTOP — порог, ниже которого он может остановиться. Если MINSTART мал, вентилятор будет гудеть, но не вращаться.

После правки файла перезапустите службу и проверьте журнал. Ошибка в путях приводит к тому, что fancontrol не стартует, а не к «тихому» отказу:

sudo systemctl restart fancontrol
journalctl -u fancontrol -n 30 --no-pager
cat /sys/class/hwmon/hwmon2/pwm1
sensors | grep -E 'fan|Package'

Типичные ошибки и что делать

  • Нет каналов pwm. Управление в прошивке. Проверьте BIOS на наличие профилей охлаждения, но не меняйте EC вручную.
  • После перезагрузки изменились номера hwmon. Используйте DEVPATH и DEVNAME, как в примере, а не жёсткие hwmonN.
  • Вентилятор дёргается. Увеличьте MINSTART и MINPWM, добавьте гистерезис за счёт INTERVAL, проверьте, что FCFANS указывает на правильный тахометр.
  • Служба падает с ошибкой доступа. Проверьте права на файлы pwm и синтаксис конфигурации; запускайте fancontrol только через systemd.
  • Температура выше, чем до настройки. Немедленно верните автоматический режим: остановите службу и перезагрузитесь.

Для ThinkPad есть специализированные инструменты вроде thinkfan, для части других ноутбуков — nbfc-linux. Они работают с другими интерфейсами и требуют отдельного изучения; устанавливайте их только при понимании модели и рисков. Универсальной «кнопки тишины» для всех ноутбуков не существует.

Чек-лист перед изменением настроек

  • Сохранены важные данные, система обновлена, есть доступ к консоли.
  • sensors показывает температуры и обороты, значения меняются под нагрузкой.
  • Известны критические температуры процессора и накопителя.
  • Есть запас времени и возможность физически выключить питание.
  • Понятно, как вернуть автоматический режим: systemctl stop fancontrol и перезагрузка.
  • Никаких прошивок EC и правок BIOS «на всякий случай» не планируется.

Итог

lm-sensors — обязательная база: без него не видно ни температур, ни оборотов, ни разницы между программной и аппаратной проблемой. fancontrol даёт тонкий контроль на настольных платах, где ШИМ действительно доступен, но на ноутбуках часто бессилен. Начинайте с диагностики и чистки охлаждения, а автоматическое управление меняйте только при наличии pwm-каналов и понятной процедуры отката. Тишина не должна достигаться ценой перегрева, а прошивка контроллера — не способ решения проблем в Linux.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте