dmidecode - DMI Table Decoder

Hardware Information from BIOS Without Opening the Case

About dmidecode

The dmidecode command reads and displays the contents of the DMI (Desktop Management Interface) table, also known as SMBIOS (System Management BIOS). This provides detailed information about system hardware components as reported by the BIOS/UEFI firmware.

Common Use Cases:

  • Identifying installed hardware without physical inspection
  • Checking memory configuration and available slots
  • Finding system and motherboard serial numbers for warranty
  • Determining maximum supported memory capacity
  • Identifying CPU specifications and features
  • Documenting hardware for inventory and compliance
  • Verifying BIOS/firmware versions
  • Planning hardware upgrades (RAM, CPU compatibility)

Requirements: Must be run as root or with sudo, as it accesses system firmware tables.

Common Options Reference
Option Description
-t TYPE Display only entries of specified type (bios, system, baseboard, chassis, processor, memory, cache, connector, slot)
-s STRING Display only the value of specified DMI string (system-serial-number, baseboard-product-name, etc.)
-q Quiet mode - show less verbose output
-u Show raw DMI data in hex dump format
--from-dump FILE Read DMI data from a binary dump file instead of from /dev/mem
--dump-bin FILE Dump DMI data to a binary file for later analysis
-H Display numeric handles for all structures
DMI Type Numbers Quick Reference
Type Number Information Provided
bios 0 BIOS vendor, version, release date
system 1 System manufacturer, product name, serial number, UUID
baseboard 2 Motherboard manufacturer, product, version, serial
chassis 3 Chassis type, manufacturer, serial number
processor 4 CPU family, manufacturer, version, speed, cores
memory 16, 17 Memory array info, module size, speed, type
cache 7 CPU cache configuration and sizes
slot 9 Expansion slot types and current usage
Detailed Examples

Example 1Display All System Information

Show complete DMI table contents:

$ sudo dmidecode | less
# dmidecode 3.3 Getting SMBIOS data from sysfs. SMBIOS 3.2.0 present. Table at 0x7A8B3000. Handle 0x0000, DMI type 0, 26 bytes BIOS Information Vendor: American Megatrends Inc. Version: 1.40 Release Date: 08/25/2020 Address: 0xF0000 Runtime Size: 64 kB ROM Size: 16 MB ...

Explanation:

  • Displays complete DMI table with all hardware information
  • Shows SMBIOS version (3.2.0 in this example)
  • Each entry has a Handle (0x0000) and DMI type
  • Output can be very long - pipe to less for navigation
  • Requires root/sudo to access /dev/mem
  • Information comes directly from BIOS/UEFI firmware
Note: On virtual machines, dmidecode may show VM-specific information or limited hardware details. Physical servers and workstations provide the most complete information.

Example 2Check Memory Configuration

Display detailed memory information including slots and capacity:

$ sudo dmidecode -t memory
# dmidecode 3.3 Getting SMBIOS data from sysfs. SMBIOS 3.2.0 present. Handle 0x0029, DMI type 16, 23 bytes Physical Memory Array Location: System Board Or Motherboard Use: System Memory Error Correction Type: None Maximum Capacity: 64 GB Number Of Devices: 4 Handle 0x002A, DMI type 17, 84 bytes Memory Device Array Handle: 0x0029 Total Width: 64 bits Data Width: 64 bits Size: 16384 MB Form Factor: DIMM Set: None Locator: DIMM_A1 Bank Locator: BANK 0 Type: DDR4 Speed: 3200 MT/s Manufacturer: Corsair Serial Number: 00000000 Part Number: CMK16GX4M1D3200C16 Rank: 2 Handle 0x002B, DMI type 17, 84 bytes Memory Device Array Handle: 0x0029 Size: No Module Installed Form Factor: DIMM Locator: DIMM_A2 ...

Explanation:

  • -t memory: Shows types 16 and 17 (memory array and devices)
  • Maximum Capacity: System's RAM limit (64GB here)
  • Number Of Devices: Total memory slots (4 slots)
  • Size: Installed module capacity (16384 MB = 16GB)
  • Speed: Memory frequency (3200 MT/s = DDR4-3200)
  • Locator: Physical slot designation (DIMM_A1)
  • "No Module Installed" indicates empty slots
Tip: This is invaluable for planning RAM upgrades. You can see: (1) Total slots available, (2) Which slots are occupied, (3) Maximum supported capacity, (4) Current module specifications for matching.

Example 3Get System Serial Numbers

Extract specific identification strings for warranty and inventory:

$ sudo dmidecode -s system-serial-number $ sudo dmidecode -s system-uuid $ sudo dmidecode -s baseboard-serial-number $ sudo dmidecode -s chassis-serial-number
C02XY1Z2LVDL 4C4C4544-0051-3510-8042-B2C04F563432 /6F8DMH2/CN1296354C03JV/ CH1234567890

Explanation:

  • -s: Extract single string value (no labels)
  • system-serial-number: System/service tag
  • system-uuid: Unique system identifier (never changes)
  • baseboard-serial-number: Motherboard serial
  • chassis-serial-number: Case/chassis serial
  • Output is clean - perfect for scripts and automation
Tip: Use these strings for automated asset inventory: echo "$(hostname),$(sudo dmidecode -s system-serial-number),$(sudo dmidecode -s system-product-name)" >> inventory.csv

Example 4Identify CPU Information

Display processor details including cores, threads, and capabilities:

$ sudo dmidecode -t processor
Handle 0x0004, DMI type 4, 48 bytes Processor Information Socket Designation: CPU1 Type: Central Processor Family: Core i7 Manufacturer: Intel(R) Corporation ID: EC 06 09 00 FF FB EB BF Signature: Type 0, Family 6, Model 158, Stepping 12 Flags: 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) PAE (Physical address extension) HTT (Multi-threading) Version: Intel(R) Core(TM) i7-9700K CPU @ 3.60GHz Voltage: 1.2 V External Clock: 100 MHz Max Speed: 4900 MHz Current Speed: 3600 MHz Status: Populated, Enabled Upgrade: Socket LGA1151 Core Count: 8 Core Enabled: 8 Thread Count: 8 Characteristics: 64-bit capable Multi-Core Execute Protection Enhanced Virtualization Power/Performance Control

Explanation:

  • Shows CPU model and exact specifications
  • Core Count vs Thread Count reveals hyperthreading status
  • Max Speed: Turbo boost capability (4.9 GHz)
  • Current Speed: Base frequency (3.6 GHz)
  • Socket type important for upgrade planning
  • Flags show CPU capabilities (virtualization, etc.)
Note: Core Count = Thread Count means no hyperthreading. If Thread Count = 2× Core Count, hyperthreading is enabled.

Example 5Check BIOS Version and Date

Display BIOS/UEFI firmware information:

$ sudo dmidecode -t bios
Handle 0x0000, DMI type 0, 26 bytes BIOS Information Vendor: American Megatrends Inc. Version: 1.40 Release Date: 08/25/2020 Address: 0xF0000 Runtime Size: 64 kB ROM Size: 16 MB Characteristics: PCI is supported BIOS is upgradeable BIOS shadowing is allowed Boot from CD is supported Selectable boot is supported BIOS ROM is socketed EDD is supported ACPI is supported USB legacy is supported BIOS boot specification is supported Targeted content distribution is supported UEFI is supported BIOS Revision: 5.14 Firmware Revision: 3.15

Explanation:

  • Vendor: BIOS manufacturer (often AMI, Award, Phoenix)
  • Version: Current BIOS version (1.40)
  • Release Date: When this BIOS version was released
  • Characteristics: Supported features and capabilities
  • "UEFI is supported" confirms modern firmware
  • Critical for checking if BIOS updates are needed
Warning: Before updating BIOS, verify current version here. BIOS updates can fail and brick systems if done incorrectly. Always check manufacturer's site for latest stable version and release notes.

Example 6Examine System and Motherboard Details

Get system manufacturer and motherboard information:

$ sudo dmidecode -t system -t baseboard
Handle 0x0001, DMI type 1, 27 bytes System Information Manufacturer: Dell Inc. Product Name: PowerEdge R740 Version: Not Specified Serial Number: 4ZL8K63 UUID: 4c4c4544-005a-4c10-8038-b8c04f4b3633 Wake-up Type: Power Switch SKU Number: 0704 Family: PowerEdge Handle 0x0002, DMI type 2, 15 bytes Base Board Information Manufacturer: Dell Inc. Product Name: 0K7T8N Version: A00 Serial Number: /4ZL8K63/CNFCP00A7J01JV/ Asset Tag: Not Specified Features: Board is a hosting board Board is replaceable Location In Chassis: Not Specified Chassis Handle: 0x0003 Type: Motherboard Contained Object Handles: 0

Explanation:

  • System Information: Overall system details
  • Product Name: System model (PowerEdge R740)
  • UUID: Unique identifier for licensing and tracking
  • Base Board: Motherboard-specific information
  • Product Name (baseboard): Motherboard model number
  • Serial numbers critical for warranty service
Tip: For Dell servers, the Service Tag is the System Serial Number. Use it on Dell's support site to check warranty status and available drivers.

Example 7List All Available Expansion Slots

Check PCIe and other expansion slot configuration:

