HWMON é uma abreviação de Hardware Monitoring, que é uma interface do kernel Linux para monitorar sensores de hardware, como temperatura, voltagem, corrente e velocidade do ventilador. O HWMON permite que os usuários e os programas acessem as informações dos sensores de forma padronizada e independente do fabricante.
O HWMON é composto por dois componentes principais: os drivers dos sensores e o sysfs. Os drivers dos sensores são módulos do kernel que se comunicam com os chips dos sensores e fornecem os dados para o sysfs. O sysfs é um sistema de arquivos virtual que expõe as informações do kernel para o espaço do usuário. O sysfs cria um diretório chamado hwmon para cada dispositivo de monitoramento de hardware detectado, e dentro desse diretório há arquivos que representam os atributos dos sensores, como nome, tipo, valor, limite e alarme.
Os usuários podem ler e escrever nesses arquivos para obter ou alterar as informações dos sensores. Por exemplo, para ler a temperatura do processador, pode-se usar o comando cat /sys/class/hwmon/hwmon0/temp1_input, que retorna o valor da temperatura em miligraus Celsius. Para alterar o limite máximo de temperatura, pode-se usar o comando echo 80000 > /sys/class/hwmon/hwmon0/temp1_max, que define o limite para 80 graus Celsius.
Além de usar o sysfs diretamente, os usuários também podem usar ferramentas de espaço do usuário que facilitam a visualização e o controle dos sensores. Algumas dessas ferramentas são:
- lm-sensors: um pacote que contém bibliotecas, utilitários e scripts para configurar e acessar os sensores. O utilitário mais usado é o sensors, que mostra a saída dos sensores em um formato legível.
- hddtemp: um programa que mostra a temperatura dos discos rígidos usando o protocolo SMART.
- psensor: uma interface gráfica que mostra os valores e os gráficos dos sensores em tempo real.
- fancontrol: um script que permite ajustar a velocidade dos ventiladores de acordo com a temperatura dos componentes.
O HWMON é uma ferramenta útil para monitorar o estado e o desempenho do hardware no Linux. Ele pode ajudar a prevenir problemas como superaquecimento, sobretensão ou falha nos componentes. Ele também pode ajudar a otimizar o consumo de energia e o ruído do sistema.