System Management BIOS


In computing, the System Management BIOS specification defines data structures that can be used to read management information produced by the BIOS of a computer. This eliminates the need for the operating system to probe hardware directly to discover what devices are present in the computer. The SMBIOS specification is produced by the Distributed Management Task Force, a non-profit standards development organization. The DMTF estimates that two billion client and server systems implement SMBIOS.
The DMTF released the version 3.3.0 of the specification on September 25, 2019.
SMBIOS was originally known as Desktop Management BIOS, since it interacted with the Desktop Management Interface.

History

Version 1 of the Desktop Management BIOS specification was produced by Phoenix Technologies in or before 1996.
Version 2.0 of the Desktop Management BIOS specification was released on March 6, 1996 by American Megatrends, Award Software, Dell, Intel, Phoenix Technologies, and SystemSoft Corporation. It introduced 16-bit plug-and-play functions used to access the structures from Windows 95.
The last version to be published directly by vendors was 2.3 on August 12, 1998. The authors were American Megatrends, Award Software, Compaq, Dell, Hewlett-Packard, Intel, International Business Machines, Phoenix Technologies, and SystemSoft Corporation.
Circa 1999, the Distributed Management Task Force took ownership of the specification. The first version published by the DMTF was 2.3.1 on March 16, 1999. At approximately the same time Microsoft started to require that OEMs and BIOS vendors support the interface/data-set in order to have Microsoft certification.
Version 3.0.0, introduced in February 2015, added a 64-bit entry point, which can coexist with the previously defined 32-bit entry point.

Contents

The SMBIOS table consists in an entry point, and a variable number of structures that describe platform components and features. These structures are occasionally referred to as "tables" or "records" in third-party documentation.

Structure types

As of version 3.3.0, the SMBIOS specification defines the following structure types:
TypeDescription
0BIOS Information
1System Information
2Baseboard Information
3System Enclosure or Chassis
4Processor Information
5Memory Controller Information
6Memory Module Information
7Cache Information
8Port Connector Information
9System Slots
10On Board Devices Information
11OEM Strings
12System Configuration Options
13BIOS Language Information
14Group Associations
15System Event Log
16Physical Memory Array
17Memory Device
1832-Bit Memory Error Information
19Memory Array Mapped Address
20Memory Device Mapped Address
21Built-in Pointing Device
22Portable Battery
23System Reset
24Hardware Security
25System Power Controls
26Voltage Probe
27Cooling Device
28Temperature Probe
29Electrical Current Probe
30Out-of-Band Remote Access
31Boot Integrity Services Entry Point
32System Boot Information
3364-Bit Memory Error Information
34Management Device
35Management Device Component
36Management Device Threshold Data
37Memory Channel
38IPMI Device Information
39System Power Supply
40Additional Information
41Onboard Devices Extended Information
42Management Controller Host Interface
43TPM Device
44Processor Additional Information
126Inactive
127End-of-Table
128–255Available for system- and OEM- specific information

Accessing SMBIOS data

The EFI configuration table contains entries pointing to the SMBIOS 2 and/or SMBIOS 3 tables. There are several ways to access the data, depending on the platform and operating system.

From UEFI

In the UEFI Shell, the SmbiosView command can retrieve and display the SMBIOS data. One can often enter the UEFI shell by entering the BIOS, and then selecting the shell as a boot option.

From Linux

The Linux kernel contains an SMBIOS decoder, allowing systems administrators to inspect system hardware configuration and to enable or disable certain workarounds for problems with specific systems, based on the provided SMBIOS information.
The userspace command-line utility inspects this data. Information provided by this utility typically includes the system manufacturer, model name, serial number, BIOS version and asset tag, as well other details of varying level of interest and reliability, depending on the system manufacturer. The information often includes usage status for the CPU sockets, expansion slots and memory module slots, and the list of I/O ports. Decoded DMI tables for various computer models are collected in a public GitHub repository.

From Windows

specifies WMI as the preferred mechanism for accessing SMBIOS information from Microsoft Windows.
On Windows systems that support it, some SMBIOS information can be viewed with either the WMIC utility with 'BIOS'/'MEMORYCHIP'/'BASEBOARD' and similar parameters, or by looking in the Windows Registry under HKLM\HARDWARE\DESCRIPTION\System
Various software utilities can retrieve raw SMBIOS data, including smbiosw
and SMBIOS Peek.

Generating SMBIOS data

Table and structure creation is normally up to the system firmware/BIOS. The UEFI Platform Initialization specification includes an SMBIOS protocol that allows components to submit SMBIOS structures for inclusion, and enables the producer to create the SMBIOS table for a platform.
Platform virtualization software can also generate SMBIOS tables for use inside VMs, for instance QEMU.
If the SMBIOS data is not generated and filled correctly then the machine may behave unexpectedly. For example, a Mini PC that advertises Chassis Information | Type = Tablet may behave unexpectedly using Linux. A desktop manager like GNOME will attempt to monitor a non-existent battery and shutdown the screen and network interfaces when the missing battery drops below a threshold. Additionally, if the Chassis Information | Manufacturer is not filled in correctly then work-arounds for the incorrect Type = Tablet problem cannot be applied.