$ sudo dmidecode -t slot
Handle 0x0009, DMI type 9, 17 bytes System Slot Information Designation: PCIE1 Type: x16 PCI Express 3 x16 Current Usage: Available Length: Long ID: 1 Characteristics: 3.3 V is provided PME signal is supported Bus Address: 0000:01:00.0 Handle 0x000A, DMI type 9, 17 bytes System Slot Information Designation: PCIE2 Type: x16 PCI Express 3 x16 Current Usage: In Use Length: Long ID: 2 Characteristics: 3.3 V is provided PME signal is supported Bus Address: 0000:02:00.0 Handle 0x000B, DMI type 9, 17 bytes System Slot Information Designation: M.2_1 Type: x4 M.2 Socket 3 Current Usage: In Use Length: Long Characteristics: 3.3 V is provided Bus Address: 0000:03:00.0

Explanation:

  • Designation: Slot label on motherboard
  • Type: Slot interface and speed (PCIe 3.0 x16)
  • Current Usage: Available (empty) or In Use (occupied)
  • Shows both PCIe slots and M.2 NVMe slots
  • Bus Address: PCI bus location for identification
  • Essential for planning GPU, NIC, or storage expansion
Note: x16 slot may only have x8 or x4 electrical lanes. Check specifications carefully when planning high-bandwidth devices like GPUs or 100GbE NICs.

Example 8Create Hardware Inventory Report

Generate a comprehensive hardware report for documentation:

$ sudo dmidecode -q | tee hardware-report.txt
BIOS Information Vendor: American Megatrends Inc. Version: 1.40 Release Date: 08/25/2020 System Information Manufacturer: Dell Inc. Product Name: PowerEdge R740 Serial Number: 4ZL8K63 Processor Information Version: Intel(R) Xeon(R) Gold 6230 CPU @ 2.10GHz Core Count: 20 Thread Count: 40 Physical Memory Array Maximum Capacity: 1536 GB Number Of Devices: 24 ...

Explanation:

  • -q: Quiet mode - less verbose output
  • tee: Display output and save to file simultaneously
  • Creates documentation for asset management
  • Useful for capacity planning and upgrades
  • Can be parsed by configuration management tools
  • Timestamp the file for historical tracking
Tip: Add date to filename: sudo dmidecode -q | tee hardware-report-$(date +%Y%m%d).txt. Store these reports in version control or asset management system.

Example 9Dump and Restore DMI Data

Save DMI table for offline analysis or historical comparison:

$ sudo dmidecode --dump-bin dmi-backup.bin $ ls -lh dmi-backup.bin
-rw-r--r-- 1 root root 3.2K Dec 16 11:00 dmi-backup.bin
$ dmidecode --from-dump dmi-backup.bin -t memory
Handle 0x0029, DMI type 16, 23 bytes Physical Memory Array Location: System Board Or Motherboard Maximum Capacity: 64 GB Number Of Devices: 4 ...

Explanation:

  • --dump-bin: Save raw DMI table to binary file
  • Creates portable backup of hardware configuration
  • --from-dump: Read from file instead of /dev/mem
  • Can analyze offline without root access
  • Useful for comparing configurations before/after changes
  • Transfer to another system for analysis
Tip: Create DMI snapshots before major hardware changes: "Pre-upgrade snapshot saved, allowing comparison if issues arise post-upgrade."

Example 10Quick Memory Summary Script

Create a useful one-liner for memory capacity planning:

$ sudo dmidecode -t memory | grep -E "(Maximum Capacity|Size|Speed|Locator)" | grep -v "Error"
Maximum Capacity: 64 GB Size: 16384 MB Locator: DIMM_A1 Speed: 3200 MT/s Size: No Module Installed Locator: DIMM_A2 Size: 16384 MB Locator: DIMM_B1 Speed: 3200 MT/s Size: No Module Installed Locator: DIMM_B2

Explanation:

  • Filters memory output to show only key information
  • Maximum Capacity: System's RAM ceiling
  • Size: Shows populated vs empty slots
  • Speed: Current RAM frequency
  • Locator: Physical slot identification
  • Quick view for planning memory upgrades
Tip: Calculate current total RAM: sudo dmidecode -t memory | grep "Size.*MB" | grep -v "No Module" | awk '{sum+=$2} END {print "Total RAM: " sum/1024 " GB"}'
Related Commands and Tools
Common Pitfalls and Solutions
Pitfall 1: Permission Denied Errors

Running dmidecode without root access fails.

Solution: Always use sudo dmidecode or run as root. The command needs to access /dev/mem which requires elevated privileges. No way around this on physical hardware.

Pitfall 2: Incomplete or Missing Data on VMs

Virtual machines may show limited or incorrect DMI information.

Solution: VMs often present synthetic DMI data. For actual hardware specs, run on physical machines. Some hypervisors (VMware, KVM) pass through limited real hardware info; others (VirtualBox) provide mostly placeholder values.

