Перегрев SoC на одноплатнике с Armbian чаще всего проявляется не сразу: сначала падает частота процессора из-за троттлинга, и система начинает «тормозить» без видимой причины. Проверить температуру из консоли можно за секунды — достаточно одной команды, и для этого не нужно ставить графические утилиты.
В этой статье разберём все рабочие способы: от встроенной утилиты armbianmonitor до чтения данных напрямую из файловой системы sysfs. Материал подходит для любых плат на базе Allwinner, Rockchip, Amlogic и других ARM-процессоров, где установлена Armbian.
Быстрый способ: утилита armbianmonitor
Самый простой метод — встроенная утилита armbianmonitor, которая входит в состав системы по умолчанию. Она показывает температуру SoC, текущую частоту ядер, загрузку и напряжение в одном окне.
Запустите мониторинг в реальном времени командой:
armbianmonitor -m
Вывод будет обновляться автоматически. В строке вы увидите текущую частоту CPU, температуру в градусах Цельсия и нагрузку. Для выхода нажмите Ctrl+C.
Если нужен разовый снимок состояния без постоянного обновления, используйте:
armbianmonitor -u
Ключ -m — самый информативный вариант для диагностики троттлинга: если частота падает при росте температуры, значит, процессор уже упёрся в тепловой лимит.
Чтение температуры из thermal_zone
Ядро Linux публикует данные термодатчиков через виртуальную файловую систему sysfs. Это универсальный способ, который работает даже в минимальных сборках без дополнительных утилит.
Основная команда выглядит так:
cat /sys/class/thermal/thermal_zone0/temp
Обратите внимание: значение выводится в тысячных долях градуса. Например, 45234 означает примерно 45,2 °C. Чтобы получить читаемый результат, разделите число на 1000:
echo "$(( $(cat /sys/class/thermal/thermal_zone0/temp) / 1000 )) °C"
Зон может быть несколько — thermal_zone0, thermal_zone1 и так далее. Узнать, какая зона к чему относится, поможет файл type в том же каталоге:
cat /sys/class/thermal/thermal_zone0/type
- 🌡️ soc-thermal или похожее имя — температура самого процессора (SoC);
- 🔥 gpu-thermal — датчик графического ядра, если он есть;
- 📦 board-thermal — датчик на плате, встречается не на всех моделях;
- 💾 отдельные зоны могут отвечать за NVMe-накопители или PMIC.
⚠️ Внимание: количество и назначение thermal-зон зависят от конкретной платы и версии ядра. Не полагайтесь на то, что зона 0 — это всегда CPU: проверьте содержимое файла
typeдля каждой зоны.
☑️ Диагностика перегрева за 5 шагов
Мониторинг в реальном времени через watch
Когда нужно наблюдать динамику нагрева под нагрузкой, удобно зациклить чтение датчика командой watch. Так вы увидите, как быстро растёт температура при запуске тяжёлой задачи.
watch -n 1 'cat /sys/class/thermal/thermal_zone0/temp'
Число после -n — интервал обновления в секундах. Для более наглядного вывода в градусах можно усложнить конструкцию:
watch -n 2 'echo "CPU: $(( $(cat /sys/class/thermal/thermal_zone0/temp) / 1000 ))°C"'
Чтобы создать нагрузку и проверить систему охлаждения, в отдельном терминале запустите стресс-тест — например, stress-ng --cpu 0 (пакет stress-ng устанавливается через apt). Наблюдайте за ростом температуры и поведением частоты.
Утилита lm-sensors
Пакет lm-sensors — классический инструмент Linux для работы с аппаратными датчиками. В Armbian он тоже доступен, хотя на ARM-платах его возможности зависят от того, какие датчики описаны в дереве устройств ядра.
Установка и запуск:
sudo apt install lm-sensors
sensors
Команда sensors выведет список обнаруженных чипов и их показания: температуру ядер, напряжения и, если поддерживается, скорость вентилятора. В отличие от ручного чтения sysfs, здесь значения уже приведены к удобному виду.
Запускать sensors-detect на ARM-платах обычно не требуется — датчики SoC подхватываются ядром автоматически. Если sensors показывает пустой вывод, это не неисправность: просто для вашей платы данные доступны только через thermal_zone.
Что делать, если sensors ничего не показывает
Это нормально для многих ARM-плат. Используйте armbianmonitor -m или чтение /sys/class/thermal/ — эти методы опираются на драйверы ядра и работают практически всегда.
Какая температура считается нормальной
Точные пороги зависят от конкретного чипа, поэтому сверяйтесь с документацией на ваш SoC. Тем не менее общие ориентиры для типичных ARM-процессоров выглядят так:
| Диапазон | Оценка | Рекомендация |
|---|---|---|
| До 50 °C | Отлично | Охлаждение справляется, ничего менять не нужно |
| 50–65 °C | Норма под нагрузкой | Допустимо для длительной работы |
| 65–80 °C | Повышенный нагрев | Проверьте радиатор и вентиляцию корпуса |
| Выше 80 °C | Риск троттлинга | Нужно активное охлаждение или снижение нагрузки |
Признак того, что температура уже влияет на производительность, — троттлинг: ядро автоматически снижает частоту, чтобы защитить кристалл. В выводе armbianmonitor -m это видно по падению MHz при росте градусов. Точный порог срабатывания задан в настройках ядра под конкретный чип.
⚠️ Внимание: постоянная работа на предельных температурах сокращает срок службы не только процессора, но и расположенных рядом компонентов — eMMC, памяти и стабилизаторов питания. Не игнорируйте регулярный нагрев выше 75–80 °C.
Вывод температуры в скриптах и по SSH
Для удалённого мониторинга удобно выводить температуру одной строкой, которую легко обработать скриптом. Например, команда для логирования:
echo "$(date '+%H:%M:%S') $(cat /sys/class/thermal/thermal_zone0/temp)"
Такую строку можно дописывать в файл по cron, чтобы построить историю нагрева за сутки. Это поможет понять, в какие часы и при каких задачах плата перегревается.
Если вы подключаетесь по SSH, все перечисленные команды работают точно так же — никаких графических инструментов не требуется. Для постоянного наблюдения за несколькими платами есть смысл настроить сбор метрик через Netdata или подобную систему, но для разовой диагностики достаточно консоли.
⚠️ Внимание: не полагайтесь на внешний вид платы или температуру корпуса «на ощупь» — корпус может оставаться прохладным, пока кристалл SoC перегрет. Доверять нужно только показаниям встроенных датчиков.
Частые вопросы
Почему armbianmonitor не найден в моей системе?
Утилита входит в стандартную поставку Armbian. Если команда не найдена, возможно, у вас неофициальная сборка или пакет был удалён. Проверьте наличие пакета через dpkg -l | grep armbian или используйте чтение thermal_zone — оно работает в любом случае.
Температура показывается как большое число, например 52180. Это ошибка?
Нет, это штатный формат sysfs: значение указано в тысячных долях градуса Цельсия. Разделите его на 1000 — получите 52,18 °C.
Можно ли узнать температуру без прав root?
Да. Файлы в /sys/class/thermal/ доступны на чтение обычному пользователю, и armbianmonitor -m тоже работает без sudo.
Почему под нагрузкой падает частота процессора?
Это троттлинг — защитный механизм ядра, который снижает частоту при достижении температурного порога. Проверьте охлаждение: радиатор, термопрокладку и продуваемость корпуса.
Есть ли датчик температуры у NVMe-диска?
Часто да, но он выводится отдельно — через smartctl -a /dev/nvme0 из пакета smartmontools или как отдельная thermal-зона. Проверьте файл type в каждой зоне, чтобы найти нужную.