decode-dimms
Decode and display RAM module information
TLDR
Display DIMM information
Display help
SYNOPSIS
decode-dimms [OPTIONS]
PARAMETERS
-f FILE, --file FILE
Reads SPD data from the specified raw binary FILE instead of scanning the system's SMBus/I2C buses for DIMMs. This option is useful for offline analysis of previously captured SPD data.
-V, --version
Displays the version information of the decode-dimms utility and exits.
-h, --help
Shows a brief help message explaining the command's usage and available options, then exits.
DESCRIPTION
decode-dimms is a utility from the i2c-tools package designed to read and interpret SPD (Serial Presence Detect) EEPROM data from DDR, DDR2, DDR3, DDR4, and potentially newer RAM modules (DIMMs). This data is stored on a small EEPROM chip present on each DIMM and contains crucial information about the memory module's characteristics, such as manufacturer, part number, serial number, manufacturing date, memory type, capacity, supported clock speeds, voltage, and various timing parameters (e.g., CL, tRCD, tRP, tRAS, tRC).
The command typically accesses this data via the SMBus (System Management Bus) or I2C bus, which is connected to the DIMMs. By decoding this raw hexadecimal data into a human-readable format, decode-dimms helps users, system administrators, and diagnostics tools understand the exact specifications of installed memory modules without physically inspecting them or relying on BIOS information alone. It's an invaluable tool for troubleshooting memory issues, verifying module compatibility, or simply documenting system hardware configurations.
CAVEATS
decode-dimms typically requires root privileges (e.g., using sudo) to access the system's SMBus/I2C devices. It also relies on the appropriate kernel modules (like i2c-dev and potentially specific bus drivers such as i2c-i801 for Intel chipsets) being loaded and correctly configured. The command might not function correctly or at all on systems where SMBus access is restricted, or in virtualized environments where direct hardware access is not available. The output can be extensive, providing a detailed breakdown of each detected DIMM's SPD data, which can sometimes be overwhelming.
<I>OUTPUT STRUCTURE</I>
The output of decode-dimms is typically structured to provide a detailed breakdown for each detected DIMM. For each module, it lists general information such as the manufacturer, part number, serial number, and manufacturing date. Following this, it presents memory characteristics like module capacity, voltage, type (e.g., DDR4 SDRAM), and supported speeds. A significant portion of the output is dedicated to detailed timing parameters (CAS Latency, tRCD, tRP, tRAS, etc.) across various clock speeds, often presented in tabular format, crucial for understanding module performance and compatibility.
<I>JEDEC SPD STANDARDS</I>
SPD data is defined by JEDEC (Joint Electron Device Engineering Council) standards, which specify the layout and meaning of bytes within the EEPROM. As new DDR generations emerge (e.g., from DDR2 to DDR3 to DDR4), JEDEC releases updated SPD specifications. decode-dimms is continually updated to support these evolving standards, ensuring it can correctly parse the SPD data from the latest memory modules and provide accurate information, including extended data bytes and module-specific features defined by JEDEC.
HISTORY
decode-dimms is part of the i2c-tools project, a suite of utilities for probing and manipulating I2C/SMBus devices on Linux systems. The i2c-tools project itself has a long history in the Linux kernel and userspace, evolving to support various I2C bus adapters and device types. decode-dimms specifically gained prominence as DDR memory became ubiquitous, providing a programmatic way to read the standard SPD data crucial for system configuration and diagnostics. Its development has closely tracked the evolution of JEDEC DDR standards (DDR, DDR2, DDR3, DDR4, etc.), with updates often necessary to correctly parse new SPD versions and extensions, ensuring its continued relevance for modern memory modules.