Get Information About Your BIOS / Server Hardware From a Shell Without Opening Chassis ( BIOS Decoder )

by on January 24, 2008 · 30 comments· LAST UPDATED July 24, 2008

in , ,

biosdecode is a command line utility to parses the BIOS memory and prints information about all structures (or entry points) it knows of. 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

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 computer’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.

Task: Display information about IPMI Device

# dmidecode --type 38
Output:

# 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

Task: Display information about PCI / PCIe Slots

# dmidecode --type 9

# 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

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}:

# TypeShort Description
0BIOS
1System
2Base Board
3Chassis
4Processor
5Memory Controller
6Memory Module
7Cache
8Port Connector
9System Slots
10On Board Devices
11OEM Strings
12System Configuration Options
13BIOS Language
14Group Associations
15System Event Log
16Physical Memory Array
17Memory Device
1832-bit Memory Error
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
32System Boot
3364-bit Memory Error
34Management Device
35Management Device Component
36Management Device Threshold Data
37Memory Channel
38IPMI Device
39Power Supply

Display Power supply information, enter:
# dmidecode --type 39
Display CPU information, enter:
# dmidecode --type processor
Read man page for more information:
$ man dmidecode

Other tools and commands to gather hardware information

Updated for accuracy.

TwitterFacebookGoogle+PDF versionFound an error/typo on this page? Help us!

1 Daemones January 25, 2008 at 2:14 am

Very Very Good
thank :D

2 tiger74 January 25, 2008 at 7:06 am

Very nice article! It helps me in writing documentation about servers.
Thanks vivek :)

3 rahul January 25, 2008 at 12:05 pm

gud one !! i think i will learn lots new things from this site !! thx buddy :)

4 ezeze5000 January 25, 2008 at 12:19 pm

Works in Ubuntu Desktop 7.10, if you put the SUDO command in front of it.

5 Patrick Anderson January 26, 2008 at 5:53 pm

The last few examples have the typo: “midecode” instead of “dmidecode”.

6 nixCraft January 26, 2008 at 7:16 pm

Patrick,

Thanks for the heads up!

7 xingtian.zhang January 29, 2008 at 12:31 am

That’s very good.

8 Dan January 29, 2008 at 11:53 am

Thanks for this, very handy :D

9 Raj January 29, 2008 at 1:48 pm

+1 thanks – very handy tool

10 kkd March 10, 2008 at 9:01 am

hi, I will study to vsftpd. I want help me to source.

11 Ryan D March 21, 2008 at 7:53 pm

i work in a school as a IT manager. i need to get into the bios through command prompt and check the memory and other things. what is the code to do so.

all suggestions would be kindly accepted

12 vivek sharma August 8, 2008 at 6:48 am

i am frequent visitor to this site and i get lot of suitable information. please help me in writing shell script for getting information of thumb drive like id no., name of manufacturer, hostname who has inserted in etc… similarly for CDROM also…
please help me out…
thanks
regards

13 Harpreet September 5, 2008 at 6:21 am

Thanks Buddy :) Its works

14 Gaurav December 16, 2008 at 1:16 pm

It’s great and I got more than what I want.

:)

15 Giovanni March 13, 2009 at 2:37 pm

Great resource!
Thanks!

16 Francisco Ramirez April 28, 2009 at 8:41 pm

Very good tool, however it would be nice if you could do a compressed list like lshw -short does.
Just my 2cents tho.

17 Hilaire May 14, 2009 at 4:19 pm

Do you have a Bios Decoder for Windows servers in a script format or command to obtain the same information described in this article.
Very intersting article indeed.
Thank you, Zirigo

18 Anand Babu October 1, 2009 at 11:55 am

i really love it

thanks,

19 Nix October 8, 2009 at 10:23 am

Nice…. :-)

Is there any way from where I can change BIOS values/options from Linux Console.
e.g. Changing Boot priority from HDD to CDROM or PXE.

20 jürgen September 9, 2010 at 5:49 am

you can use smartstart scripting toolkit for linux
or hpasmcli

21 SIFE November 24, 2009 at 2:57 pm

Salamo Alikom
can i do this in assembly ?

22 Charanjit Singh January 2, 2010 at 12:42 pm

Nice Article, really helpful in audit.

23 Jairo April 13, 2010 at 11:31 am

Very nice. it help me a lot.

24 ROD June 25, 2010 at 6:48 pm

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

25 jürgen September 9, 2010 at 5:49 am

use: hpasmcli -s “show server”

26 pg October 3, 2010 at 4:35 pm

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.

27 Drieman October 25, 2011 at 2:25 am

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

28 martin November 3, 2011 at 1:42 am

thanks as well.

29 mark November 2, 2012 at 12:23 pm

so how do I edit the DMI information returned?

30 clement December 11, 2012 at 9:25 am

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.

Comments on this FAQ are closed. If you'd like to continue the discussion on this topic, you can do so at our forum.

Tagged as: , , , , , , , , , , , , , , , , , , , , , , , , , ,

Previous post:

Next post: