EVGA

Helpful ReplyHot!My Arduino-based RAM SPD reader/writer (free and open source)

Page: 123 > Showing page 1 of 3
Author
a213m
SSC Member
  • Total Posts : 606
  • Reward points : 0
  • Joined: 2006/02/08 11:10:24
  • Location: Canada
  • Status: online
  • Ribbons : 12
2020/05/13 23:27:32 (permalink)
Official repo on GitHub:
https://github.com/1a2m3/SPD-Reader-Writer
 
Latest binaries:
https://github.com/1a2m3/SPD-Reader-Writer/releases
 
Latest firmware: (both *.ino and *.h files are required!)
https://github.com/1a2m3/SPD-Reader-Writer/tree/master/firmware
 
 

Guide:

 

Part 1 - hardware

 
Wire up your Arduino + DIMM/EEPROM according to the schematic below:
 

Click image to see full version. PDF and Eagle files can be found here
 
The schematic shows modules divided into sections:
  • Arduino section shows pins used on Nano V3 model. Use its 3.3V pin as a VCC source. If your Arduino doesn't have a dedicated 3.3V output, use a step-down 3.3V regulator, like LM7833. Pins labeled SA0SW, SA1SW, SA2SW, HVSW, and HVDET can be assigned in "SpdReaderWriterSettings.h" file. 5V pin is required to power a 9V step-up converter (HV_SOURCE). If you are using a battery as a 9V source (HV_SOURCE_ALT), 5V pin on Arduino isn't used.
  • HV_CTL and one of 9V sources are needed to enable and detect 9V on SA0 for RSWP related operations. Use either a step-up/boost converter (HV_SOURCE), or a 9V battery (HV_SOURCE_ALT), not both!
  • SA1_CTL is used to switch pin SA1 on EEPROM between VCC and ground. This is needed because RSWP-supported EEPROMs used on DDR3 and DDR2 require different SA1 configurations to enable or disable RSWP.
  • SA0_CTL_OPT and SA2_CTL_OPT work in the same manner as SA1_CTL, allowing switching SA0 and SA2 between VCC and ground, however no official specifications currently require SA0 and SA2 to be configured in specific ways, therfore these modules are optional.
 
Refer to your Arduino model pinout, on my Nano model SDA and SCL are A4 and A5, respectively: https://www.arduino.cc/en/reference/wire

 
Parts list:
  • Arduino: Nano V3 or any model with I2C / TWI interface.
  • OK1: PC817 or any optocoupler with a maximum collector to emitter voltage above 10V and a diode current below 40mA and forward voltage below 5V.
  • OK2-OK4: Same as OK1, or any model with a maximum collector to emitter voltage above 3.3V. Diode requirements match OK1 specs.
  • R1, R4, R5, R6: Current limiting resistors for optocoupler diodes, values between 390Ω and 560Ω work fine.
  • R2, R3: Voltage divider for HV detection (HVDET) on SA0. If you are using a 5V Arduino, both can be 10KΩ. If you are using a 3.3V Arduino, R3 has to be 5.6KΩ.
  • C1: 6.3V, 560uF
  • D1: Any diode with a forward voltage drop of between 0.2V and 0.4V and reverse breakdown voltage of above 6V.
 
EEPROM pins to DIMM pins guide:
 
DDR4:    SA0=139,   SA1=140,   SA2=238,   GND=2*,   SDA=285,   SCL=141,  VDDSPD=284
DDR3:    SA0=117,   SA1=237,   SA2=119,   GND=2*,   SDA=238,   SCL=118,  VDDSPD=236
DDR2:    SA0=239,   SA1=240,   SA2=101,   GND=4*,   SDA=119,   SCL=120,  VDDSPD=238
DDR:      SA0=181,   SA1=182,   SA2=183,   GND=3*,   SDA=91,     SCL=92,    VDDSPD=184
SDRAM: SA0=165,   SA1=166,   SA2=167,   GND=1*,   SDA=82,     SCL=83,    VDDSPD=168
 
* There are multiple GND pins on DIMMs, the table shows just one of them for each RAM type.
 
DDR4 DIMM pins locations:
 

(photo borrowed from wikipedia)
 
Obviously don't solder wires directly to DIMM contacts or motherboard solder points, get a spare slot from components resellers, like Digikey, or get a DDR4 DIMM adapter, like the one pictured below. Those are cheap, and have pins labeled for easy identification.
 

 
 

Part 2 - Firmware and basic tests


Upload firmware to your Arduino once everything is assembled. Both files are required. Make sure the values in SpdReaderWriterSettings.h match the pins names you used if your pins differ from the ones in the guide.
 
After uploading, open Serial Monitor (press Ctrl+Shift+M in Arduino IDE), change Baud Rate to 115200, enter 
t
into the text field and press "send" or enter key. If everything works, you'll receive an "!" in response. Enter
v
to get firmware version number.
 
 

Part 3 - Windows GUI application

 
Latest GUI application can always be found here:
 
https://github.com/1a2m3/.D-Reader-Writer/releases
 
