crates.io docs.rs license

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

```rust // Import all useful traits of this crate. use lm_sensors::prelude::*;

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

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