Table of Contents

SPD information under Linux

Quoted from Wikipedia: "Serial Presence Detect (SPD) refers to a standardized way to automatically access information about a computer memory module". This means, it is possible by software to get information about memory modules available on your computer. This information include: manufacturer, model, size, speed, CAS latency, manufacturing date to name a few. This can be handy to verify the specifications of a newly bought memory module, to get information useful for overclocking and to get its serial number for archiving purposes (useful for inventories).

Reading data

Under Linux, lm-sensors does a good job reading this information from the chips. The kernel module named eeprom1) acquires such information and exposes it via Sysfs at /sys/bus/i2c/drivers/eeprom/. The problem is that this information is stored in a specific format (looks like garbage for humans). However, lm-sensors comes with an utility called decode-dimms.pl that is able to decode the information for us humans. It can be found at prog/eeprom/decode-dimms.pl on the lm-sensors source tree. Debian systems usually ship it together the package at /usr/share/doc/lm-sensors/examples/eeprom/decode-dimms.pl.

As of version 3.0.0, the decode-dimms.pl script has moved to a separate package named i2c-tools, where it can be found under the eeprom directory.

Example

Here is an example output for my Compaq Presario notebook:

$ /usr/share/doc/lm-sensors/examples/eeprom/decode-dimms.pl

Memory Serial Presence Detect Decoder
By Philip Edelbrock, Christian Zuckschwerdt, Burkart Lingner,
Jean Delvare and others
Version 2.10.1


Decoding EEPROM: /sys/bus/i2c/drivers/eeprom/0-0050
Guessing DIMM is in                             bank 1

---=== SPD EEPROM Information ===---
EEPROM Checksum of bytes 0-62                   OK (0x33)
# of bytes written to SDRAM EEPROM              128
Total number of bytes in EEPROM                 256
Fundamental Memory type                         DDR SDRAM
SPD Revision                                    0.0

---=== Memory Characteristics ===---
Maximum module speed                            333MHz (PC2700)
Size                                            256 MB
tCL-tRCD-tRP-tRAS                               2.5-3-3-7
Supported CAS Latencies                         2.5, 2
Supported CS Latencies                          0
Supported WE Latencies                          1
Minimum Cycle Time (CAS 2.5)                    6 ns
Maximum Access Time (CAS 2.5)                   0.7 ns
Minimum Cycle Time (CAS 2)                      7.5 ns
Maximum Access Time (CAS 2)                     0.7 ns

---=== Manufacturing Information ===---
Manufacturer                                    ProMos/Mosel Vitelic
Manufacturing Location Code                     0x02
Part Number                                     V826632B24SCTG-C0
Manufacturing Date                              2005-W23
Assembly Serial Number                          0x32162D00


Decoding EEPROM: /sys/bus/i2c/drivers/eeprom/0-0051
Guessing DIMM is in                             bank 2

---=== SPD EEPROM Information ===---
EEPROM Checksum of bytes 0-62                   OK (0x33)
# of bytes written to SDRAM EEPROM              128
Total number of bytes in EEPROM                 256
Fundamental Memory type                         DDR SDRAM
SPD Revision                                    0.0

---=== Memory Characteristics ===---
Maximum module speed                            333MHz (PC2700)
Size                                            256 MB
tCL-tRCD-tRP-tRAS                               2.5-3-3-7
Supported CAS Latencies                         2.5, 2
Supported CS Latencies                          0
Supported WE Latencies                          1
Minimum Cycle Time (CAS 2.5)                    6 ns
Maximum Access Time (CAS 2.5)                   0.7 ns
Minimum Cycle Time (CAS 2)                      7.5 ns
Maximum Access Time (CAS 2)                     0.7 ns

---=== Manufacturing Information ===---
Manufacturer                                    ProMos/Mosel Vitelic
Manufacturing Location Code                     0x02
Part Number                                     V826632B24SCTG-C0
Manufacturing Date                              2005-W23
Assembly Serial Number                          0xE6142D00


Number of SDRAM DIMMs detected and decoded: 2

References

Please refer to lm-sensors's documentation for more details. Documentation regarding the eeprom module can be found on it's source tree at doc/chips/eeprom. Debian systems usually ship it together the package at /usr/share/doc/lm-sensors/doc/chips/eeprom.gz.

1) Just # modprobe eeprom should work.