lm_sensors (Русский)

Ссылки по теме
Fan Speed Control (Русский)
hddtemp (Русский)
monitorix
Состояние перевода:
На этой странице представлен перевод статьи
lm_sensors
. Дата последней синхронизации: 10 сентября 2021. Вы можете
помочь
синхронизировать перевод, если в английской версии произошли
изменения
.
lm_sensors
[
устаревшая ссылка
2025-01-22 ⓘ]
(Linux monitoring sensors) - свободное ПО, состоящее из драйверов и утилит, позволяющее отслеживать температуру, напряжение, скорости вращения вентиляторов в вашей системе. Следует помнить, что набор датчиков индивидуален для каждой системы, поэтому некоторые возможности могут быть недоступны.
Установка
Установите
пакет
lm_sensors
.
Примечание
Больше документации можно найти в
репозитории GitHub
. Возможно, в будущем она будет включена в пакет, смотрите
FS#48354
.
Настройка
Используйте от суперпользователя
sensors-detect
для обнаружения и формирования списка модулей ядра:
Важно
Если вы не уверены, то не выбирайте значения, отличные от предложенных (просто жмите
Enter
). Смотрите
#Проблемы с экраном ноутбука после запуска sensors-detect
.
# sensors-detect
В результате будет создан конфигурационный файл
/etc/conf.d/lm_sensors
, используемый демоном
sensors
, который автоматически активируется ядром при загрузке. Программа будет задавать вопросы по различному железу. "Безопасные" ответы предусмотрены по умолчанию, так что слепое нажатие
Enter
на все вопросы не должно вызвать никаких проблем.
По окончанию определения датчиков будут доступны снимаемые ими значения.
Пример:
# sensors-detect
This program will help you determine which kernel modules you need
to load to use lm_sensors most effectively. It is generally safe
and recommended to accept the default answers to all questions,
unless you know what you're doing.

Some south bridges, CPUs or memory controllers contain embedded sensors.
Do you want to scan for them? This is totally safe. (YES/no): 
Module cpuid loaded successfully.
Silicon Integrated Systems SIS5595...                       No
VIA VT82C686 Integrated Sensors...                          No
VIA VT8231 Integrated Sensors...                            No
AMD K8 thermal sensors...                                   No
AMD Family 10h thermal sensors...                           No

...

Now follows a summary of the probes I have just done.
Just press ENTER to continue: 

Driver `coretemp':
  * Chip `Intel digital thermal sensor' (confidence: 9)

Driver `lm90':
  * Bus `SMBus nForce2 adapter at 4d00'
    Busdriver `i2c_nforce2', I2C address 0x4c
    Chip `Winbond W83L771AWG/ASG' (confidence: 6)

Do you want to overwrite /etc/conf.d/lm_sensors? (YES/no): 
ln -s '/usr/lib/systemd/system/lm_sensors.service' '/etc/systemd/system/multi-user.target.wants/lm_sensors.service'
Unloading i2c-dev... OK
Unloading cpuid... OK
Примечание
Служба systemd добавится автоматически после того, как будет послан ответ
YES
на предложение сгенерировать
/etc/conf.d/lm_sensors
. Ответив
YES
, эта служба также будет незамедлительно запущена.
Просмотр датчиков
Пример запуска
sensors
:
$ sensors
coretemp-isa-0000
Adapter: ISA adapter
Core 0:       +35.0°C  (crit = +105.0°C)
Core 1:       +32.0°C  (crit = +105.0°C)

w83l771-i2c-0-4c
Adapter: SMBus nForce2 adapter at 4d00
temp1:        +28.0°C  (low  = -40.0°C, high = +70.0°C)
                       (crit = +85.0°C, hyst = +75.0°C)
temp2:        +37.4°C  (low  = -40.0°C, high = +70.0°C)
                       (crit = +110.0°C, hyst = +100.0°C)
