Get Information About Your Linux Server BIOS/Hardware with dmidecode

You can use get BIOS and hardware information with dmidecode command on Linux. No need to open your server or reboot the box. The dmidecode is a command line utility to parses the BIOS memory and prints information about all structures. You can find out more information about your hardware such as:
IPMI Device
Type of memory and speed
Chassis Information
Temperature Probe
Cooling Device
Electrical Current Probe
Processor and Memory Information
Serial numbers
BIOS version
PCI / PCIe Slots and Speed
Much more
The biosdecode parses the BIOS memory and prints the following information about all structures :
SMBIOS (System Management BIOS)
DMI (Desktop Management Interface, a legacy version of SMBIOS)
SYSID
PNP (Plug and Play)
ACPI (Advanced Configuration and Power Interface)
BIOS32 (BIOS32 Service Directory)
PIR (PCI IRQ Routing)
32OS (BIOS32 Extension, Compaq-specific)
VPD (Vital Product Data, IBM-specific)
FJKEYINF (Application Panel, Fujitsu-specific)

In this tip, you will learn about decoding BIOS data (dumping a computer’s DMI ) and getting all information about computer hardware without rebooting the server.

More about the DMI tables

The DMI table doesn’t only describe what the system is currently made of, it also can report the possible evolutions such as the fastest supported CPU or the maximal amount of memory supported.

dmidecode – Read biosdecode data in a human-readable format

Data provided by biosdecode is not in a human-readable format. You need to use dmidecode command for dumping a server’s DMI (SMBIOS) table contents on screen. This table contains a description of the system’s hardware components, as well as other useful pieces of information such as serial numbers and BIOS revision. Thanks to this table, you can retrieve this information without having to probe for the actual hardware. Let us see some examples of dmidecode command.

How to display information about IPMI Device

# dmidecode --type 38
Sample outputs:

# dmidecode 2.7
SMBIOS 2.4 present.
 
Handle 0x0029, DMI type 38, 18 bytes.
IPMI Device Information
        Interface Type: KCS (Keyboard Control Style)
        Specification Version: 2.0
        I2C Slave Address: 0x10
        NV Storage Device: Not Present
        Base Address: 0x0000000000000CA2 (I/O)
        Register Spacing: Successive Byte Boundaries

How to display information about PCI / PCIe Slots

# dmidecode --type 9
Outputs:

# dmidecode 2.7
SMBIOS 2.4 present.
 
Handle 0x000E, DMI type 9, 13 bytes.
System Slot Information
        Designation: PCIX#1-133MHz
        Type: 64-bit PCI-X
        Current Usage: Available
        Length: Long
        ID: 1
        Characteristics:
                3.3 V is provided
 
Handle 0x000F, DMI type 9, 13 bytes.
System Slot Information
        Designation: PCIX#2-100MHz
        Type: 64-bit PCI-X
        Current Usage: Available
        Length: Long
        ID: 2
        Characteristics:
                3.3 V is provided
 
Handle 0x0010, DMI type 9, 13 bytes.
System Slot Information
        Designation: PCIE#3-x8
        Type: Other
        Current Usage: Available
        Length: Other
        Characteristics:
                3.3 V is provided
 
Handle 0x0011, DMI type 9, 13 bytes.
System Slot Information
        Designation: PCIE#4-x8
        Type: Other
        Current Usage: Available
        Length: Other
        Characteristics:
                3.3 V is provided
 
Handle 0x0012, DMI type 9, 13 bytes.
System Slot Information
        Designation: PCIE#5-x8
        Type: Other
        Current Usage: Available
        Length: Other
        Characteristics:
                3.3 V is provided

Task: Find out Information about BIOS

# dmidecode --type 0
Output:

# dmidecode 2.7
SMBIOS 2.4 present.
Handle 0x0000, DMI type 0, 24 bytes.
BIOS Information
        Vendor: Phoenix Technologies LTD
        Version: 6.00
        Release Date: 01/26/2007
        Address: 0xE56C0
        Runtime Size: 108864 bytes
        ROM Size: 1024 kB
        Characteristics:
                PCI is supported
                PNP is supported
                BIOS is upgradeable
                BIOS shadowing is allowed
                ESCD support is available
                Boot from CD is supported
                Selectable boot is supported
                EDD is supported
                3.5"/2.88 MB floppy services are supported (int 13h)
                ACPI is supported
                USB legacy is supported
                LS-120 boot is supported
                ATAPI Zip drive boot is supported
                BIOS boot specification is supported
                Targeted content distribution is supported

