32 releases

Uses new Rust 2024

0.13.4 Aug 15, 2025
0.12.0 Nov 15, 2024
0.11.0 Jul 2, 2024
0.7.0 Aug 18, 2022
0.1.1 Nov 24, 2019

#69 in Hardware support

Download history 1575/week @ 2025-08-27 1352/week @ 2025-09-03 573/week @ 2025-09-10 638/week @ 2025-09-17 617/week @ 2025-09-24 853/week @ 2025-10-01 981/week @ 2025-10-08 877/week @ 2025-10-15 1369/week @ 2025-10-22 869/week @ 2025-10-29 1783/week @ 2025-11-05 1157/week @ 2025-11-12 1156/week @ 2025-11-19 1290/week @ 2025-11-26 66238/week @ 2025-12-03 150865/week @ 2025-12-10

219,688 downloads per month
Used in 3 crates

MIT license

280KB
6K SLoC

unsafe forbidden License

libmedium

A safe rust library to communicate with the sysfs interface of lm-sensors.

Usage

Just add this to your Cargo.toml file:

[dependencies]
libmedium = "0.12"

Cargo-Features

Standard features

  • writeable: Standard feature that enables all functions that write to sysfs. This includes setting pwm values and disabling sensors.
  • sync: Build synchronous versions of all sensors.
  • virtual_sensors: Feature that lets you create virtual sensors. Virtual sensors don't belong to sysfs but can be any file provided by a driver or the user.

Non standard features

  • uom_units: Sensor values are returned as types from the uom crate.
  • unrestricted_parsing: This feature allows parsing of paths other than '/sys/class/hwmon'. This should only be useful for testing and debugging.
  • async: Build asynchronous versions of all sensors.

Examples

  • Print the temperature of all the temp sensors in your system:
use libmedium::{
    parse_hwmons,
    sensors::sync_sensors::{temp::TempSensor, SyncSensor},
};

let hwmons = parse_hwmons().unwrap();
for hwmon in &hwmons {
    println!("hwmon{} with name {}:", hwmon.index(), hwmon.name());
    for (_, temp_sensor) in hwmon.temps() {
        let temperature = temp_sensor.read_input().unwrap();
        println!("\t{}: {}", temp_sensor.name(), temperature);
    }
}
  • Set the pwm value of all your pwm capable fans to full speed (this requires the writeable feature to not be disabled):
use libmedium::{
    parse_hwmons,
    sensors::sync_sensors::pwm::WriteablePwmSensor,
    units::{Pwm, PwmEnable},
};

let hwmons = parse_hwmons().unwrap();
for hwmon in &hwmons {
    for (_, pwm) in hwmon.writeable_pwms() {
        pwm.write_enable(PwmEnable::ManualControl).unwrap();
        pwm.write_pwm(Pwm::FULLSPEED).unwrap();
    }
}

License

This project is licensed under the MIT License - see the LICENSE file for details

Dependencies

~0.1–4MB
~75K SLoC