EVGA

Helpful ReplyHot!My DDR4 SPD reader/writer, now with RSWP (write protection) clearing and enabling options

Page: 12 > Showing page 1 of 2
Author
a213m
SSC Member
  • Total Posts : 539
  • Reward points : 0
  • Joined: 2006/02/08 11:10:24
  • Location: Canada
  • Status: offline
  • Ribbons : 11
2020/05/13 23:27:32 (permalink)
Latest builds and sources on GitHub:
https://github.com/1a2m3/SPD-Reader-Writer
 
Compiled binaries:
https://github.com/1a2m3/SPD-Reader-Writer/releases
 
 
Guide:
 
Part 1 - hardware
 
Wire up your Arduino + DDR4 DIMM according to the schematic below:
 

 
 (Numbers in brackets indicate DDR4 pin).
  1. Connect DDR4 SDA (285) to Arduino's SDA **
  2. Connect DDR4 SCL (141) to Arduino's SCL ***
  3. Connect DDR4 VDDSPD (284) to Arduino's +3.3V source
  4. Connect DDR4 SA1 (140), DDR4 SA2 (238), DDR4 EVENT_N (78), and any DDR4 VSS (*) to ground.
  5. Connect DDR4 SA0 (139) to the emitter of the optocoupler (U1)
  6. Connect positive terminal (+) of 9V battery to collector of the optocoupler
  7. Connect negative terminal (-) of the 9V battery to ground.
  8. Connect optocoupler's anode in series with a resistor (R1) to Adruino's pin D6 ****
  9. Connect optocoupler's cathode to ground.
  10. Optionally connect optocoupler's emitter in series with resistor (R2) to ground. This resistor is optional, I used 10k. Using lower values caused issues when executing WP-related command on the device. Works fine without one.
  11. Optionally connect SDA and SCL to 3.3V via pull-up resistors (R3, R4). I used 2kOhm, but everything works without them, since most Arduinos have internal pull-up resistors.
  12. Optionally connect a capacitor (C1) in parallel with VDDSPD and GND to stabilize input voltage to the EEPROM.
 
* There are multiple VSS (GND) pins on DDR4, use any of them, I prefer to use one of the ones close to the edge, where most of the used pins are. Refer to DDR4 pinout table below.
 

 
**, *** 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

**** You may use a different pin to turn on an optocoupler, just edit the value of "HVSW" constant in the sketch accordingly.
 
Parts list:
 
(parts in orange are needed to work with write protection instructions, you may assemble the programmer without these parts, but you won't be able to set or clear write protection)
  • Arduino Nano V3 (or any model with I2C / TWI interface)
  • U1 = Any optocoupler with a maximum collector to emitter voltage above 10V and a diode current below 40mA and forward voltage below 5V.
  • Battery = any battery (or batteries in series) with a voltage of between 8.1V and 10V.
  • R1 = 220 - 330 ohm
  • R2 (optional) = 10k
  • R3, R4 (optional) = 2k - 4.7k
  • C1 (optional) = 6.3V, 560uF
 
DDR4 DIMM pins location:
 

(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 usage

Upload firmware to your Arduino once everything is assembled. Then open Serial Monitor, and enter 
t
into the text field and press "send" or enter key. If everything works, you'll receive an "!" in response.
 
To find an address of your EEPROM, enter
s 80 87
. The first parameter is a starting address, the second parameter is the ending address. The device will respond with an address (or addresses) of all EEPROM devices found. The device will respond in binary format, so the responses will be translated into ASCII symbols in the response window. If you have an EEPROM at address 80 (0x50 in HEX, or 01010000 in binary), the response will be shown as letter "P", because 0x50 (80) matches "P" in ASCII.
 
To read a byte, enter
r 80 0
, where 80 is the device address and 0 is the byte offset. You might not see any response, unless the byte value matches one from ASCII symbol set.
 
To write byte 0xFF at offset 16, enter
w 80 16 255
. When the byte is successfully written, the device will respond with 0x00, but because it doesn't match any symbol from ASCII  set, you'll not see any response in serial monitor.
 
Please note, all numbers, including offset positions and byte values must be entered in decimal notation to work.
 
If your EEPROM is write-protected, you may disable the protection with command
c
. There are no parameter and it doesn't use device address.
 
To enable write protection again, enter
e 0
. The last number specifies which of 4 blocks to be protected, from 0 to 3. The device address isn't used, so all devices will act simultaneously on the same bus.
 
The commands can be combined into one line. To enable write protection on all blocks, enter:
 
e 0 e 1 e 2 e 3

 
Of course this isn't very convenient to work with the device like that by manually typing commands into the serial monitor window, so I wrote a program which communicates with the device over serial port by automating all commands the device is programmed to respond to and properly handling all responses. Proceed onto the next section.
 
Part 3 - Windows application
 
The Windows application is a сonsole program, there's no GUI, and I'm not planning on making one, so don't ask for one. Once you wired everything up and uploaded the sketch to your Arduino, download the binary or compile it from the source code.
 
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>
 
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.

 
That's all for now.
 
For advanced uses, see "Examples" class in the source code.
 
 
~~~Original post:
I'm currently working on an Arduino based DDR4 SPD reader/writer to read and write SPDs from and to DDR4 RAM modules.
 
The hardware prototype is finished and is working perfectly. The software is 99% ready and just needs to have some bugs ironed out, but originally planned basic functionality (which is reading and writing SPDs) is fully implemented is bug free.
 
If anyone's is interested I'm ready to release schematic, firmware source (Arduino sketch), and Windows executable (C# source and compiled binary). Or, if nobody cares, I'll just keep it as private project for myself only.
 



post edited by a213m - 2020/07/10 17:52:55

My free and open source DDR4 SPD reader/writer with write protection reversing
 

        9980XE / R6EE / 64GB / 2 x 2080Ti / 1TB / 1600W
#1
jfw06013
SSC Member
  • Total Posts : 527
  • 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 : 539
  • Reward points : 0
  • Joined: 2006/02/08 11:10:24
  • Location: Canada
  • Status: offline
  • Ribbons : 11
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
 

        9980XE / R6EE / 64GB / 2 x 2080Ti / 1TB / 1600W
#3
Cool GTX
EVGA Forum Moderator
  • Total Posts : 23545
  • 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 : 539
  • Reward points : 0
  • Joined: 2006/02/08 11:10:24
  • Location: Canada
  • Status: offline
  • Ribbons : 11
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
 

        9980XE / R6EE / 64GB / 2 x 2080Ti / 1TB / 1600W
#5
TiN_EE
EVGA Forum Moderator
  • Total Posts : 363
  • 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 : 539
  • Reward points : 0
  • Joined: 2006/02/08 11:10:24
  • Location: Canada
  • Status: offline
  • Ribbons : 11
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
 

        9980XE / R6EE / 64GB / 2 x 2080Ti / 1TB / 1600W
#7
a213m
SSC Member
  • Total Posts : 539
  • Reward points : 0
  • Joined: 2006/02/08 11:10:24
  • Location: Canada
  • Status: offline
  • Ribbons : 11
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
 

        9980XE / R6EE / 64GB / 2 x 2080Ti / 1TB / 1600W
#8
a213m
SSC Member
  • Total Posts : 539
  • Reward points : 0
  • Joined: 2006/02/08 11:10:24
  • Location: Canada
  • Status: offline
  • Ribbons : 11
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
 

        9980XE / R6EE / 64GB / 2 x 2080Ti / 1TB / 1600W
#9
a213m
SSC Member
  • Total Posts : 539
  • Reward points : 0
  • Joined: 2006/02/08 11:10:24
  • Location: Canada
  • Status: offline
  • Ribbons : 11
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
 

        9980XE / R6EE / 64GB / 2 x 2080Ti / 1TB / 1600W
#10
TiN_EE
EVGA Forum Moderator
  • Total Posts : 363
  • 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 : 539
  • Reward points : 0
  • Joined: 2006/02/08 11:10:24
  • Location: Canada
  • Status: offline
  • Ribbons : 11
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
 

        9980XE / R6EE / 64GB / 2 x 2080Ti / 1TB / 1600W
#12
Cool GTX
EVGA Forum Moderator
  • Total Posts : 23545
  • 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 : 539
  • Reward points : 0
  • Joined: 2006/02/08 11:10:24
  • Location: Canada
  • Status: offline
  • Ribbons : 11
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
 

        9980XE / R6EE / 64GB / 2 x 2080Ti / 1TB / 1600W
#14
a213m
SSC Member
  • Total Posts : 539
  • Reward points : 0
  • Joined: 2006/02/08 11:10:24
  • Location: Canada
  • Status: offline
  • Ribbons : 11
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
 

        9980XE / R6EE / 64GB / 2 x 2080Ti / 1TB / 1600W
#15
TiN_EE
EVGA Forum Moderator
  • Total Posts : 363
  • 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 : 539
  • Reward points : 0
  • Joined: 2006/02/08 11:10:24
  • Location: Canada
  • Status: offline
  • Ribbons : 11
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
 

        9980XE / R6EE / 64GB / 2 x 2080Ti / 1TB / 1600W
#17
a213m
SSC Member
  • Total Posts : 539
  • Reward points : 0
  • Joined: 2006/02/08 11:10:24
  • Location: Canada
  • Status: offline
  • Ribbons : 11
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
 

        9980XE / R6EE / 64GB / 2 x 2080Ti / 1TB / 1600W
#18
a213m
SSC Member
  • Total Posts : 539
  • Reward points : 0
  • Joined: 2006/02/08 11:10:24
  • Location: Canada
  • Status: offline
  • Ribbons : 11
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
 

        9980XE / R6EE / 64GB / 2 x 2080Ti / 1TB / 1600W
#19
Cool GTX
EVGA Forum Moderator
  • Total Posts : 23545
  • 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 : 539
  • Reward points : 0
  • Joined: 2006/02/08 11:10:24
  • Location: Canada
  • Status: offline
  • Ribbons : 11
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
 

        9980XE / R6EE / 64GB / 2 x 2080Ti / 1TB / 1600W
#21
Cool GTX
EVGA Forum Moderator
  • Total Posts : 23545
  • 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 : 78112
  • Reward points : 0
  • Joined: 2004/10/05 12:44:35
  • Location: Europe
  • Status: online
  • 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 2070 FTW 3

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 : 539
  • Reward points : 0
  • Joined: 2006/02/08 11:10:24
  • Location: Canada
  • Status: offline
  • Ribbons : 11
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
 

        9980XE / R6EE / 64GB / 2 x 2080Ti / 1TB / 1600W
#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 : 539
  • Reward points : 0
  • Joined: 2006/02/08 11:10:24
  • Location: Canada
  • Status: offline
  • Ribbons : 11
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
 

        9980XE / R6EE / 64GB / 2 x 2080Ti / 1TB / 1600W
#30
Page: 12 > Showing page 1 of 2
Jump to:
  • Back to Mobile