DDR3 SPD

On ddr3 ram your motherboard uses serial presence detect (SPD) to find out information about your ram sticks.

Contained within this info are the timings, frequency and part number.

Most ddr3 sticks I've tested have writable spd information so with the right software we would be able to edit our timing/frequency or even our part number.

One of the specifications used in the spd of ddr3 is called jdec and is found in the following: pdf

To find out our spd information we can use cpuz on windows, and decode-dimms on Linux.

There is some information about this topic scattered about the internet, here is some in no particular order:

rigred/SPD
Hacking DDR Memory Serial Presence Detect. Contribute to rigred/SPD development by creating an account on GitHub.
Modifying RAM SPD Data – Zak’s Electronics Blog ~*
Recently I brought some low-power Mini-ITX motherboards; a Gigabyte GA-N3050N-D3H and a Biostar N3050NH. These boards take SO-DIMM DDR3 RAM, the sort found in laptops. The boards are both pretty much the same, however the Gigabyte board lacks quite a few BIOS features and settings that the Biostar b…

Read SPD

I use Debian most of the time so I'll show you how to do it there

sudo apt install i2c-tools 
sudo modprobe eeprom
sudo modprobe i2c-i801 #for intel
sudo decode-dimms 
# decode-dimms version $Revision$

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


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

---=== SPD EEPROM Information ===---
EEPROM CRC of bytes 0-116                        OK (0x63B6)
# of bytes written to SDRAM EEPROM               176
Total number of bytes in EEPROM                  256
Fundamental Memory type                          DDR3 SDRAM
Module Type                                      SO-DIMM

---=== Memory Characteristics ===---
Maximum module speed                             1600 MHz (PC3-12800)
Size                                             8192 MB
Banks x Rows x Columns x Bits                    8 x 16 x 10 x 64
Ranks                                            2
SDRAM Device Width                               8 bits
Bus Width Extension                              0 bits
tCL-tRCD-tRP-tRAS                                11-11-11-29
Supported CAS Latencies (tCL)                    11T, 10T, 9T, 8T, 7T, 6T, 5T

---=== Timings at Standard Speeds ===---
tCL-tRCD-tRP-tRAS as DDR3-1600                   11-11-11-29
tCL-tRCD-tRP-tRAS as DDR3-1333                   9-9-9-24
tCL-tRCD-tRP-tRAS as DDR3-1066                   7-7-7-20
tCL-tRCD-tRP-tRAS as DDR3-800                    6-6-6-15

---=== Timing Parameters ===---
Minimum Cycle Time (tCK)                         1.250 ns
Minimum CAS Latency Time (tAA)                   13.125 ns
Minimum Write Recovery time (tWR)                15.000 ns
Minimum RAS# to CAS# Delay (tRCD)                13.125 ns
Minimum Row Active to Row Active Delay (tRRD)    6.000 ns
Minimum Row Precharge Delay (tRP)                13.125 ns
Minimum Active to Precharge Delay (tRAS)         36.000 ns
Minimum Active to Auto-Refresh Delay (tRC)       49.125 ns
Minimum Recovery Delay (tRFC)                    300.000 ns
Minimum Write to Read CMD Delay (tWTR)           7.500 ns
Minimum Read to Pre-charge CMD Delay (tRTP)      7.500 ns
Minimum Four Activate Window Delay (tFAW)        30.000 ns

---=== Optional Features ===---
Operable voltages                                1.5V
RZQ/6 supported?                                 Yes
RZQ/7 supported?                                 Yes
DLL-Off Mode supported?                          Yes
Operating temperature range                      0-95 degrees C
Refresh Rate in extended temp range              2X
Auto Self-Refresh?                               Yes
On-Die Thermal Sensor readout?                   No
Partial Array Self-Refresh?                      No
Module Thermal Sensor                            No
SDRAM Device Type                                Standard Monolithic

---=== Physical Characteristics ===---
Module Height                                    30 mm
Module Thickness                                 2 mm front, 2 mm back
Module Width                                     67.6 mm
Module Reference Card                            F revision 0
Rank 1 Mapping                                   Standard

---=== Manufacturer Data ===---
Module Manufacturer                              Team Group Inc.
DRAM Manufacturer                                Team Group Inc.
Manufacturing Date                               2016-W01
Assembly Serial Number                           0x02014CD7
Part Number                                      Gompa MEMZ----1600

This will allow you to see the current spd data.

Bus info

To modify your spd data you will first need to find out on what bus your spd lives so we run:

sudo i2cdetect -l
i2c-3	i2c       	i915 gmbus panel                	I2C adapter
i2c-1	i2c       	i915 gmbus ssc                  	I2C adapter
i2c-6	i2c       	i915 gmbus dpd                  	I2C adapter
i2c-4	i2c       	i915 gmbus dpc                  	I2C adapter
i2c-2	i2c       	i915 gmbus vga                  	I2C adapter
i2c-0	smbus     	SMBus I801 adapter at 2040      	SMBus adapter
i2c-7	i2c       	DPDDC-B                         	I2C adapter
i2c-5	i2c       	i915 gmbus dpb                  	I2C adapter

Most of the time your memory spd will be located on the smbus so we scan the smbus:

sudo i2cdetect -y 0
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         08 -- -- -- -- -- -- --
10: -- -- -- -- -- 15 -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: 30 -- 32 -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- 44 -- -- -- -- -- -- -- -- -- -- --
50: 50 -- 52 -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

On this acer 756 the memory spd is located on 50 and 52.

The spd is located on 50 51 52 53 depending on your slots (I haven't checked boards with more than 4 dimms but I would imagine they show up on 53 and 54 respectively)

This should get you started on your spd info, the next post will be a script to modify and flash your spd from Debian.