lm_sensors (Português)

From ArchWiki
Status de tradução: Esse artigo é uma tradução de lm_sensors. Data da última tradução: 2020-04-08. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.

lm_sensors (Linux monitoring sensors) é um aplicativo livre e de código aberto que fornece ferramentas e drivers para monitorar temperaturas, tensão e ventiladores. Este documento explica como instalar, configurar e usar o lm_sensors.

Instalação

Instale o pacote lm_sensors.

Nota: Mais documentação está no repositório GitHub. No futuro, esses podem ser instalados, veja FS#48354.

Configuração

Use sensors-detect como root para detectar e gere uma lista de módulos de kernel:

Atenção: Não uso nada além das opções padrão (só pressionando Enter), a menos que você saiba exatamente o que você está fazendo. Veja #Problemas na tela do laptop após a execução de sensors-detect.
# sensors-detect

Ele pedirá para sondar vários hardwares. As respostas "seguras" são os padrões, então apenas pressionar Enter para todas as perguntas geralmente não causará nenhum problema. Isso criará o arquivo de configuração /etc/conf.d/lm_sensors que é usado por lm_sensors.service para carregar automaticamente os módulos do kernel na inicialização.

Quando a detecção é concluída, um resumo das sondas é apresentado.

Exemplo:

# 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
Nota: Um serviço systemd é ativado automaticamente se os usuários responderem YES quando perguntados sobre a geração de /etc/conf.d/lm_sensors. Respondendo SIM também inicia automaticamente o serviço.

Execução de sensors

Exemplo de execução do 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)

Lendo valores SPD de módulos de memória (opcional)

Para ler os valores de tempo de SPD de módulos de memória, instale o pacote i2c-tools. Uma vez instalado, carregue módulo de kernel eeprom.

# modprobe eeprom

Finalmente, veja informações de memória com decode-dimms.

Aqui está uma saída parcial de uma máquina:

# 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     

...

Usando dados de sensores

Front-ends gráficos

Há uma variedade de front-ends para dados de sensores.

  • psensor — Aplicativo GTK+ para monitorar sensores de hardware, incluindo temperaturas e velocidades do cooler. Monitora placa-mãe e CPU (usando lm-sensors), Nvidia GPUs (usando XNVCtrl) e harddisks (usando hddtemp ou libatasmart).
https://wpitchoune.net/psensor/ || psensor
  • xsensors — Interface X11 para o lm_sensors.
https://linuxhardware.org/xsensors/[link inativo 2021-11-13 ⓘ] || xsensors

Para Ambientes de desktop específicos:

  • Freon (Extensão do GNOME Shell) — Extensão para exibir temperatura de CPU, temperatura do disco, temperatura da placa de vídeo, voltagem e RPM do cooler no GNOME Shell.
https://github.com/UshakovVasilii/gnome-shell-extension-freon || gnome-shell-extension-freonAUR
  • GNOME Sensors Applet — Miniaplicativo para o painel do GNOME para exibir leituras dos sensores do hardware, incluindo leituras de temperatura de CPU, velocidades de coolers e voltagem.
http://sensors-applet.sourceforge.net/ || sensors-applet
  • lm-sensors (plugin de LXPanel) — Monitora temperatura/voltagens/velocidades de cooler no LXDE por meio de lm-sensors.
https://danamlund.dk/sensors_lxpanel_plugin/ || sensors-lxpanel-pluginAUR
  • MATE Sensors Applet — Exibe leituras de sensores de hardware no seu painel do MATE.
https://github.com/mate-desktop/mate-sensors-applet || mate-sensors-applet
  • Sensors (Plugin do painel do Xfce4) — Plugin de sensores de hardware para o painel do Xfce.
https://goodies.xfce.org/projects/panel-plugins/xfce4-sensors-plugin || xfce4-sensors-plugin
  • Thermal Monitor (Miniaplicativo do Plasma 5) — Miniaplicativo do Plasma para KDE para monitoramento de CPU, GPU e outros sensores de temperatura disponíveis.
https://github.com/kotelnik/plasma-applet-thermal-monitor || plasma5-applets-thermal-monitor-gitAUR

sensord

Existe um daemon opcional chamado sensord (incluído no pacote lm_sensors) que pode registrar dados em um banco de dados round robin (rrd) e depois visualizar graficamente. Veja a página man sensord(8) para detalhes.

Dicas e truques

Ajustando valores

Em alguns casos, os dados exibidos podem estar incorretos ou os usuários podem desejar renomear a saída. Casos de uso incluem:

  • Valores incorretos de temperatura devido a um deslocamento incorreto (isto é, os tempos são relatados 20°C mais altos do que os reais).
  • Usuários desejam renomear a saída de alguns sensores.
  • Os cores podem ser exibidos em uma ordem incorreta.

Todos os itens acima (e mais) podem ser ajustados sobrepondo as configurações do pacote em /etc/sensors3.conf criando /etc/sensors.d/foo em que qualquer número de os ajustes substituirão os valores padrão. Recomenda-se renomear 'foo' para a marca e modelo da placa-mãe, mas esta nomenclatura de nomenclatura é opcional.

Nota: Não edite /etc/sensors3.conf diretamente, já que atualizações de pacotes vão sobrescrever quaisquer alterações, consequentemente perdendo-as.

Exemplo 1. Ajustante posições de temperatura

Este é um exemplo real de uma placa-mãe Zotac ION-ITX-A-U. Os valores de coretemp estão desativados em 20°C (muito alto) e são ajustados de acordo com as especificações da 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)
...

