lm-sensors
provides user-space support for the hardware monitoring drivers
in Linux.
This crate is Linux-specific. Building it for non-Linux platforms, or for the Linux kernel, results in an empty crate.
This crate links to libsensors
, and requires it to be
installed.
Linking to libsensors
happens transitively through depending on the
sensors-sys
crate.
The sensors-sys
crate documentation illustrates, among other things,
how to install libsensors
and control aspects of this linking.
// Initialize LM sensors library.
let sensors = lm_sensors::Initializer::default().initialize()?;
// Print all chips.
for chip in sensors.chip_iter(None) {
if let Some(path) = chip.path() {
println!("chip: {} at {} ({})", chip, chip.bus(), path.display());
} else {
println!("chip: {} at {}", chip, chip.bus());
}
// Print all features of the current chip.
for feature in chip.feature_iter() {
let name = feature.name().transpose()?.unwrap_or("N/A");
println!(" {}: {}", name, feature);
// Print all sub-features of the current chip feature.
for sub_feature in feature.sub_feature_iter() {
if let Ok(value) = sub_feature.value() {
println!(" {}: {}", sub_feature, value);
} else {
println!(" {}: N/A", sub_feature);
}
}
}
}
# Ok::<(), lm_sensors::errors::Error>(())
The following is an example output of the sample above:
chip: iwlwifi_1-virtual-0 at Virtual device (/sys/class/hwmon/hwmon8)
temp1: temp1
temp1_input: N/A
chip: pch_cometlake-virtual-0 at Virtual device (/sys/class/hwmon/hwmon6)
temp1: temp1
temp1_input: 67 C
chip: ucsi_source_psy_USBC000:001-isa-0000 at ISA adapter (/sys/class/hwmon/hwmon10)
in0: in0
in0_input: 5 V
in0_min: 5 V
in0_max: 5 V
curr1: curr1
curr1_input: 0 A
curr1_max: 1.5 A
chip: coretemp-isa-0000 at ISA adapter (/sys/class/hwmon/hwmon4)
temp1: Package id 0
temp1_input: 71 C
temp1_max: 100 C
temp1_crit: 100 C
temp1_crit_alarm:
temp2: Core 0
temp2_input: 62 C
temp2_max: 100 C
temp2_crit: 100 C
temp2_crit_alarm:
temp3: Core 1
temp3_input: 63 C
temp3_max: 100 C
temp3_crit: 100 C
temp3_crit_alarm:
temp4: Core 2
temp4_input: 63 C
temp4_max: 100 C
temp4_crit: 100 C
temp4_crit_alarm:
temp5: Core 3
temp5_input: 71 C
temp5_max: 100 C
temp5_crit: 100 C
temp5_crit_alarm:
temp6: Core 4
temp6_input: 62 C
temp6_max: 100 C
temp6_crit: 100 C
temp6_crit_alarm:
temp7: Core 5
temp7_input: 63 C
temp7_max: 100 C
temp7_crit: 100 C
temp7_crit_alarm:
temp8: Core 6
temp8_input: 61 C
temp8_max: 100 C
temp8_crit: 100 C
temp8_crit_alarm:
temp9: Core 7
temp9_input: 61 C
temp9_max: 100 C
temp9_crit: 100 C
temp9_crit_alarm:
chip: nvme-pci-0200 at PCI adapter (/sys/class/hwmon/hwmon2)
temp1: Composite
temp1_input: 52.85 C
temp1_max: 84.85 C
temp1_min: -273.15 C
temp1_crit: 84.85 C
temp1_alarm:
temp2: Sensor 1
temp2_input: 52.85 C
temp2_max: 65261.85 C
temp2_min: -273.15 C
temp3: Sensor 2
temp3_input: 45.85 C
temp3_max: 65261.85 C
temp3_min: -273.15 C
chip: acpitz-acpi-0 at ACPI interface (/sys/class/hwmon/hwmon0)
temp1: temp1
temp1_input: 61 C
temp1_crit: 128 C
chip: thinkpad-isa-0000 at ISA adapter (/sys/class/hwmon/hwmon7)
fan1: fan1
fan1_input: 2657 RPM
fan2: fan2
fan2_input: 2583 RPM
temp1: CPU
temp1_input: 61 C
temp2: GPU
temp2_input: 58 C
temp3: temp3
temp3_input: 64 C
temp4: temp4
temp4_input: 1 C
temp5: temp5
temp5_input: 60 C
temp6: temp6
temp6_input: 65 C
temp7: temp7
temp7_input: 68 C
temp8: temp8
temp8_input: 0 C
chip: ucsi_source_psy_USBC000:002-isa-0000 at ISA adapter (/sys/class/hwmon/hwmon11)
in0: in0
in0_input: 0 V
in0_min: 0 V
in0_max: 0 V
curr1: curr1
curr1_input: 0 A
curr1_max: 0 A
chip: nvme-pci-5500 at PCI adapter (/sys/class/hwmon/hwmon3)
temp1: Composite
temp1_input: 51.85 C
temp1_max: 83.85 C
temp1_min: -273.15 C
temp1_crit: 84.85 C
temp1_alarm:
temp2: Sensor 1
temp2_input: 51.85 C
temp2_max: 65261.85 C
temp2_min: -273.15 C
temp3: Sensor 2
temp3_input: 48.85 C
temp3_max: 65261.85 C
temp3_min: -273.15 C
chip: BAT0-acpi-0 at ACPI interface (/sys/class/hwmon/hwmon1)
in0: in0
in0_input: 12.255 V
This project adheres to Semantic Versioning.
The CHANGELOG.md
file details notable changes over time.