Добавление температурных датчиков модулей памяти
This article or section needs language, wiki syntax or style improvements. See
Help:Style
for reference.
Reason:
Некоторые секции нуждаются в
символах приглашения
. (Discuss in
Talk:Lm sensors (Русский)
)
Для обнаружения температурных датчиков модулей памяти установите пакет
i2c-tools
. После установки загрузите
i2c-dev
модуль ядра
.
modprobe i2c-dev
Затем найдём шины следующей командой:
i2cdetect -l
Вывод будет примерно следующий:
i2c-1  smbus       SMBus PIIX4 adapter port 2 at 0b00  SMBus adapter
i2c-2  smbus       SMBus PIIX4 adapter port 1 at 0b20  SMBus adapter
i2c-0  smbus       SMBus PIIX4 adapter port 0 at 0b00  SMBus adapter
В данном примере взята система, на которой планки памяти подключены к шине SMBus 0. 
Команд
i2cdetect
покажет устройства, которые подключены к шине. Аргумент "-y 0" означает использование i2c-0 smbus.
Вы можете проверить другие шины, если необходимо.
i2cdetect -y 0
команда выдаст таблицу:
0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         -- -- -- -- 0c -- -- -- 
10: 10 -- -- -- -- -- -- -- 18 19 -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- 36 -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 4f 
50: 50 51 -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- 77
SPD оперативной памяти начинается с адреса 0x50, температурные датчики ОЗУ начинаются с 0x18 на этой шине. В приведённой в пример системе доступно два DIMM. Соответственно, адреса температурных датчиков: 0x18 и 0x19.
После нахождения этой информации для чтения температурных показаний с планок памяти нужно загрузить
jc42
модуль ядра
. После этого нужно сообщить модулю адреса, которые необходимо использовать, записав "<название модуля> <адрес>" в "<путь> к smbus".
modprobe jc42
echo jc42 0x18 > /sys/bus/i2c/devices/i2c-0/new_device
echo jc42 0x19 > /sys/bus/i2c/devices/i2c-0/new_device
После этого температура ваших планок памяти будет видна по команде
sensors
jc42-i2c-0-19
Adapter: SMBus PIIX4 adapter port 0 at 0b00
temp1:        +50.7°C  (low  =  +0.0°C)                  ALARM (HIGH, CRIT)
                       (high =  +0.0°C, hyst =  +0.0°C)
                       (crit =  +0.0°C, hyst =  +0.0°C)

jc42-i2c-0-18
Adapter: SMBus PIIX4 adapter port 0 at 0b00
temp1:        +51.8°C  (low  =  +0.0°C)                  ALARM (HIGH, CRIT)
                       (high =  +0.0°C, hyst =  +0.0°C)
                       (crit =  +0.0°C, hyst =  +0.0°C)
Считывание SPD-значений из памяти модулей (необязательно)
Чтобы получить значения таймингов SPD с модулей памяти, установите
i2c-tools
. После установки загрузите
eeprom
модуль ядра
.
# modprobe eeprom
Теперь можно просмотреть значения с помощью
decode-dimms
.
Вот часть вывода с одной машины:
# decode-dimms
Memory Serial Presence Detect Decoder
By Philip Edelbrock, Christian Zuckschwerdt, Burkart Lingner,
Jean Delvare, Trent Piepho and others

Decoding EEPROM: /sys/bus/i2c/drivers/eeprom/0-0050
Guessing DIMM is in                             bank 1

---=== SPD EEPROM Information ===---
EEPROM CRC of bytes 0-116                       OK (0x583F)
# of bytes written to SDRAM EEPROM              176
Total number of bytes in EEPROM                 512
Fundamental Memory type                         DDR3 SDRAM
Module Type                                     UDIMM

---=== Memory Characteristics ===---
Fine time base                                  2.500 ps
Medium time base                                0.125 ns
Maximum module speed                            1066MHz (PC3-8533)
Size                                            2048 MB
Banks x Rows x Columns x Bits                   8 x 14 x 10 x 64
Ranks                                           2
SDRAM Device Width                              8 bits
tCL-tRCD-tRP-tRAS                               7-7-7-33
Supported CAS Latencies (tCL)                   8T, 7T, 6T, 5T