Execute sensors com a opção -u para ver quais opções estão disponíveis para cada chip físico (modo "raw"):

$ 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
...

Crie o seguinte arquivo substituindo os valores padrão:

/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

Agora, chamar sensors mostra os valores ajustados:

$ 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)
...

Exemplo 2. Renomeando rótulos

Este é um exemplo real em um Asus A7M266. O usuário deseja nomes mais detalhados para os rótulos de temperatura temp1 e 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)
...

Crie o seguinte arquivo para substituir os valores padrão:

/etc/sensors.d/Asus_A7M266
chip "as99127f-*"
  label temp1 "Mobo Temp"
  label temp2 "CPU0 Temp"

Agora, chamar sensors mostra os valores ajustados:

$ 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)
...

Exemplo 3. Renumerando núcleos para sistemas com várias CPUs

Este é um exemplo real de uma estação de trabalho HP Z600 com Xeons duplos. A numeração real dos núcleos físicos está incorreta: numerada 0, 1, 9, 10, que é repetida na segunda CPU. A maioria dos usuários espera que as temperaturas do núcleo relatem em ordem sequencial, ou seja, 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)
...

Agora, execute sensors com a opção -u para ver quais opções estão disponíveis para cada chip físico:

$ 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
...

Crie o seguinte arquivo substituindo os valores padrão:

/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"

Agora, chamar sensors mostra os valores ajustados:

$ 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)
...

Implantação automática de lm_sensors

Os usuários que desejam implantar lm_sensors em várias máquinas podem usar o seguinte para aceitar os valores padrão para todas as perguntas:

# sensors-detect --auto

Solução de problemas

Módulo K10Temp

Alguns processadores K10 têm problemas com seu sensor de temperatura. Da documentação do kernel (linux-<version>/Documentation/hwmon/k10temp):

Todos esses processadores possuem um sensor, mas para o soquete F ou AM2+, o sensor pode retornar valores inconsistentes (errata 319). O driver se recusará a carregar nessas revisões, a menos que os usuários especifiquem o parâmetro do módulo force=1.
Devido a razões técnicas, o driver pode detectar apenas o tipo de soquete da placa-mãe, não os recursos reais do processador. Portanto, os usuários de um processador AM3 em uma placa-mãe AM2+ podem usar com segurança o parâmetro force=1.

Em máquinas afetadas, o módulo relatará "unreliable CPU thermal sensor; monitoring disabled". Para forçar o monitoramento mesmo assim, você pode executar o seguinte:

# rmmod k10temp
# modprobe k10temp force=1

Confirme se o sensor é de fato válido e confiável. Se estiver, pode editar /etc/modprobe.d/k10temp.conf e adicionar:

options k10temp force=1

Isso vai permitir o módulo para carregar na inicialização.

Placas-mãe Asus B450/X399/X470 com Ryzen CPU

Algumas placas-mãe recentes da Asus usam um chip ITE IT8665E, para acessar os sensores de temperatura, ventilador e tensão, pode ser necessário o módulo asus-wmi-sensors. Instale asus-wmi-sensors-dkms-gitAUR e carregue o módulo de kernel asus-wmi-sensors. O módulo usa a interface UEFI e pode exigir uma atualização do BIOS em algumas placas [1].

Como alternativa, o módulo it87 lê os valores diretamente do chip, instale it87-dkms-gitAUR e carregue o módulo de kernel it87.

Placas-mãe Asus Z97/Z170/X570

Com algumas placas-mãe recentes da Asus, o acesso ao ventilador e ao sensor de tensão pode exigir que o módulo de kernel nct6775 esteja carregado.

Além disso, adicione-o aos parâmetros do kernel de inicialização:

 acpi_enforce_resources=lax

Placas-mãe Gigabyte B250/Z370

Algumas placa-mãe da Gigabyte usam o chip ITE IT8686E, ao qual o driver it87 do kernel não dá suporte, até maio de 2019 [2]. Porém, há suporte na versão do upstream do driver de kernel [3]. A variante dkms está contida em it87-dkms-gitAUR.

Gigabyte GA-J1900N-D3V

Essa placa-mãe usa o chip ITE IT8620E (útil também para ler voltagens, temperatura da placa principal, velocidade do cooler). Até outubro de 2014, lm_sensors não tem suporte de driver para o chip ITE IT8620E [4] [5]. Os desenvolvedores do lm_sensors tinham um relatório de que o chip é um pouco compatível com o IT8728F para a parte de monitoramento de hardware. No entanto, a partir de agosto de 2016, [6] lista o IT8620E como suportado.

Você pode carregar o módulo em tempo de execução com modprobe:

$ modprobe it87 force_id=0x8728

Ou você pode carregar os módulos durante o processo de inicialização criando os seguintes arquivos:

/etc/modules-load.d/it87.conf
it87
/etc/modprobe.d/it87.conf
options it87 force_id=0x8603

Quando o módulo estiver carregado, você pode usar a ferramenta sensores para testar o chip.

Você também pode usar fancontrol para controlar os "speedsteps" de do cooler do gabinete.

Problemas na tela do laptop após a execução de sensors-detect

Isso é causado por lm_sensors mexendo nos valores Vcom da tela enquanto sondam sensores. Já foi discutido e resolvido nos fóruns: https://bbs.archlinux.org/viewtopic.php?id=193048. No entanto, certifique-se de ler o tópico cuidadosamente antes de executar qualquer um dos comandos sugeridos.