https://github.com/sdnvx/opendmi
Cross-platform DMI/SMBIOS framework
https://github.com/sdnvx/opendmi
c cpp dmi json linux macos python smbios xml yaml
Last synced: 2 months ago
JSON representation
Cross-platform DMI/SMBIOS framework
- Host: GitHub
- URL: https://github.com/sdnvx/opendmi
- Owner: sdnvx
- License: bsd-3-clause
- Created: 2025-10-03T19:51:25.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2026-01-07T19:11:35.000Z (3 months ago)
- Last Synced: 2026-01-08T08:50:31.801Z (3 months ago)
- Topics: c, cpp, dmi, json, linux, macos, python, smbios, xml, yaml
- Language: C
- Homepage:
- Size: 948 KB
- Stars: 20
- Watchers: 1
- Forks: 0
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
- Roadmap: ROADMAP.md
Awesome Lists containing this project
README
# 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](ROADMAP.md) and [CHANGELOG](CHANGELOG.md) 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 data
* `opendmi-dbus` - D-bus service providing access to DMI/SMBIOS data
* `libopendmi` - C library providing direct interface to DMI/SMBIOS
* `libopendmi-go` - Go bindings for `libopendmi`
* `libopendmi-python` - Python bindings for `libopendmi`
* `libopendmi-rust` - Rust bindings for `libopendmi`
## 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 enabled
* `libyaml` — optional, only when YAML support is enabled
#### libopendmi
* None
### Configuring
Use the following command to configure OpenDMI build:
```sh
$ ./build.sh configure
```
This produces a debug build by default. Optimization isn't enabled, and debug
assertions are included. Pass `--release` to configure a release build:
```sh
$ ./build.sh configure --release
```
For advanced configuration options, see usage:
```sh
$ ./build.sh --help
```
### Building
Use the following command to build OpenDMI:
```sh
$ ./build.sh build
```
### Testing
OpenDMI uses the CTest framework for testing. You can simply run it to ensure
that build was successful:
```sh
$ ./build.sh test
```
## Contributing
Please feel free to test it and create 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:
```sh
$ dmidecode --dump-bin
```
See [CONTRIBUTING](CONTRIBUTING.md) for more details.
## Authors
* [Dmitry Sednev](https://github.com/sdnvx)
* [Dmitry Kuzmenko](https://github.com/xerrial)
* [Jorn](https://github.com/jornissimo)
## Licensing
OpenDMI is licensed under BSD 3-clause license. See `LICENSE` for details.