OpenDMI
OpenDMI is a cross-platform, commercial-grade DMI/SMBIOS framework, focused on functionality and ease of use. It provides direct access to all of the DMI/SMBIOS data, command line tools, bindings for major programming languages and even more.
The project is under active development, see ROADMAP and CHANGELOG for details.
Highlights
- Platform-agnostic access to DMI/SMBIOS structures.
- Full SMBIOS support up to version 3.9.
- Bindings for Python, Go and Rust languages.
- Modular extensions for handling OEM-specific structures.
- JSON, XML and YAML output support for automation purposes.
- Works on Linux, MacOS, BSD and Windows platforms.
- Small footprint, no external dependencies.
Components
opendmi- Command line tool to query DMI/SMBIOS dataopendmi-dbus- D-bus service providing access to DMI/SMBIOS datalibopendmi- C library providing direct interface to DMI/SMBIOSlibopendmi-go- Go bindings forlibopendmilibopendmi-python- Python bindings forlibopendmilibopendmi-rust- Rust bindings forlibopendmi
Building from sources
Prerequisites
- GCC, CLang or MSVC compiler
- CMake 3.25 or newer
- AsciiDoctor (used to generate documentation and man pages)
- CppCheck (optional)
Dependencies
opendmi
libxml2— optional, only when XML support is enabledlibyaml— optional, only when YAML support is enabledlibyajl— optional, only when JSON support is enabled
libopendmi
- None
Configuring
Use the following command to configure OpenDMI build:
$ ./build.sh configureThis produces a debug build by default. Optimization isn't enabled, and debug
assertions are included. Pass --release to configure a release build:
$ ./build.sh configure --releaseFor advanced configuration options, see usage:
$ ./build.sh --helpBuilding
Use the following command to build OpenDMI:
$ ./build.sh buildTesting
OpenDMI uses the CTest framework for testing. You can simply run it to ensure
that build was successful:
$ ./build.sh testContributing
Please feel free to test it and create bug reports or feature requests
on GitHub. You can also help the project by sending SMBIOS dumps to the
authors. To get the dump you can use the following command:
$ dmidecode --dump-bin <filename>See CONTRIBUTING for more details.
Contributors
Licensing
OpenDMI is licensed under BSD 3-clause license. See LICENSE for details.