C Makefile
Clone or download
Failed to load latest commit information.
man dmidecode: Add system-family direct string option Jun 6, 2017
.gitattributes Use the appropriate git diff drivers for C source files May 24, 2017
.gitignore Rename .cvsignore to .gitignore Aug 10, 2015
AUTHORS dmidecode: Unmask LRDIMM in memory type detail Jun 30, 2016
CHANGELOG Set version to 3.1. May 23, 2017
LICENSE LICENSE: Update to the latest upstream version. Amongst other things,… Jan 13, 2014
Makefile Added support for Apple macOS Jul 1, 2017
README Cygwin is no longer supported Sep 22, 2016
biosdecode.c biosdecode: Decode Intel Multiprocessor entry point Jan 20, 2017
config.h Added support for Apple macOS Jul 1, 2017
dmidecode.c Added support for Apple macOS Jul 1, 2017
dmidecode.h dmioem: Move function is_printable to dmidecode.c May 21, 2015
dmioem.c Decoded HP-specific DMI type 233, and refactored 209 and 221 to use a… Aug 4, 2015
dmioem.h Update my e-mail address Feb 3, 2014
dmiopt.c dmidecode: Add system-family direct string option Jun 6, 2017
dmiopt.h Fix sparse errors Apr 28, 2015
ownership.c Fix sparse warnings Apr 28, 2015
types.h Mass coding-style change: add spaces around operators. Oct 26, 2008
util.c util: Let callers pass an offset to read_file Apr 11, 2017
util.h util: Let callers pass an offset to read_file Apr 11, 2017
version.h Set version to 3.1. May 23, 2017
vpddecode.c Update my e-mail address Feb 3, 2014
vpdopt.c Fix sparse warnings Apr 28, 2015
vpdopt.h Update my e-mail address Feb 3, 2014



Dmidecode reports information about your system's hardware as described in
your system BIOS according to the SMBIOS/DMI standard. This information
typically includes system manufacturer, model name, serial number, BIOS
version, asset tag as well as a lot of other details of varying level of
interest and reliability depending on the manufacturer. This will often
include usage status for the CPU sockets, expansion slots (e.g. AGP, PCI,
ISA) and memory module slots, and the list of I/O ports (e.g. serial,
parallel, USB).

DMI data can be used to enable or disable specific portions of kernel code
depending on the specific hardware. Thus, one use of dmidecode is for kernel
developers to detect system "signatures" and add them to the kernel source
code when needed.

Beware that DMI data have proven to be too unreliable to be blindly trusted.
Dmidecode does not scan your hardware, it only reports what the BIOS told it


The home web page for dmidecode is hosted on Savannah:
You will find the latest version (including CVS) there, as well as fresh news
and other interesting material, such as a list of related projects and

This program was first written for Linux, and has since been reported to work
on FreeBSD, NetBSD, OpenBSD, BeOS and Solaris as well.

There's no configure script, so simply run "make" to build dmidecode, and
"make install" to install it. You also can use "make uninstall" to remove
all the files you installed. By default, files are installed in /usr/local
but you can change this behavior by editing the Makefile file and setting
prefix to wherever you want. You may change the C compiler and the
compilation flags as well.

Optionally, you can run "make strip" prior to "make install" if you want
smaller binaries. However, be aware that this will prevent any further
attempt to debug the programs.

Two parameters can be set in the Makefile file to make dmidecode work on
non-i386 systems. They should be used if your system uses the big endian
byte ordering (Motorola) or doesn't support unaligned memory accesses,
respectively. For example, compiling for a SPARC processor would require
both (but I am not aware of SPARC-based systems implementing SMBIOS).
Compiling for an IA64 processor requires the memory alignment workaround,
and it is enabled automatically.


Each tool has a manual page, found in the "man" subdirectory. Manual pages
are installed by "make install". See these manual pages for command line
interface details and tool specific information.

For an history of the changes made to dmidecode, see the CHANGELOG file.

If you need help, your best chances are to visit the web page (see the
INSTALLATION section above) or to get in touch with the developers directly.
Have a look at the AUTHORS file and contact one of the maintainers.

If you want to help with the development of dmidecode, please consider
joining the dmidecode-devel discussion list:



Non-Linux systems are not yet supported.


Note that mmap() is now used by default wherever possible, since this seems
to solve a number of problems. This default behavior can be changed in
config.h. Just to make sure this is clear, mmap() is not used for performance
reasons but to increase the number of systems on which dmidecode can be
successfully run.


Dmidecode used to work under Cygwin. However the /dev/mem interface was
removed at some point in time so it no longer works.


Three other tools come along with dmidecode: biosdecode, ownership and
vpddecode. These tools are only useful on systems with a BIOS, so they
are not built on IA-64 by default.


This one prints all BIOS related information it can find in /dev/mem.
It used to be part of dmidecode itself, but as dmidecode was growing,
we felt that the non-DMI part had to be moved to a separate tool.


This tool was written on a request by Luc Van de Velde for use with Novell
tools in his company. It retrieves the "ownership tag" that can be set on
most Compaq computers. Since it uses the same mechanisms dmidecode and
biosdecode use, and could be of some use for other people as well, we
decided to make it part of the project.


This tool prints the contents of the "vital product data" structure as
found in most IBM and Lenovo computers. It used to have a lookup table
for the machine name, but it was unreliable and hard to maintain so it
was ultimately dropped. It has a command line interface.