Previous Page
PCLinuxOS Magazine
Article List
Next Page

dmidecode: See What Your BIOS Has To Say

by Paul Arnote (parnote)

Linux, Unix and BSD users have it good. Real good. Especially when it comes to polling their computer about its current BIOS settings.

BIOS stands for "Basic Input Output System," and the computer's BIOS acts like a traffic cop or translator, making it possible for all of the different components and parts of your computer hardware to talk with one another and interoperate in harmony. Sometimes, your computer BIOS is also sometimes known as DMI, which is an abbreviation for Desktop Management Interface.

Source: Wikipedia

How many times have you wondered about whether a certain setting was available or enacted in your computer's BIOS? Or, how many times did you wonder about your computer's hardware configuration? Well, with the dmidecode command, you can find all of that sort of information your mind can ingest.

dmidecode is already installed on your PCLinuxOS installation. Open a terminal session, switch to the root user, and type dmidecode at the command line prompt. You should be shown hundreds of lines of output that provides details about most every aspect of your computer hardware. Below is a snippet of information dmidecode is able to provide. This dmidecode output is from my IBM Thinkpad T42 laptop.

# dmidecode 2.12
SMBIOS version fixup (2.33 -> 2.3).
SMBIOS 2.3 present.
61 structures occupying 2126 bytes.
Table at 0x000E0010.

Handle 0x0000, DMI type 0, 20 bytes
BIOS Information
    Vendor: IBM
    Version: 1RETDNWW (3.19 )
    Release Date: 10/13/2005
    Address: 0xDC000
    Runtime Size: 144 kB
    ROM Size: 1024 kB
        PCI is supported
        PC Card (PCMCIA) is supported
        PNP is supported
        APM 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"/720 kB floppy services are supported (int 13h)
        Print screen service is supported (int 5h)
        8042 keyboard services are supported (int 9h)
        Serial services are supported (int 14h)
        Printer services are supported (int 17h)
        CGA/mono video services are supported (int 10h)
        ACPI is supported
        USB legacy is supported
        AGP is supported
        BIOS boot specification is supported

Handle 0x0001, DMI type 1, 25 bytes
System Information
    Manufacturer: IBM
    Product Name: 23738TU
    Version: ThinkPad T42
    Serial Number: L32321Z
    UUID: 56A11681-48B1-11CB-8DF4-B7968D3A47CB
    Wake-up Type: Power Switch

Handle 0x0002, DMI type 2, 8 bytes
Base Board Information
    Manufacturer: IBM
    Product Name: 23738TU
    Version: Not Available
    Serial Number: VJ0BV5CG145

Handle 0x0003, DMI type 3, 17 bytes
Chassis Information
    Manufacturer: IBM
    Type: Notebook
    Lock: Not Present
    Version: Not Available
    Serial Number: Not Available
    Asset Tag: No Asset Information
    Boot-up State: Unknown
    Power Supply State: Unknown
    Thermal State: Unknown
    Security Status: Unknown
    OEM Information: 0x00000000

Handle 0x0004, DMI type 126, 17 bytes

Handle 0x0005, DMI type 126, 17 bytes

Handle 0x0006, DMI type 4, 35 bytes
Processor Information
    Socket Designation: None
    Type: Central Processor
    Family: Pentium M
    Manufacturer: GenuineIntel
    ID: D6 06 00 00 BF F9 E9 AF
    Signature: Type 0, Family 6, Model 13, Stepping 6
        FPU (Floating-point unit on-chip)
        VME (Virtual mode extension)
        DE (Debugging extension)
        PSE (Page size extension)
        TSC (Time stamp counter)
        MSR (Model specific registers)
        MCE (Machine check exception)
        CX8 (CMPXCHG8 instruction supported)
        SEP (Fast system call)
        MTRR (Memory type range registers)
        PGE (Page global enable)
        MCA (Machine check architecture)
        CMOV (Conditional move instruction supported)
        PAT (Page attribute table)
        CLFSH (CLFLUSH instruction supported)
        DS (Debug store)
        ACPI (ACPI supported)
        MMX (MMX technology supported)
        FXSR (FXSAVE and FXSTOR instructions supported)
        SSE (Streaming SIMD extensions)
        SSE2 (Streaming SIMD extensions 2)
        SS (Self-snoop)
        TM (Thermal monitor supported)
        PBE (Pending break enabled)
    Version: Intel(R) Pentium(R) M processor
    Voltage: 1.3 V
    External Clock: 400 MHz
    Max Speed: 1700 MHz
    Current Speed: 1700 MHz
    Status: Populated, Enabled
    Upgrade: None
    L1 Cache Handle: 0x000A
    L2 Cache Handle: 0x000B
    L3 Cache Handle: Not Provided
    Serial Number: Not Specified
    Asset Tag: Not Specified
    Part Number: Not Specified