---=== Timing Parameters ===---
Minimum Write Recovery time (tWR)               15.000 ns
Minimum Row Active to Row Active Delay (tRRD)   7.500 ns
Minimum Active to Auto-Refresh Delay (tRC)      49.500 ns
Minimum Recovery Delay (tRFC)                   110.000 ns
Minimum Write to Read CMD Delay (tWTR)          7.500 ns
Minimum Read to Pre-charge CMD Delay (tRTP)     7.500 ns
Minimum Four Activate Window Delay (tFAW)       30.000 ns

---=== Optional Features ===---
Operable voltages                               1.5V
RZQ/6 supported?                                Yes
RZQ/7 supported?                                Yes
DLL-Off Mode supported?                         No
Operating temperature range                     0-85C
Refresh Rate in extended temp range             1X
Auto Self-Refresh?                              Yes
On-Die Thermal Sensor readout?                  No
Partial Array Self-Refresh?                     No
Thermal Sensor Accuracy                         Not implemented
SDRAM Device Type                               Standard Monolithic

---=== Physical Characteristics ===---
Module Height (mm)                              15
Module Thickness (mm)                           1 front, 1 back
Module Width (mm)                               133.5
Module Reference Card                           B

---=== Manufacturer Data ===---
Module Manufacturer                             Invalid
Manufacturing Location Code                     0x02
Part Number                                     OCZ3G1600LV2G     

...
Использование данных датчиков
Графические фронтэнды
Существует множество разнообразных фронтэндов для отображения данных датчиков.
psensor
— GTK приложение для отслеживания аппаратных датчиков, включая температуры и скорости вентиляторов. Отслеживает материнскую плату и центральный процессор (используя lm-sensors), Nvidia GPUs (используя XNVCtrl), и жёсткие диски (используя
hddtemp
или libatasmart).
https://wpitchoune.net/psensor/
||
psensor
xsensors
— X11 интерфейс к lm_sensors.
https://linuxhardware.org/xsensors/
[
устаревшая ссылка
2021-11-13 ⓘ]
||
xsensors
Для конкретной
Desktop environments
:
Freon (расширение GNOME Shell)
— Расширение выводит на экран температуры ЦП, дисков, видеокарты, напряжения и оборотов вентилятора в
GNOME
Shell.
https://github.com/UshakovVasilii/gnome-shell-extension-freon
||
gnome-shell-extension-freon
AUR
GNOME Sensors Applet
— Апплет панели
GNOME
для отображения значений аппаратных датчиков, включая температуру ЦП, скорость вращения вентиляторов и вольтаж.
https://sensors-applet.sourceforge.net/
||
sensors-applet
lm-sensors (LXPanel plugin)
— Отслеживает температуру/вольтаж/скорости вентиляторов in
LXDE
с помощью lm-sensors.
https://danamlund.dk/sensors_lxpanel_plugin/
||
sensors-lxpanel-plugin
AUR
MATE Sensors Applet
— Отображает считанные значения аппаратных датчиков на вашей панели
MATE
.
https://github.com/mate-desktop/mate-sensors-applet
||
mate-sensors-applet
Sensors (Xfce4 panel plugin)
— Hardware sensors плагин для панели
Xfce
.
https://goodies.xfce.org/projects/panel-plugins/xfce4-sensors-plugin
||
xfce4-sensors-plugin
Thermal Monitor (Plasma 5 applet)
— Апплет
KDE
Plasma для мониторинга CPU, GPU и других доступных датчиков температуры.
https://gitlab.com/agurenko/plasma-applet-thermal-monitor
||
plasma5-applets-thermal-monitor-git
AUR
[
ссылка недействительна
: package not found]
sensord
Существует дополнительный демон
sensord
(включен в пакет
lm_sensors
), позволяющий журналировать данные с сенсоров в
кольцевые базы данных
(rrd) для последующей визуализации. Смотрите ман
sensord(8)
для уточнения деталей.
Советы и рекомендации
Регулировка значений
В некоторых случаях отображаемые данные могут быть неверными или пользователи могут захотеть изменить вывод. К ним относятся:
Неправильные значения температуры из-за неправильного смещения (к примеру температура отображается на  20 ° C текущей).
Имеется потребность переименовать вывод для некоторых датчиков.
Ядра могут быть отображены в неправильном порядке.
Все вышеперечисленное (и многое другое) можно регулировать переопределив настройки программы, указанные в
/etc/sensors3.conf
путем создания файла
/etc/sensors.d/
foo
, в котором можно будет переопределять любые настройки, используемые по умолчанию.  Рекомендуется переименовать 'foo' в соответствии с серией и моделью материнской платы, однако строгость в названии не является обязательной.
Примечание
Не редактируйте
/etc/sensors3.conf
, т.к. при обновление он перепишется и соответственно измененные данные будут утеряны.
Пример 1. Регулировка температурных смещений
Это реальный пример для системной платы Zotac ION-ITX-A-U. Значения coretemp смещены на 20 °C (более выше) и отрегулированы в соответствии со спецификацией Intel.
$ sensors
coretemp-isa-0000
Adapter: ISA adapter
Core 0:       +57.0°C  (crit = +125.0°C)
Core 1:       +55.0°C  (crit = +125.0°C)
...
Запустим
sensors
с параметром
-u
, чтобы увидеть, какие параметры доступны для каждого физического чипа (сырой режим)
$ sensors -u
coretemp-isa-0000
Adapter: ISA adapter
Core 0:
  temp2_input: 57.000
  temp2_crit: 125.000
  temp2_crit_alarm: 0.000
Core 1:
  temp3_input: 55.000
  temp3_crit: 125.000
  temp3_crit_alarm: 0.000
...
Создаем следующий файл для переопределения значений по умолчанию:
/etc/sensors.d/Zotac-IONITX-A-U
chip "coretemp-isa-0000"
  label temp2 "Core 0"
  compute temp2 @-20,@-20

  label temp3 "Core 1"
  compute temp3 @-20,@-20
Теперь вызов
sensors
отобразит настроенные значения:
$ sensors
coretemp-isa-0000
Adapter: ISA adapter
Core 0:       +37.0°C  (crit = +105.0°C)
Core 1:       +35.0°C  (crit = +105.0°C)
...
Пример 2. Переименование параметров
Это реальный пример для системной платы Asus A7M266. Требуется указать более подробные названия значений температуры 'temp1' and 'temp2':
$ sensors
as99127f-i2c-0-2d
Adapter: SMBus Via Pro adapter at e800
...
temp1:        +35.0°C  (high =  +0.0°C, hyst = -128.0°C)
temp2:        +47.5°C  (high = +100.0°C, hyst = +75.0°C)
...
Создаем следующий файл, чтобы переопределить значения по умолчанию:
/etc/sensors.d/Asus_A7M266
chip "as99127f-*"
  label temp1 "Mobo Temp"
  label temp2 "CPU0 Temp"
Теперь вызов
sensors
отобразит настроенные значения:
$ sensors
as99127f-i2c-0-2d
Adapter: SMBus Via Pro adapter at e800
...
Mobo Temp:        +35.0°C  (high =  +0.0°C, hyst = -128.0°C)
CPU0 Temp:        +47.5°C  (high = +100.0°C, hyst = +75.0°C)
...
Пример 3. Изменение нумерации ядер для многопроцессорных систем
Это реальный пример на HP Z600 workstation с двумя Xeon. Текущая нумерация физических ядер неверно: пронумерованы 0, 1, 9, 10, который повторяются во втором процессоре. Требуется получать значения температур ядер в последовательном порядке, т.е. 0,1,2,3,4,5,6,7.
$ sensors
coretemp-isa-0000
Adapter: ISA adapter
Core 0:       +65.0°C  (high = +85.0°C, crit = +95.0°C)
Core 1:       +65.0°C  (high = +85.0°C, crit = +95.0°C)
Core 9:       +66.0°C  (high = +85.0°C, crit = +95.0°C)
Core 10:      +66.0°C  (high = +85.0°C, crit = +95.0°C)

coretemp-isa-0004
Adapter: ISA adapter
Core 0:       +54.0°C  (high = +85.0°C, crit = +95.0°C)
Core 1:       +56.0°C  (high = +85.0°C, crit = +95.0°C)
Core 9:       +60.0°C  (high = +85.0°C, crit = +95.0°C)
Core 10:      +61.0°C  (high = +85.0°C, crit = +95.0°C)
...
Опять же, запустим
sensors
с параметром
-u
, чтобы увидеть, какие варианты доступны для каждого физического чипа:
$ sensors -u coretemp-isa-0000
coretemp-isa-0000
Adapter: ISA adapter
Core 0:
  temp2_input: 61.000
  temp2_max: 85.000
  temp2_crit: 95.000
  temp2_crit_alarm: 0.000
Core 1:
  temp3_input: 61.000
  temp3_max: 85.000
  temp3_crit: 95.000
  temp3_crit_alarm: 0.000
Core 9:
  temp11_input: 62.000
  temp11_max: 85.000
  temp11_crit: 95.000
Core 10:
  temp12_input: 63.000
  temp12_max: 85.000
  temp12_crit: 95.000
$ sensors -u coretemp-isa-0004
coretemp-isa-0004
Adapter: ISA adapter
Core 0:
  temp2_input: 53.000
  temp2_max: 85.000
  temp2_crit: 95.000
  temp2_crit_alarm: 0.000
Core 1:
  temp3_input: 54.000
  temp3_max: 85.000
  temp3_crit: 95.000
  temp3_crit_alarm: 0.000
Core 9:
  temp11_input: 59.000
  temp11_max: 85.000
  temp11_crit: 95.000
Core 10:
  temp12_input: 59.000
  temp12_max: 85.000
  temp12_crit: 95.000
...
Создадим следующий файл переопределения значения по умолчанию:
/etc/sensors.d/HP_Z600
chip "coretemp-isa-0000"
  label temp2 "Core 0"
  label temp3 "Core 1"
  label temp11 "Core 2"
  label temp12 "Core 3"

chip "coretemp-isa-0004"
  label temp2 "Core 4"
  label temp3 "Core 5"
  label temp11 "Core 6"
  label temp12 "Core 7"
Теперь вызов
sensors
отобразит настроенные значения:
$ sensors
coretemp-isa-0000
Adapter: ISA adapter
Core0:        +64.0°C  (high = +85.0°C, crit = +95.0°C)
Core1:        +63.0°C  (high = +85.0°C, crit = +95.0°C)
Core2:        +65.0°C  (high = +85.0°C, crit = +95.0°C)
Core3:        +66.0°C  (high = +85.0°C, crit = +95.0°C)