The application requires .NET framework 4.5 or later to be installed. Supported OSs are Windows Vista SP2 and up. The application is compiled for x86 architecture, so both 32 bit and 64 bit OSs are supported. (Windows XP and older OSs aren't supported).
 
Once your device is assembled and tested, start the program. By default it scans for connected device on startup and detected devices will show up in the "Device" button submenu:
 

 
Click on the device identified by its serial port name and EEPROM address detected on its I2C bus to start working with it.
 
 

Part 4 - Windows Console application

 
The program can read and write bytes, and enable or disable write protection. The operation depends on its command line arguments. The supported arguments are:
 
  1. /help
  2. /find
  3. /scan <PORT>
  4. /read <PORT> <ADDRESS#> <filepath> /silent
  5. /write <PORT> <ADDRESS#> <FILEPATH> /silent
  6. /writeforce <PORT> <ADDRESS#> <FILEPATH> /silent
  7. /enablewriteprotection <PORT>
  8. /enablewriteprotection <PORT> <block#>
  9. /disablewriteprotection <PORT>
  10. /enablepermanentwriteprotection <PORT> <ADDRESS#>
 
The parameters in CAPS are mandatory. Parameter <filepath> is optional when 
/read
switch is used, output will be printed to console only.
 
You'll need to know two parameters to work your DIMM - port name and EEPROM address. To find out what port your device is using, run this command:
 
SpdReaderWriter.exe /find

 
If everything works, you'll get a port name your device is connected to:
 

 
Found Device on Serial Port: COM3

 
In my case it is COM3. If the program can't find any devices, make sure the sketch is properly uploaded to your Arduino and no other application is using your Arduino's serial port - that includes Arduino IDE Serial Monitor. Close it, if you have it open.
 
With a DDR4 DIMM present you'll want to scan your device for EEPROM addresses on I2C bus. With SA0-SA2 connected to ground, the address will be 80, however, it is still recommended to run this test to ensure the EEPROM is detected:
 
SpdReaderWriter.exe /scan COM3

 
In most cases, if everything is fine, you'll see a device at address 80 detected:
 

 
Found EEPROM at address: 80

 
When I used DDR4 slots cut out of an old motherboard with both DIMMs populated, both were detected at addresses 80 and 82, even though I soldered wires to one slot only:
 

 
 
 
Found EEPROM at address: 80
Found EEPROM at address: 82

 
To read SPD from your DIMM, run:
 
SpdReaderWriter.exe /read COM3 80

 
This will output SPD contents in HEX on screen. Plain and simple.
 

Reading EEPROM at address 80

000: 23 10 0C 02 84 19 00 08 00 00 00 03 01 03 00 00
010: 00 00 08 0C F4 1B 00 00 6C 6C 6C 11 00 74 20 08
020: 00 05 70 03 00 A8 1E 2B 2B 00 00 00 00 00 00 00
--edited on purpose--
1D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Read 512 bytes from EEPROM at address 80 on port COM3 in 1547 ms

 
To save SPD to file, add a file path at the end. File path can be absolute or relative. If file path has spaces in it, enclose it in "double quotes":
 
SpdReaderWriter.exe /read COM3 80 C:\temp\spdoutput.bin

SpdReaderWriter.exe /read COM3 80 "C:\temp\my ddr4 spd file.bin"

 

Reading EEPROM at address 80 to C:\temp\my ddr4 spd file.bin

000: 23 10 0C 02 84 19 00 08 00 00 00 03 01 03 00 00
--edited on purpose--
1F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Read 512 bytes from EEPROM at address 80 on port COM3 in 1562 ms to file "C:\temp\my ddr4 spd file.bin"

 
Edit your SPD in a HEX editor or any specialized program, like Thaiphoon Burner. 
 
To write your new SPD to DIMM, run:
 
SpdReaderWriter.exe /write COM3 80 C:\temp\newspd.bin

 
EEPROMs have limited number of write cycles, sometimes between 10,000 and 1,000,000. By default, the program writes bytes only if they differ from existing values. By doing that, it first reads a byte and if it matches the input value, the write operation is skipped. Byte is written only it it needs to. If you want to force writes, regardless of existing SPD data, use 
/writeforce
switch instead of
/write
.
It will take a bit longer (5-10 s.) because of required delays after each write.
 

Writing "C:\temp\my ddr4 spd file.bin" (512 bytes) to EEPROM at address 80

000: 23 10 0C 02 84 19 00 08 00 00 00 03 01 03 00 00
010: 00 00 08 0C F4 1B 00 00 6C 6C 6C 11 00 74 20 08
020: 00 05 70 03 00 A8 1E 2B 2B 00 00 00 00 00 00 00
--edited on purpose--
1D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Written 512 bytes to EEPROM at address 80 on port COM3 in 7093 ms

 
Optionally, to hide progress you may add 
/silent
switch at the end after a file path is specified when using
/read
,
/write
, or
/writeforce
switches:
 
SpdReaderWriter.exe /read COM3 80 C:\temp\spdoutput.bin /silent

SpdReaderWriter.exe /write COM3 80 C:\temp\newspd.bin /silent

 
You may protect the entire EEPROM from writing with this command:
 
SpdReaderWriter.exe /enablewriteprotection COM3

 
If the blocks weren't write-protected previously, you'll receive a response like this:
 

 
Block 0 is now read-only
Block 1 is now read-only
Block 2 is now read-only
Block 3 is now read-only

 
Or enable write protection on each individual block by specifying block number (0-3):
 
SpdReaderWriter.exe /enablewriteprotection COM3 0

SpdReaderWriter.exe /enablewriteprotection COM3 2

 
Each block specifies a section of 128 bytes. Block 0 is bytes at offset 0-127, block 1 is bytes 128-255, and so on.
 
Please note the address isn't used, only port number. That's because RSWP commands don't use addresses, all devices on the I2C bus will act simultaneously.
 
To clear write protection, run the following command:
 
SpdReaderWriter.exe /disablewriteprotection COM3

 
Again, the device address isn't used.
 
Once write-protection is cleared, you'll see this response:
 

Write protection successfully disabled.

 
To enable permanent write protection, run this command:
SpdReaderWriter.exe /enablepermanentwriteprotection COM3 80

 
Please note permanent protection can be enabled on most DDR3 and some DDR2 modules. DDR4 does not support permanent software write protection.
 
That's all for now.
 
I'm always open to suggestions and comments. Feel free to report any bugs or ask to add any feature you'd like to see in the project, whether it's related to hardware, firmware, or applications.
post edited by a213m - 2020/08/09 15:31:01

My free and open source DDR4 SPD reader/writer with write protection reversing
 
#1: 9980XE / R6EE / 64GB / 2 x 2080Ti / 1TB SSD / 1600W | CPU-Z / ModsRigs

#2: 10980XE / X299 FTW-K / 64GB / 970 / 256GB SSD / 1000W | CPU-Z

#1
jfw06013
SSC Member
  • Total Posts : 533
  • Reward points : 0
  • Joined: 2017/02/14 10:26:10
  • Status: offline
  • Ribbons : 4
Re: Would anyone be interested in open source and free DDR4 SPD reader/writer? 2020/05/14 00:10:21 (permalink)
I just started with Arduino and I am very interested in you project.


#2
a213m
SSC Member
  • Total Posts : 606
  • Reward points : 0
  • Joined: 2006/02/08 11:10:24
  • Location: Canada
  • Status: online
  • Ribbons : 12
Re: Would anyone be interested in open source and free DDR4 SPD reader/writer? 2020/05/15 03:06:16 (permalink)
Almost there, everything is working properly now.
 

 



 

My free and open source DDR4 SPD reader/writer with write protection reversing
 
#1: 9980XE / R6EE / 64GB / 2 x 2080Ti / 1TB SSD / 1600W | CPU-Z / ModsRigs

#2: 10980XE / X299 FTW-K / 64GB / 970 / 256GB SSD / 1000W | CPU-Z

#3
Cool GTX
EVGA Forum Moderator
  • Total Posts : 24038
  • Reward points : 0
  • Joined: 2010/12/12 14:22:25
  • Location: Folding for the Greater Good
  • Status: offline
  • Ribbons : 117
Re: Would anyone be interested in open source and free DDR4 SPD reader/writer? 2020/05/15 07:02:49 (permalink)
sounds interesting
 
can damaged/ corrupted SPD code be overwritten -- Recovered ? 

Cause you know someone will OC it too far 

RTX Project EVGA X99 FTWK-5930K@4.8GHz 2xEVGA2080Ti EVGA-1200P2  Nibbler EVGA X99 Classified-5960X@4.5GHz 3-GPU Water Loop 1600P2 
AIO Folding  X99 2x1080Ti FTW3 Hybrid, 1200P
Thank You for Your Support


#4
a213m
SSC Member
  • Total Posts : 606
  • Reward points : 0
  • Joined: 2006/02/08 11:10:24
  • Location: Canada
  • Status: online
  • Ribbons : 12
Re: Would anyone be interested in open source and free DDR4 SPD reader/writer? 2020/05/15 22:19:07 (permalink)
Look what came in the mail today after weeks months of waiting. Now I no longer have to use slots I cut out of a dead motherboard.
 

 
Cool GTX
sounds interesting
 
can damaged/ corrupted SPD code be overwritten -- Recovered ? 

Cause you know someone will OC it too far

 
Yes, provided you have a backup of correct SPD data, or a working DIMM.
 
I'll aslo implement a CRC checker into the Windows app. In won't be accessible via command line switches initially, but rather by calling a function directly.

Edit: Arduino sketch is posted, link is in the first post.
post edited by a213m - 2020/05/15 22:32:31

My free and open source DDR4 SPD reader/writer with write protection reversing
 
#1: 9980XE / R6EE / 64GB / 2 x 2080Ti / 1TB SSD / 1600W | CPU-Z / ModsRigs

#2: 10980XE / X299 FTW-K / 64GB / 970 / 256GB SSD / 1000W | CPU-Z

#5
TiN_EE
Yes, that TiN
  • Total Posts : 376
  • Reward points : 0
  • Joined: 2010/01/22 21:30:49
  • Location: xDevs.com
  • Status: offline
  • Ribbons : 14
Re: Would anyone be interested in open source and free DDR4 SPD reader/writer? 2020/05/16 10:55:55 (permalink)
Nice work. You can just buy slots from component retailers such as Digikey.
 
I've did this back in 2014 for internal use and testing at EVGA R&D lab :)
My box designed for onboard MCU or couples with Raspberry Pi. Worklog and code : https://xdevs.com/article/ddr4s/
 
Beware, many SPDs on memories are actually write-protected, so you can read them, but cannot write/modify. :)
post edited by TiN_EE - 2020/05/16 11:01:01

