| Crates.io | dmidecode |
| lib.rs | dmidecode |
| version | 1.0.0 |
| created_at | 2018-06-28 15:18:53.478283+00 |
| updated_at | 2025-06-30 21:01:38.147429+00 |
| description | Decode SMBIOS/DMI information into accessible data structures |
| homepage | |
| repository | https://github.com/jcreekmore/dmidecode |
| max_upload_size | |
| id | 72108 |
| size | 470,599 |
A Rust library for parsing raw SMBIOS/DMI tables. This crate lets you read and decode system firmware information provided via /sys/firmware/dmi/tables/ on Linux, or directly from memory dumps.
# Cargo.toml
[dependencies]
dmidecode = "0.9"
use dmidecode::Structure;
fn main() -> Result<(), Box<dyn std::error::Error>> {
eprintln!("Collecting DMI Information...");
// Get the SMBIOS header and DMI table from sysfs.
let buf = std::fs::read("/sys/firmware/dmi/tables/smbios_entry_point")?;
let dmi = std::fs::read("/sys/firmware/dmi/tables/DMI")?;
let entry = dmidecode::EntryPoint::search(&buf)?;
for table in entry.structures(&dmi) {
let Ok(table) = table else {
eprintln!("DMI tables contain malformed structure: {table:?}");
continue;
};
match table {
Structure::System(system) => {
// do stuff
}
Structure::BaseBoard(base_board) => {
// do stuff
}
// ...
_ => continue,
}
}
Ok(())
}
In no_std mode, almost all of the same API is available and works the same
way. To depend on dmidecode in no_std mode, disable our default enabled
std feature in Cargo.toml.
The std feature just implements the Error trait on error types used by
dmidecode.
[dependencies]
dmidecode = { version = "0.9", default-features = false }
the Cargo.toml file. This may be bumped in minor releases as necessary.
dmidecode is released under the terms of the MIT license.