Understanding BIOS keywords

The syntax is:
dmidecode --type {KEYWORD / Number }
You need to pass dmidecode following keywords:

  • bios
  • system
  • baseboard
  • chassis
  • processor
  • memory
  • cache
  • connector
  • slot

All DMI types you need to use with dmidecode –type {Number}:

# Type Short Description
0 BIOS
1 System
2 Base Board
3 Chassis
4 Processor
5 Memory Controller
6 Memory Module
7 Cache
8 Port Connector
9 System Slots
10 On Board Devices
11 OEM Strings
12 System Configuration Options
13 BIOS Language
14 Group Associations
15 System Event Log
16 Physical Memory Array
17 Memory Device
18 32-bit Memory Error
19 Memory Array Mapped Address
20 Memory Device Mapped Address
21 Built-in Pointing Device
22 Portable Battery
23 System Reset
24 Hardware Security
25 System Power Controls
26 Voltage Probe
27 Cooling Device
28 Temperature Probe
29 Electrical Current Probe
30 Out-of-band Remote Access
31 Boot Integrity Services
32 System Boot
33 64-bit Memory Error
34 Management Device
35 Management Device Component
36 Management Device Threshold Data
37 Memory Channel
38 IPMI Device
39 Power Supply

To get power supply information, enter:

# dmidecode --type 39

See your server CPU information, enter:

# dmidecode --type processor

Get BIOS info including serial number

# dmidecode -t System

For more info read the man page:
$ man dmidecode

Other tools and commands to gather hardware information

🐧 If you liked this page, please support my work on Patreon or with a donation.
🐧 Get the latest tutorials on SysAdmin, Linux/Unix, Open Source & DevOps topics via:
CategoryList of Unix and Linux commands
File Managementcat
FirewallAlpine Awall CentOS 8 OpenSUSE RHEL 8 Ubuntu 16.04 Ubuntu 18.04 Ubuntu 20.04
Network Utilitiesdig host ip nmap
OpenVPNCentOS 7 CentOS 8 Debian 10 Debian 8/9 Ubuntu 18.04 Ubuntu 20.04
Package Managerapk apt
Processes Managementbg chroot cron disown fg jobs killall kill pidof pstree pwdx time
Searchinggrep whereis which
User Informationgroups id lastcomm last lid/libuser-lid logname members users whoami who w
WireGuard VPNAlpine CentOS 8 Debian 10 Firewall Ubuntu 20.04
30 comments… add one
  • clement Dec 11, 2012 @ 9:25

    I would like to convert my hp PC into a server by changing some BIOS settings. Somebody
    changed for me from being a server into a PC, now I want to change it back.

  • mark Nov 2, 2012 @ 12:23

    so how do I edit the DMI information returned?

  • martin Nov 3, 2011 @ 1:42

    thanks as well.

  • Drieman Oct 25, 2011 @ 2:25

    By now this is an old thread, but still I’d like to add… Nice article! Thanks!

  • pg Oct 3, 2010 @ 16:35

    This is indeed very useful information.

    However, be aware that parsing BIOS memory on a live server can have negative consequences. I have just seen dmidecode halt Apache on a live webserver. If you choose to run dmidecode on a live server: immediately check end user experience to verify vital services have not been halted or interrupted. In my case, Apache reported up, but all httpd processes and dependent processes such as mysql and php were terminated.

  • ROD Jun 25, 2010 @ 18:48

    I want commercial information like “HP Proliant DL380 G5” or SERVER TYPE using Linux command

    • jürgen Sep 9, 2010 @ 5:49

      use: hpasmcli -s “show server”

  • Jairo Apr 13, 2010 @ 11:31

    Very nice. it help me a lot.

  • Charanjit Singh Jan 2, 2010 @ 12:42

    Nice Article, really helpful in audit.

Leave a Reply

Your email address will not be published. Required fields are marked *

Use HTML <pre>...</pre>, <code>...</code> and <kbd>...</kbd> for code samples.