If you have question, please post in public forum. I do not reply PMs, so all in community can benefit the answer. 
#6
a213m
SSC Member
  • Total Posts : 606
  • Reward points : 0
  • Joined: 2006/02/08 11:10:24
  • Location: Canada
  • Status: online
  • Ribbons : 12
Re: Would anyone be interested in open source and free DDR4 SPD reader/writer? 2020/05/16 14:41:47 (permalink)
Thanks. So far I haven't encountered any write protected EEPROMs, in fact the DIMMs I used in my tests use EEPROMs which lack permanent write protection capabilities.
 
I'll start working on software write protection enabling/disabling capabilities soon. It will require a couple more components added to the circuit and an additional 9V source.
 
The project is complete. Windows binary and sources + updated Arduino sketch are up.
 
Links are in the first post.
post edited by a213m - 2020/05/16 14:44:22

My free and open source DDR4 SPD reader/writer with write protection reversing
 
#1: 9980XE / R6EE / 64GB / 2 x 2080Ti / 1TB SSD / 1600W | CPU-Z / ModsRigs

#2: 10980XE / X299 FTW-K / 64GB / 970 / 256GB SSD / 1000W | CPU-Z

#7
a213m
SSC Member
  • Total Posts : 606
  • Reward points : 0
  • Joined: 2006/02/08 11:10:24
  • Location: Canada
  • Status: online
  • Ribbons : 12
Re: Would anyone be interested in open source and free DDR4 SPD reader/writer? 2020/05/20 00:49:17 (permalink)
I got some bad news and (as a result) good news.
 
Today I finally stumbled upon a kit of G.Skill DIMMs with write-protected EEPROMs, which can be read, but can't be modified, unless write protection is reversed.
 
But that's history now, I just wanted to announce I implemented a software reversible write protection clearing function in my project.
 
It can't be implemented with software alone as it requires an update to both hardware and software, since it requires an additional external DC power source from 7V-10V, which Arduino alone isn't capable of providing, so stay tuned for updated schematics and code.
 


My free and open source DDR4 SPD reader/writer with write protection reversing
 
#1: 9980XE / R6EE / 64GB / 2 x 2080Ti / 1TB SSD / 1600W | CPU-Z / ModsRigs

#2: 10980XE / X299 FTW-K / 64GB / 970 / 256GB SSD / 1000W | CPU-Z

#8
a213m
SSC Member
  • Total Posts : 606
  • Reward points : 0
  • Joined: 2006/02/08 11:10:24
  • Location: Canada
  • Status: online
  • Ribbons : 12
Re: Would anyone be interested in open source and free DDR4 SPD reader/writer? 2020/05/22 04:24:54 (permalink)
Update: 22.05.2020 - now with write protection reversing and enabling options 
 
Updated schematics, description, firmware, binary, and sources are in the first post.

My free and open source DDR4 SPD reader/writer with write protection reversing
 
#1: 9980XE / R6EE / 64GB / 2 x 2080Ti / 1TB SSD / 1600W | CPU-Z / ModsRigs

#2: 10980XE / X299 FTW-K / 64GB / 970 / 256GB SSD / 1000W | CPU-Z

#9
a213m
SSC Member
  • Total Posts : 606
  • Reward points : 0
  • Joined: 2006/02/08 11:10:24
  • Location: Canada
  • Status: online
  • Ribbons : 12
Re: Would anyone be interested in open source and free DDR4 SPD reader/writer? 2020/05/24 01:29:34 (permalink)
May 24 update - fixed an issue where bytes were not written to higher half of EEPROM, if the second half was identical to the first half when using "/write" switch.
 
Updated links are in the first post, as usual.
 
PS: Aslo, because in 2020 RGB has to be everywhere, I added a color byte display.
 
It's enabled by default, to disable it, set "color" boolean parameter to "false" where DisplayByte() function is called.
 

 
Random bytes written to show as many colors as possible:
 

 
 

My free and open source DDR4 SPD reader/writer with write protection reversing
 
#1: 9980XE / R6EE / 64GB / 2 x 2080Ti / 1TB SSD / 1600W | CPU-Z / ModsRigs

#2: 10980XE / X299 FTW-K / 64GB / 970 / 256GB SSD / 1000W | CPU-Z

#10
TiN_EE
Yes, that TiN
  • Total Posts : 376
  • Reward points : 0
  • Joined: 2010/01/22 21:30:49
  • Location: xDevs.com
  • Status: offline
  • Ribbons : 14