Handle 0x0007, DMI type 5, 20 bytes
Memory Controller Information
    Error Detecting Method: None
    Error Correcting Capabilities:
    Supported Interleave: One-way Interleave
    Current Interleave: One-way Interleave
    Maximum Memory Module Size: 1024 MB
    Maximum Total Memory Size: 2048 MB
    Supported Speeds:
    Supported Memory Types:
    Memory Module Voltage: 2.9 V
    Associated Memory Slots: 2
    Enabled Error Correcting Capabilities:

Handle 0x0008, DMI type 6, 12 bytes
Memory Module Information
    Socket Designation: DIMM Slot 1
    Bank Connections: 0 1
    Current Speed: Unknown
    Type: DIMM SDRAM
    Installed Size: 1024 MB (Double-bank Connection)
    Enabled Size: 1024 MB (Double-bank Connection)
    Error Status: OK

Handle 0x0009, DMI type 6, 12 bytes
Memory Module Information
    Socket Designation: DIMM Slot 2
    Bank Connections: 2 3
    Current Speed: Unknown
    Type: DIMM SDRAM
    Installed Size: 1024 MB (Double-bank Connection)
    Enabled Size: 1024 MB (Double-bank Connection)
    Error Status: OK

Yes, that's a lot of information ... and that's just a fraction of the total amount of information supplied. To be certain, that's a lot of information to wade through if you are looking for specific information about specific parts of your system. Fortunately, there's a way to limit the dmidecode output.

Looking through the dmidecode output listed above, notice how each "section" of the output is labeled with a specific "DMI type." By knowing what DMI type relates to which section of hardware information, you can tailor dmidecode to show you only the specific data you are seeking.

Here's a list of the different DMI types you can specify:

  1. BIOS
  2. System
  3. Base Board
  4. 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 utilize the different DMI types, issue the command dmidecode -t x, where x is the number of the DMI type you want to display. Thus, dmidecode -t 21 will display the following information that provides details about the built-in pointing devices on my Thinkpad T42:

dmidecode -t 21
# dmidecode 2.12
SMBIOS version fixup (2.33 -> 2.3).
SMBIOS 2.3 present.

Handle 0x0033, DMI type 21, 7 bytes
Built-in Pointing Device
    Type: Track Point
    Interface: PS/2
    Buttons: 3

Handle 0x0034, DMI type 21, 7 bytes
Built-in Pointing Device
    Type: Touch Pad
    Interface: PS/2
    Buttons: 0

Thus, to display information about the memory device, you would enter dmidecode -t 17. To display information about the specific memory modules installed in your computer, you could enter dmidecode -t 6. You could continue with any of the defined DMI types in the list above. If you come across a DMI type that isn't supported by your particular BIOS, you will see the following:

# dmidecode 2.12
SMBIOS version fixup (2.33 -> 2.3).
SMBIOS 2.3 present.

There is an alternate way to display DMI types, and that is by using dmidecode keywords. Let's say you want to inspect all the information about the memory installed in your computer. Instead of specifying DMI types 5, 6, 16 and 17 separately, you could simply type dmidecode -t memory. When you do, all the information from the relevant sections will be displayed all at once.

Here are the dmidecode keywords you can use, followed by the sections that they relate to:

bios 0, 13
system 1, 12, 15, 23, 32
baseboard 2, 10
chassis 3
processor 4
memory 5, 6, 16, 17
cache 7
connector 8
slot 9

Is dmidecode perfect? Nope. In fact, dmidecode has sometimes provided unreliable information. It has nothing to do with any "flaws" in dmidecode. Rather, it's the nature of the beast. DMI data has been proven to be too unreliable to be just trusted blindly. dmidecode doesn't poll the hardware itself. Instead, it simply reports what the BIOS tells it.

Still, dmidecode is a very useful tool in any Linux user's arsenal. So, the next time you need to gather information about your computer configuration, dmidecode is one tool that can quickly provide that necessary information.

Previous Page              Top              Next Page
Copyright (c) 2013, The PCLinuxOS Magazine. All Rights Reserved.