coretemp-isa-0004
Adapter: ISA adapter
Core4:        +53.0°C  (high = +85.0°C, crit = +95.0°C)
Core5:        +54.0°C  (high = +85.0°C, crit = +95.0°C)
Core6:        +59.0°C  (high = +85.0°C, crit = +95.0°C)
Core7:        +60.0°C  (high = +85.0°C, crit = +95.0°C)
...
Автоматизация развертывания lm_sensors
Если потребуется развернуть lm_sensors на нескольких машинах можно использовать следующую команду для принятия ответов по умолчанию на все вопросы:
# sensors-detect --auto
Решение проблем
Модуль K10Temp
У некоторых процессоров K10 имеются проблемы с датчиком температуры. Для получения подробностей смотрите
документацию к k10temp
.
На проблемных машинах модуль сообщит "unreliable CPU thermal sensor; monitoring disabled". Можно принудительно загрузить его:
# rmmod k10temp
# modprobe k10temp force=1
Убедитесь, что датчик действительно является достоверными и надежными. Если это так, то можно отредактировать
/etc/modprobe.d/k10temp.conf
, добавив:
options k10temp force=1
Это позволит подгрузить модуль при загрузке системы.
Материнские платы Asus B450M-A/A320M-K/A320M-K-BR
Эти платы используют чип IT8655E, который не поддерживается драйвером ядра it87, на Ноябрь 2020
[1]
. Однако, чип поддерживается в апстрим-версии драйвера ядра
[2]
. Имеется
DKMS
вариант
it87-dkms-git
AUR
.
Материнские платы Asus B450/X399/X470 с сокетом AM4
Некоторые последние платы Asus используют чип ITE IT8665E, доступ к датчиком температур, вентиляторов и вольтажа может требовать модуля
asus-wmi-sensors
.
Установите
asus-wmi-sensors-dkms-git
AUR
[
ссылка недействительна
: package not found]
и загрузите
модуль ядра
asus-wmi-sensors
, модуль использует интерфейс UEFI и может требовать обновления BIOS для некоторых плат
[3]
.
Другой способ: модуль
it87
считывает значения с чипа напрямую; установите
it87-dkms-git
AUR
и загрузите
модуль ядра
it87
.
Материнские платы Asus H97/Z97/Z170/X570/B550
Некоторые последние платы Asus требуют загруженного
модуля ядра
nct6775
для доступа к вентиляторам и вольтажу.
Вам также, вероятно, понадобится добавить следующий
параметр ядра
:
acpi_enforce_resources=lax
Подробнее смотрите
https://bugzilla.kernel.org/show_bug.cgi?id=204807
.
Материнские платы Gigabyte B250/Z370/B450M
Некоторые платы Gigabyte используют чип ITE IT8686E, которй не поддерживается драйвером ядра it87, на май 2019
[4]
. Однако, чип поддерживается в апстрим-версии драйвера ядра
[5]
. Имеется
DKMS
вариант
it87-dkms-git
AUR
. Перед установкой модуля также требуется добавить
параметр ядра
:
acpi_enforce_resources=lax
Кроме этого, укажите идентификатор чипа при загрузке модуля следующим образом:
# modprobe it87 force_id=0x8686
Или вы можете
загружать модуль
в процессе загрузки системы, создав два файла:
/etc/modules-load.d/it87.conf
it87
/etc/modprobe.d/it87.conf
options it87 force_id=0x8686
Как модуль будет загружен, используйте
sensors
для исследования чипа.
Теперь вы также можете использовать
fancontrol
для управления скорости вращения вашего вентилятора корпуса.
В дополнение установка
zenpower-dkms
AUR
позволит тонко настроить систему охлаждения материнской платы, однако отключит стандартный модуль k10temp.
Gigabyte GA-J1900N-D3V
Эта материнская плата использует чип ITE IT8620E (useful also to read voltages, mainboard temp, скоростей вентилятора). На октябрь 2014  lm_sensors не имеет драйвера с поддержкой чипа ITE IT8620E
[6]
[
устаревшая ссылка
2024-10-12 ⓘ]
[7]
. Разработчики lm_sensors сообщили, что чип частично совместим с IT8728F для мониторинга части аппаратных ресурсов. Однако, на август 2016, представлены списки с поддержкой IT8620E
[8]
.
Вы можете загрузить модуль в рантайме:
$ modprobe it87 force_id=0x8728
Или вы можете
загружать модуль
в процессе загрузки системы, создав два файла:
/etc/modules-load.d/it87.conf
it87
/etc/modprobe.d/it87.conf
options it87 force_id=0x8603
Как модуль будет загружен, используйте
sensors
для исследования чипа.
Теперь вы также можете использовать
fancontrol
для управления скорости вращения вашего вентилятора корпуса.
Проблемы с экраном ноутбука после запуска sensors-detect
Это вызвано lm-sensors с изменением Vcom значениями на экране в процессе считывания датчиков. Это уже обсуждалось и решалось на форуме:
https://bbs.archlinux.org/viewtopic.php?id=193048
. Однако, прежде чем запустить предложенные там команды, сначала внимательно прочитайте тред.
Ошибки шины i2c на AMD Navi 2 GPUs
В настоящий момент существует ошибка обработчика ядра при чтении шины i2c на AMD Navi 2 GPUs. Шина сейчас только может использовать ЭСППЗУ и попытка использования с другими устройствами приведёт к сбою. Это может приводить к авариям, чёрным экранам и даже привести к странностям в работе карты, таким как отказ в переключении состояний питания. На данный момент рекомендуется не сканировать шину i2c, если вы имеете карту на базе Navi 2. Подробнее читайте тут:
https://gitlab.freedesktop.org/drm/amd/-/issues/1470