Re: Would anyone be interested in open source and free DDR4 SPD reader/writer? 2020/05/24 10:18:36 (permalink)
Nice work.
I'd suggest upload your project to github or smth, so others can contribute too :)

If you have question, please post in public forum. I do not reply PMs, so all in community can benefit the answer. 
#11
a213m
SSC Member
  • Total Posts : 606
  • Reward points : 0
  • Joined: 2006/02/08 11:10:24
  • Location: Canada
  • Status: online
  • Ribbons : 12
Re: Would anyone be interested in open source and free DDR4 SPD reader/writer? 2020/05/26 01:27:15 (permalink)
Sure, I'll do that later. But before sharing the project with bigger audience, I'll also add a GUI interface, even though I didn't plan on doing that when I started working on it. To do that I'll move 'Device' and 'Eeprom' classes to a separate library (dll), which will be used both by the the console app I've been working on since the beginning and the new GUI version I just started working on. That way I can work on both versions while not having to maintain two separate projects with duplicate portions of the same code.

My free and open source DDR4 SPD reader/writer with write protection reversing
 
#1: 9980XE / R6EE / 64GB / 2 x 2080Ti / 1TB SSD / 1600W | CPU-Z / ModsRigs

#2: 10980XE / X299 FTW-K / 64GB / 970 / 256GB SSD / 1000W | CPU-Z

#12
Cool GTX
EVGA Forum Moderator
  • Total Posts : 24038
  • Reward points : 0
  • Joined: 2010/12/12 14:22:25
  • Location: Folding for the Greater Good
  • Status: offline
  • Ribbons : 117
Re: Would anyone be interested in open source and free DDR4 SPD reader/writer? 2020/05/26 13:28:49 (permalink)
looks like you have made some good progress on your project

RTX Project EVGA X99 FTWK-5930K@4.8GHz 2xEVGA2080Ti EVGA-1200P2  Nibbler EVGA X99 Classified-5960X@4.5GHz 3-GPU Water Loop 1600P2 
AIO Folding  X99 2x1080Ti FTW3 Hybrid, 1200P
Thank You for Your Support


#13
a213m
SSC Member
  • Total Posts : 606
  • Reward points : 0
  • Joined: 2006/02/08 11:10:24
  • Location: Canada
  • Status: online
  • Ribbons : 12
Re: Would anyone be interested in open source and free DDR4 SPD reader/writer? 2020/05/27 13:20:18 (permalink)
Yeah, it's expanding in features as my personal demands and requirements grow.

My free and open source DDR4 SPD reader/writer with write protection reversing
 
#1: 9980XE / R6EE / 64GB / 2 x 2080Ti / 1TB SSD / 1600W | CPU-Z / ModsRigs

#2: 10980XE / X299 FTW-K / 64GB / 970 / 256GB SSD / 1000W | CPU-Z

#14
a213m
SSC Member
  • Total Posts : 606
  • Reward points : 0
  • Joined: 2006/02/08 11:10:24
  • Location: Canada
  • Status: online
  • Ribbons : 12
Re: Would anyone be interested in open source and free DDR4 SPD reader/writer? 2020/05/28 19:28:36 (permalink)
The GUI version is being finalized, and it works fine, but looks horrible.
 
But I'm a programmer, not a UI designer, so there's my excuse for bad interface.

 
Reader:

 
Writer:

 
Write protection:

 
Debug:




 
 
 

My free and open source DDR4 SPD reader/writer with write protection reversing
 
#1: 9980XE / R6EE / 64GB / 2 x 2080Ti / 1TB SSD / 1600W | CPU-Z / ModsRigs

#2: 10980XE / X299 FTW-K / 64GB / 970 / 256GB SSD / 1000W | CPU-Z

#15
TiN_EE
Yes, that TiN
  • Total Posts : 376
  • Reward points : 0
  • Joined: 2010/01/22 21:30:49
  • Location: xDevs.com
  • Status: offline
  • Ribbons : 14
Re: Would anyone be interested in open source and free DDR4 SPD reader/writer? 2020/05/28 21:45:25 (permalink)
I disagree on looks aspect. It is functional and clean. None of the shiny graphics stuff, that makes simple tool that need to do the job weight 200 MB. 
 
Perhaps you could improve usability a bit more by grouping hex bytes in 16 row, 8 column group representation and add some address offset map on the left side. You know, just like hex editors. Maybe if you want to add some bling - you could add few information text blocks, showing DDR type (RDIMM, UDIMM, LRDIMM, etc), module size, organization, manufacturer and base timings/speed and brief XMP profile info. You can get all that from SPD decode document, should be quite easy. 
 
If you really go in, then in-place edit function for automatic correction would make it real sweet and replace Taiphoonburner.
Little help box in "about" menu could be handy, with paypal link for donations for your efforts ;) 

If you have question, please post in public forum. I do not reply PMs, so all in community can benefit the answer. 
#16
a213m
SSC Member
  • Total Posts : 606
  • Reward points : 0
  • Joined: 2006/02/08 11:10:24
  • Location: Canada
  • Status: online
  • Ribbons : 12
