Шум вентиляторов и высокая температура — две стороны одной проблемы. Одни ноутбуки гудят даже в простое, другие под нагрузкой уходят в троттлинг, потому что прошивка слишком поздно повышает обороты. В 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.