Pitfall 3: "No SMBIOS nor DMI entry point found"

Some systems (especially very old or embedded) lack SMBIOS tables.

Solution: SMBIOS was introduced in mid-1990s. Very old systems or some embedded devices may not have it. Use alternative tools like lshw or direct kernel interfaces.

Pitfall 4: Manufacturer-Specific Quirks

Some vendors fill DMI tables with "Not Specified" or incorrect data.

Solution: Enterprise servers (Dell, HP, Lenovo) generally have accurate DMI data. Consumer motherboards and OEM systems may have incomplete info. Cross-reference with lshw, lscpu, and lspci for verification.

Pitfall 5: Memory Slot Numbering Confusion

Locator names don't always match physical silk-screen labels on motherboard.

Solution: When installing RAM, document which physical slot corresponds to which DIMM locator name. Some motherboards number slots differently than BIOS reports them. Install one module, run dmidecode, note location, repeat.

Pro Tips and Best Practices
Tip 1: Asset Management Integration

Automate hardware inventory collection:

#!/bin/bash HOST=$(hostname) SERIAL=$(sudo dmidecode -s system-serial-number) MODEL=$(sudo dmidecode -s system-product-name) RAM=$(sudo dmidecode -t memory | grep "Size.*MB" | grep -v "No Module" | wc -l) echo "$HOST,$SERIAL,$MODEL,$RAM slots populated" >> /inventory/hardware.csv

Run via cron or configuration management for automated tracking.

Tip 2: Pre-Purchase Verification

Before buying used servers, ask seller to provide:

sudo dmidecode -q > server-specs.txt

Verify actual specs match listing. Catches misrepresented hardware.

Tip 3: Capacity Planning with Memory

Calculate maximum affordable RAM configuration:

MAX=$(sudo dmidecode -t memory | grep "Maximum Capacity" | awk '{print $3}') SLOTS=$(sudo dmidecode -t memory | grep "Number Of Devices" | awk '{print $4}') echo "Max RAM: ${MAX}GB across ${SLOTS} slots" echo "Max per slot: $((MAX/SLOTS))GB"

Helps plan balanced memory configurations.

Tip 4: BIOS Update Verification

Before and after BIOS updates, capture DMI snapshot:

sudo dmidecode --dump-bin pre-bios-update.bin # Update BIOS sudo dmidecode --dump-bin post-bios-update.bin diff <(dmidecode --from-dump pre-bios-update.bin) \ <(dmidecode --from-dump post-bios-update.bin)

Documents what changed during firmware update.

Tip 5: Quick Warranty Check

Extract and validate warranty info:

SERIAL=$(sudo dmidecode -s system-serial-number) PRODUCT=$(sudo dmidecode -s system-product-name) echo "System: $PRODUCT" echo "Service Tag: $SERIAL" echo "Dell Warranty: https://www.dell.com/support/home/product-support/servicetag/$SERIAL"

Quick links to manufacturer warranty status.

Tip 6: Memory Speed Verification

Ensure all RAM modules running at same speed:

sudo dmidecode -t memory | grep -E "(Locator|Speed)" | grep -v "No Module" | \ grep -v "Configured" | paste - -

Mismatched speeds can cause system to downclock all modules.

Historical Note: DMI (Desktop Management Interface) was introduced by the DMTF (Distributed Management Task Force) in 1994 as a framework for managing hardware. SMBIOS (System Management BIOS) is the implementation in firmware. The dmidecode tool was created by Jean Delvare and continues to be maintained as essential system administration software. Modern UEFI systems still include SMBIOS tables for backward compatibility.
Quick Reference Cheat Sheet
Task Command
Show all hardware info sudo dmidecode | less
Check memory configuration sudo dmidecode -t memory
Get system serial number sudo dmidecode -s system-serial-number
Show CPU information sudo dmidecode -t processor
Display BIOS version sudo dmidecode -t bios
List expansion slots sudo dmidecode -t slot
System and motherboard info sudo dmidecode -t system -t baseboard
Quiet mode (less verbose) sudo dmidecode -q
Save DMI table to file sudo dmidecode --dump-bin backup.bin
Read from saved dump dmidecode --from-dump backup.bin
Common DMI String Identifiers
String Identifier Description
bios-vendor BIOS manufacturer
bios-version BIOS version number
bios-release-date BIOS release date
system-manufacturer System vendor name
system-product-name System model number
system-serial-number System service tag
system-uuid Unique system identifier
baseboard-manufacturer Motherboard vendor
baseboard-product-name Motherboard model
baseboard-serial-number Motherboard serial
chassis-serial-number Chassis/case serial
processor-version CPU model name