Re: Would anyone be interested in open source and free DDR4 SPD reader/writer? 2020/05/29 19:45:23 (permalink) ☄ Helpfulby TiN_EE 2020/05/29 21:55:07
Thanks, good suggestions, I'll consider them.
 
I'll also be redesigning the GUI. No more tabs, the main window will be primarily focused around a viewer, which will be displaying data from EEPROM or a file, while all other functions will be assigned to submenu items and toolbar buttons.
 
This is still a WIP concept, I'm still working on it, final version might change.
 

 
 

My free and open source DDR4 SPD reader/writer with write protection reversing
 
#1: 9980XE / R6EE / 64GB / 2 x 2080Ti / 1TB SSD / 1600W | CPU-Z / ModsRigs

#2: 10980XE / X299 FTW-K / 64GB / 970 / 256GB SSD / 1000W | CPU-Z

#17
a213m
SSC Member
  • Total Posts : 606
  • Reward points : 0
  • Joined: 2006/02/08 11:10:24
  • Location: Canada
  • Status: online
  • Ribbons : 12
Re: Would anyone be interested in open source and free DDR4 SPD reader/writer? 2020/06/01 01:35:58 (permalink)
Made some progress here, the GUI is 99% complete, (I hope), at least all desired functionality I've been trying to implement is implemented, and there are no bugs, at least none obvious, I only have some cosmetic stuff left to finish.
 
Also I went back to tabbed interface for now to implement a data viewer and a logger on the same window.
 
Edit: see 1st post
 





post edited by a213m - 2020/06/05 17:14:04

My free and open source DDR4 SPD reader/writer with write protection reversing
 
#1: 9980XE / R6EE / 64GB / 2 x 2080Ti / 1TB SSD / 1600W | CPU-Z / ModsRigs

#2: 10980XE / X299 FTW-K / 64GB / 970 / 256GB SSD / 1000W | CPU-Z

#18
a213m
SSC Member
  • Total Posts : 606
  • Reward points : 0
  • Joined: 2006/02/08 11:10:24
  • Location: Canada
  • Status: online
  • Ribbons : 12
Re: Would anyone be interested in open source and free DDR4 SPD reader/writer? 2020/06/05 17:12:14 (permalink) ☄ Helpfulby TiN_EE 2020/06/09 05:53:24
The GUI is ready and the project is now on GitHub
https://github.com/1a2m3/SPD-Reader-Writer
 

 
The functionality is same, you can still read and write SPDs, and set or clear write protection on selected EEPROMs, however, there are some differences between the GUI version and the console app:
  • GUI version does not accept command-line arguments - the functions are called from menu items and toolbar buttons
  • Devices are found automatically, if available - you don't need to scan ports and addresses
  • GUI version writes SPDs in update mode only - bytes are written only if necessary to reduce EEPROM write cycles
  • GUI version sets write protection on all blocks - use the console version if you want to write protect individual blocks
  • GUI version doesn't have colored byte display
  • GUI version has a CRC checker & fixer, program logger, and a screenshot utility
 
post edited by a213m - 2020/06/06 03:11:34

My free and open source DDR4 SPD reader/writer with write protection reversing
 
#1: 9980XE / R6EE / 64GB / 2 x 2080Ti / 1TB SSD / 1600W | CPU-Z / ModsRigs

#2: 10980XE / X299 FTW-K / 64GB / 970 / 256GB SSD / 1000W | CPU-Z

#19
Cool GTX
EVGA Forum Moderator
  • Total Posts : 24038
  • Reward points : 0
  • Joined: 2010/12/12 14:22:25
  • Location: Folding for the Greater Good
  • Status: offline
  • Ribbons : 117
Re: Would anyone be interested in open source and free DDR4 SPD reader/writer? 2020/06/05 17:29:05 (permalink)
sweet

RTX Project EVGA X99 FTWK-5930K@4.8GHz 2xEVGA2080Ti EVGA-1200P2  Nibbler EVGA X99 Classified-5960X@4.5GHz 3-GPU Water Loop 1600P2 
AIO Folding  X99 2x1080Ti FTW3 Hybrid, 1200P
Thank You for Your Support


#20
a213m
SSC Member
  • Total Posts : 606
  • Reward points : 0
  • Joined: 2006/02/08 11:10:24
  • Location: Canada
  • Status: online
  • Ribbons : 12
Re: Would anyone be interested in open source and free DDR4 SPD reader/writer? 2020/06/20 15:13:51 (permalink)
New experimental feature - Thaiphoon Burner dump import.
 

 
I just realized the free version of Thaiphoon Burner doesn't allow SPDs to be saved in binary format, so I implemented an SPD importer in my program which will allow loaded SPDs to be read from Thaiphoon Burner.
 
I'm still testing it, once I'm sure it is bug-free, I'll post updated sources and binaries.
 
 

My free and open source DDR4 SPD reader/writer with write protection reversing
 
#1: 9980XE / R6EE / 64GB / 2 x 2080Ti / 1TB SSD / 1600W | CPU-Z / ModsRigs

