Expand description
§Hardware monitoring in Linux based on LM Sensors
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.
§Listing all available sensors
// 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);
}
}
}
}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§Versioning
This project adheres to Semantic Versioning.
The CHANGELOG.md file details notable changes over time.
Re-exports§
pub use crate::bus::Bus;pub use crate::chip::Chip;pub use crate::chip::ChipRef;pub use crate::feature::FeatureRef;pub use crate::sub_feature::SubFeatureRef;pub use crate::value::Value;
Modules§
- bus
- Bus connections.
- chip
- Chips controlling sensors and actuators.
- errors
- Errors.
- feature
- Sensor or actuator (a.k.a., feature) controlled by a chip.
- sub_
feature - Data reported by a sensor or set for an actuator (a.k.a., sub-feature) controlled by a chip.
- value
- Values of sensors or actuators.
Structs§
- Initializer
- LM sensors library initializer, producing an instance of
LMSensors. - LMSensors
- LM sensors library instance, producing instances of
Chips,Buses, etc.