#2: 10980XE / X299 FTW-K / 64GB / 970 / 256GB SSD / 1000W | CPU-Z

#21
Cool GTX
EVGA Forum Moderator
  • Total Posts : 24038
  • Reward points : 0
  • Joined: 2010/12/12 14:22:25
  • Location: Folding for the Greater Good
  • Status: offline
  • Ribbons : 117
Re: Would anyone be interested in open source and free DDR4 SPD reader/writer? 2020/06/21 10:51:56 (permalink)
thanks for the update

RTX Project EVGA X99 FTWK-5930K@4.8GHz 2xEVGA2080Ti EVGA-1200P2  Nibbler EVGA X99 Classified-5960X@4.5GHz 3-GPU Water Loop 1600P2 
AIO Folding  X99 2x1080Ti FTW3 Hybrid, 1200P
Thank You for Your Support


#22
rjohnson11
EVGA Forum Moderator
  • Total Posts : 79069
  • Reward points : 0
  • Joined: 2004/10/05 12:44:35
  • Location: Europe
  • Status: offline
  • Ribbons : 71
Re: Would anyone be interested in open source and free DDR4 SPD reader/writer? 2020/06/24 04:03:43 (permalink)
We only allow posts in the English language so your posts will be deleted. 

Specs: AMD Ryzen 9 3950X,  Corsair MP600 M.2, 64GB Corsair RGB Dominator,  ASUS Crosshair VIII Hero,  Corsair 1000D, EVGA RTX 3090 FTW 3 Ultra  Associate Code: H5U80QBH6BH0AXF



#23
Propretor
New Member
  • Total Posts : 15
  • Reward points : 0
  • Joined: 2020/06/23 07:58:22
  • Status: offline
  • Ribbons : 0
Re: Would anyone be interested in open source and free DDR4 SPD reader/writer? 2020/06/24 04:15:15 (permalink)
This is a very good project. Thank you very much for your work!
I've been doing data correction in SPD DIMM for a long time, but all RSWP deprotection tools are very expensive. Your project is very important for not rich people. I have not met with the Arduino platform before. At the moment, there is reason to become familiar with this platform.
So. I want to ask questions and share my thoughts.
1. I have an Arduino Micro Leonardo:

 
Instead of D6, do I need to use pin D7, and instead of A4 and A5 - D2 and D3?
 
2. For what purpose are you using contact EVENT_N? This contact is not used in the EEPROM 34C04 chip:

3. Why is your SA1 always grounded? According to the standard:

CWP requires a high level on pin SA1 Vddspd !!!
post edited by Propretor - 2020/06/24 04:21:46
#24
Propretor
New Member
  • Total Posts : 15
  • Reward points : 0
  • Joined: 2020/06/23 07:58:22
  • Status: offline
  • Ribbons : 0
Re: Would anyone be interested in open source and free DDR4 SPD reader/writer? 2020/06/24 04:20:47 (permalink)
Contact EVENT_N is used only by the thermal sensor and is not used when reading and writing the SPD chip:

#25
a213m
SSC Member
  • Total Posts : 606
  • Reward points : 0
  • Joined: 2006/02/08 11:10:24
  • Location: Canada
  • Status: online
  • Ribbons : 12
Re: Would anyone be interested in open source and free DDR4 SPD reader/writer? 2020/06/24 14:05:34 (permalink)
Propretor
This is a very good project. Thank you very much for your work!
I've been doing data correction in SPD DIMM for a long time, but all RSWP deprotection tools are very expensive. Your project is very important for not rich people. I have not met with the Arduino platform before. At the moment, there is reason to become familiar with this platform.
So. I want to ask questions and share my thoughts.
1. I have an Arduino Micro Leonardo:
 
Instead of D6, do I need to use pin D7, and instead of A4 and A5 - D2 and D3?

 
Yes, you have to use 2 and 3 for SDA and SCL lines. For high voltage switch pin you can use any of the digital pins, just edit the sketch accordingly. Also you'll need to source an external power supply for VDDSPD as Arduino Micro Leonardo has no 3.3V output.
 
Propretor
2. For what purpose are you using contact EVENT_N? This contact is not used in the EEPROM 34C04 chip:
 

 
It's grounded for compatibility. Older EEPROMs used pin 7 to configure hardware write protection. EEPROMs used on DDR4 modules I worked with recommend to have this pin left alone or grounded.
 
Propretor
3. Why is your SA1 always grounded? According to the standard:
 
CWP requires a high level on pin SA1 Vddspd !!!


I don't know where you got that information from, but connecting SA1 to VDD would only change device address, which is relevant for read and write operations. Device addresses are ignored when issuing RSWP commands. Just because bit 2 of CWP command is set to 1, doesn't mean SA1 has to be  physically wired to VDDSPD. None of EEPROMS I've encountered with require SA1 or SA2 to be configured in specific way for write protection operations. Only SA0 has to be connected to high voltage source.
post edited by a213m - 2020/06/24 20:49:20

My free and open source DDR4 SPD reader/writer with write protection reversing
 
#1: 9980XE / R6EE / 64GB / 2 x 2080Ti / 1TB SSD / 1600W | CPU-Z / ModsRigs

#2: 10980XE / X299 FTW-K / 64GB / 970 / 256GB SSD / 1000W | CPU-Z

#26
Propretor
New Member
  • Total Posts : 15
  • Reward points : 0
  • Joined: 2020/06/23 07:58:22
  • Status: offline
  • Ribbons : 0
Re: Would anyone be interested in open source and free DDR4 SPD reader/writer? 2020/06/25 05:00:55 (permalink)
Hi!
Unfortunately, I can not respond to 5 forum posts personally.
While working with the SpdReaderWriterGUI.exe program, I had 2 comments.
1. The program starts for a very long time from 10 to 40 seconds on my computer:

2. 2.After starting, the program sometimes freezes with an error message:

 
#27
Propretor
New Member
  • Total Posts : 15
  • Reward points : 0
  • Joined: 2020/06/23 07:58:22
  • Status: offline
  • Ribbons : 0
Re: Would anyone be interested in open source and free DDR4 SPD reader/writer? 2020/06/25 05:17:06 (permalink)
a213m
For high voltage switch pin you can use any of the digital pins, just edit the sketch accordingly.

Alas, I do not know the Arduino programming environment and planned to use the Windows GUI application. There is something to correct at all is not possible.
 
a213m
Also you'll need to source an external power supply for VDDSPD as Arduino Micro Leonardo has no 3.3V output.
 

In my opinion, if we close the jumper, then we will have a 3.3V version:

a213m
It's grounded for compatibility. Older EEPROMs used pin 7 to configure hardware write protection. EEPROMs used on DDR4 modules I worked with recommend to have this pin left alone or grounded.
 

 On DDR4 modules, 7 pin SPD is not always used. According to the standard. On older DDR 1,2,3 modules, this contact can be used:
_ttps://groups.google.com/forum/#!topic/thaiphoon-burner/cXCjJP4w_ko
If you consider your device as universal, then the 7th pin on the SPD chip will never be on the EVENT_N 78 DIMM pin.
 
 
 
post edited by Propretor - 2020/06/25 05:56:53

Attached Image(s)

#28
Propretor
New Member
  • Total Posts : 15
  • Reward points : 0
  • Joined: 2020/06/23 07:58:22
  • Status: offline
  • Ribbons : 0
Re: Would anyone be interested in open source and free DDR4 SPD reader/writer? 2020/06/25 05:54:14 (permalink)
a213m
I don't know where you got that information from, but connecting SA1 to VDD would only change device address, which is relevant for read and write operations. Device addresses are ignored when issuing RSWP commands. Just because bit 2 of CWP command is set to 1, doesn't mean SA1 has to be physically wired to VDDSPD. None of EEPROMS I've encountered with require SA1 or SA2 to be configured in specific way for write protection operations. Only SA0 has to be connected to high voltage source.

Perhaps I do not understand the document correctly.
_ttp://www.softnology.biz/tips_pswprotection.html
Here is the document I referenced earlier: _ttp://propretor.narod.ru/Arduino/4_01_04R21.pdf
post edited by Propretor - 2020/06/25 06:29:12
#29
a213m
SSC Member
  • Total Posts : 606
  • Reward points : 0
  • Joined: 2006/02/08 11:10:24
  • Location: Canada
  • Status: online
  • Ribbons : 12
Re: Would anyone be interested in open source and free DDR4 SPD reader/writer? 2020/06/25 13:58:12 (permalink)
Propretor
1. The program starts for a very long time from 10 to 40 seconds on my computer:




This happens when you have an Arduino with incorrect or no firmware uploaded. I was able to reproduce the same behavior by connecting a "blank" Arduino board and starting the program.
 
Does your Arduino board respond to commands "t" and "s 11 99" using serial monitor? Show me the output.
 
Do you have Arduino Serial Monitor open when launching the GUI program? If so, close it. Make sure you don't have any extra Arduinos or any other serial devices connected.
 
Do you have a DIMM present? The GUI will not show any devices present unless at least one DIMM is present, even if you have the board with the correct firmware connected.
 

 
Also try the console program.
 
Does the console app show anything with switches /find and /scan ?
 
 
Propretor
..
In my opinion, if we close the jumper, then we will have a 3.3V version:
 



 
No. According to schematic, closed jumper is for 5V/16mhz boards, open is for 3.3V/8mhz boards.
 

http://cdn.sparkfun.com/datasheets/Dev/Arduino/Boards/Pro_Micro_v13b.pdf
 
If the jumper is open on your board, then you'll have a 3.3V output on the VCC pin.
 

post edited by a213m - 2020/06/25 20:03:09

My free and open source DDR4 SPD reader/writer with write protection reversing
 
#1: 9980XE / R6EE / 64GB / 2 x 2080Ti / 1TB SSD / 1600W | CPU-Z / ModsRigs

#2: 10980XE / X299 FTW-K / 64GB / 970 / 256GB SSD / 1000W | CPU-Z

#30
Page: 123 > Showing page 1 of 3
Jump to:
  • Back to Mobile