Memory module identification


I regularly have to sort through a fair number of memory modules (DIMMs, SO-DIMMs, etc.). All (?) of these have serial ROMs that indicate applicable parameters for the module. Most are cryptically marked -- at best. And, reading part numbers off components is tedious (easier to just discard the little beasts!)

Is it possible to design a little to query these devices and extract the parameters -- mapping them to a human readable form (i.e., as a peripheral to a PC)? Is this "ID" circuitry powered independent of the rest of the module? Or, do you, in fact, have to be able to support every possible memory module (pinout, voltage, etc.)

*just* to gain access to this data?

Or, are they sufficiently non-standardized (e.g., across DIMM types) to make that effort worthless? (i.e., would you already have had to narrow down the range of choices sufficiently so the "software" could know how to interpret the data that it extracts)

Reply to
Don Y
Loading thread data ...

Look up serial presense detect.


Reply to
Martin Riddle

Really old ones (before maybe about 2000) don't have the little serial EEPROM, but everything that's still big enough to care about seems to.

I have gotten in the habit of writing the size of the module on it, in Sharpie permanent marker, either when I buy the module, or when I pull one from a running computer. This doesn't help with new-to-you computers, or ones that don't run, etc.

I think it shares power and ground with the main RAM chips on the module. There is a separate pin or two for I2C to talk to the little serial EEPROM.

I *think* the content of the EEPROM is fairly standardized. On Linux, you can install the i2c-tools package, insert the eeprom module, and run decode-dimms to print the EEPROM contents in human-readable format. By default, decode-dimms talks via I2C to the modules that are installed in the PC it's running on, but it can also accept a hex dump of the EEPROM contents that was obtained by other means.

I know people have gone the other way - they wanted to hook some I2C peripheral (like an accelerometer) to their PC, so they took an old memory module, unsoldered all the chips, tacked I2C and ground wires to the right spots, and then plugged the module into a free slot. I think Analog Devices may have even shipped a "dummy" DIMM with one of their dev kits for this purpose.

You might be able to do something like that, but since you are connecting directly to the motherboard, some kind of buffer chip might be in order. Or, use an old PC that you don't care about. :)

You have to at least be able to give the EEPROM power, ground, and I2C. The little 8-pin serial EEPROMs seem to be kind of standard; if somebody makes a "chip clip" that fits them, that might be easier than trying to collect RAM sockets and wire up just a few pins.

Real official PC shops have dedicated hardware to test modules. It looks kind of like an old EPROM burner, with a bunch of sockets on it (or one socket and some adapter sockets) and an LCD. Put in module, press button, get ID; press button again and it tests the RAM.

Matt Roberds

Reply to

The shape of the board (including notches) gives you enough information to know how to readout the serial rom (assuming the board was built to the standards).

Generally the base connector will determine the base signals used, and the notch may define a voltage levels and sometimes some variations on the basic memory.

Generally, for a given mechanical configuration, there is a defined organization of the data in the serial rom.

Given a standard need, and thus a board shape, it is fairly quick to go though a stack of modules into a reader designed for that shape and tell you what you have.

If you just want to know what they all are, and are of varying shapes, it would be more difficult, as you would need to look up the specs for all the shapes to build up the test system.

Reply to
Richard Damon

Yeah, I have 72pin SIMMs that use the "four jumper" solution. Virtually impossible to verify that you have the right "flavor" device installed -- without an elaborate tester (or, "try it and see")

Exactly. I use a white "paint pen" (easily visible ON the black plastic of the component IC's). And, store them segregated by type/speed (in plastic "freezer bags").

Yes, but only within a particular type of device, IIRC. I.e., RAMBUS vs. SDRAM vs. ...

Decoding the content(s) would be relatively easy -- *knowing* what sort of device it is to begin with!

What I would like (ideally) is a device with instructions similar to:

- find the memory slot into which the DUT fits

- press the TEST button

- remove the DUT and place it in the "bin" indicated

(Printing a label to be affixed to the device would be problematic as I have found many labels don't adhere well -- depending on the arrangement of the devices on the DUT. Asking someone to scribble on the DUT prior to "storing it" would be a nightmare.)

I was thinking of just harvesting one of each type of module connector (or, some *other* scheme that could mate with a variety of different devices -- module connectors tend not to have high insertion ratings!) and installing them on a piece of phenolic with *just* the SPD pins wired up (no desire to test the actual memory; just classify it!).

Then, connect that to a PC/laptop that drives the interface (I think just a serial port with level translators would suffice) and presents results on the screen -- or, illuminates individual lights above the intended "bins".

[Think: trained monkey]

I'd be nervous about "poorly motivated" folks being charged with "probing" a device *on* the memory module -- by anything other than a clean "connector interface".

I'm not as worried about testing the memory as I am trying to get devices sorted *correctly* and efficiently -- by trained monkeys. So, someone can just take a pile of DIMMs and *accurately* sort them so that someone pulling "sorted" parts from those bins won't be wondering why this memory module has the wrong number of pins; is NOT ECC; is only 128MB; etc.

Reply to
Don Y

Yes, but is it *always* unique? E.g., 72pin EDO & FPM SIMMs had the same physical shape. Without probing the actual MEMORY devices, you couldn't tell whether you had an EDO or FPM device.

I.e., does the size of board, number of pins and placement of keys TOGETHER WITH THE SPD DATA *uniquely* identify EVERY type of memory module? (think about the variety of different memory types that have been available in "recent years"!)

My goal is to let a human make the "shape selection" choice (i.e., which socket does it fit into). Then, by noting which (of many different) socket is occupied, query the SPD data and UNIQUELY know everything about the device that matters from a system's standpoint.

Reply to
Don Y

Yeah, but the type of module isn't really encoded in the data anywhere. I.e., you need to be able to physically examine it in order to understand how to interpret the data.

I.e., I will have to present different "sockets" (and rely on the user/operator to install the DUT in the proper socket) in order to ascertain the *type* of module.

Reply to
Don Y

I tried it with i2c-parport. Botched the circuit(transistors instead of diodes? ...not sure, something was inverted), so had to use userspace ppdev access , but it worked. The power pin for the eeprom is separate, so could be powered from a linreg... 3V, I think.. decode-dimms can be used to decode the contents... I only tried on an old DDR ram that had died... If you have some really old/exotic modules it may not work... If you happen to have the DIMM installed in your box, you can directly read it out somewhere at /sys/module/eeprom/drivers/i2c:eeprom

Oh, all on LINUX...

Reply to
Johann Klammer

OK. So, no need for a real power supply (as the memory, itself, is not powered up).

(sigh) Yes, it looks like its possible to electrically design such a device -- and, make it reasonably fool proof. The *real* problem seems to lie in the module connectors: most are only rated at a handful of mating cycles (e.g., 5-25).

While this may be plenty for a "typical application" (and, I suspect often *exceeded* by folks!), I can't imagine hundreds and thousands of cycles *weekly* would leave the connector's reliability unaltered.

I will have to find another way of interfacing to the modules...

Reply to
Don Y

I do believe that was the intent of the standards, that the physical interlocks were to keep dangerously incompatible parts separated (as well as some just not working variations) and the serial rom provided details to allow the system to configure itself (or reject if not compatible).

Since to build such a device, you are going to need to obtain standards documentation of all of the sockets and serial data formats, you will have an opportunity to verify that the information is sufficient and unique.

This of course will only help you with parts made to the standards. It wouldn't surprise me that someone made a proprietary memory module that went into their proprietary socket (that uses a regular connector, just not by the standard), and such a module could confuse your system (or even be damaged). I know I have a CPU module on my desk that uses a standard memory connector and whose pin out is nothing like the standard memory module. At least it is significantly longer than a standard memory module so unlikely to fit into the memory connector of a real system.

Reply to
Richard Damon

Am 31.08.2014 um 22:54 schrieb Don Y:

It's not only possible --- it's been done by several companies for well over a decade. Googling "DIMM tester" points you to some of them.

Reply to
Hans-Bernhard Bröker

Unless you're doing really old stuff, probably all you need to care about these days is 1) SDRAM, in PC and laptop shapes and 2) whatever weird variants of SDRAM modules that Macs use.

The Rambus modules can go in the recycle bin with the Itanics, Winmodems, Microchannel cards, and other bad ideas. :)

It used to be pretty common that the modules had one or two small holes in the ends of the PC board... you could print a "dog tag" for it. Now a lot of the ones in my stock don't have those holes.

If you can get the user to keep their fingers out of the way, maybe laser-etch the result on the DIMM. :)

You might be able to roll your own connectors by machining a chunk of flat nylon or polycarbonate or something. Make a deep "well" for the chips on the back side to fit into, and a "ledge" where the edge connector goes. Notches on the "ledge" match the notches on the DIMM. Pogo pins in the nylon for contact... if all the pins you need are on one side of the DIMM, great, otherwise you put a nylon bar over the top with more pogo pins in there. Either continuously poll all the sockets for one that's live, or put a microswitch on the top bar... when the user presses it down, that starts the test, and tells you which socket they used.

My point was that somebody has already done the engineering on this, with sockets that work, etc. I think on most of them, the ID and test steps are separate; if all you want to do is ID, that's OK. The LCD readout on the tester might be kind of cryptic; testers exist that have a USB port to report results to a PC. The first one I found on Google still plays the 1000% obsolete "please ask for price quote" BS, so it's probably too expensive for your application. Aha... I found a distributor that quotes a bargain price of $4,450.

Matt Roberds

Reply to

And server memory, etc.

This is a non-profit that recycles/repurposes machines. E.g., send 500 of them to GodKnowsWhere (that probably doesn't even have ELECTRICITY! :< ). I.e., *anything* is better than the current "nothing".

[Though I haven't seen a machine with SIMMs in quite a while!]

See above.

The problem lies in lack of "skilled" staff -- folks who can look at memory modules, processors (chips), etc. and make an effective decision as to how it should be "processed". (i.e., you want to keep those folks busy *building* machines, not sorting/stripping them!)

As with most non-profits, you take whatever help is *offered*. And, hope, on balance, they do more good than harm!

Even a simple task like sorting DIMMs based on physical characteristics (dimensions, number of pins, number of memory chips, etc.) is fraught with error. Go to pull a pair of 512M PC3200's out of a *sorted* bin and, later, discover one was a 256M part. Or, registered. Or, ECC. ...

After a while, you just throw up your hands!

I (personally) started using the "white paint pen" many years ago to label my own SIMMs -- back when 16 "DIPs" on a 72pin module left you no room to write on the PCB. Granted, there's not much room on the back of *a* chip... but, I could write "8M" on the first device, "32b" on the second, "60ns" on the third and "EDO" on the fourth.

And, still have at least 4 devices with legible part numbers if I ever had to reconsider my labeling! (I've never tried to "erase" the paint; I imagine it would come off with alcohol -- which shouldn't compromise the legends on the chips themselves!)

This would be broken in a matter of weeks! Did I mention "trained monkey"? :< I thought about elastomeric connectors and similar. But, the same problem: the environment is too harsh, users too unskilled/unappreciative.

I thought about trying to just build a small database that they could directly query: type in ANY number printed on a label affixed to the component. If it had been "seen" previously, tell them what type of device they have.

But, this would inevitably lead to a fair bit of "data entry" work -- by someone capable of understanding the device geometries and specifications. I.e., you'd end up with a big pile of "unknown" devices awaiting that "expert's" review.

[And, I sure as hell don't want myself nominated for that "expert" role! I'm at a point where I want to work on what *I* want, not what someone ELSE wants! :> ]

Yeah, non-profits aren't big on spending money -- unless they ABSOLUTELY have to! E.g., want to test an LCD monitor? Set up a PC and just let it run for a few hours! Want to clone disk drives (i.e., to build several systems with identical hardware)? Add a second disk controller to a PC and run the cables out through a hole you cut in the side! Want to "bulk erase" disk drives? Set up ANOTHER PC that just fills the volume with pseudo random data. (i.e., never BUY something to do any of these things -- *better*!)

Just identifying memory modules *should* be a simple project. The real issue is doing it with a device that can handle lots of abuse by *unskilled* workers (who have no incentive to do things right... they aren't being paid, can't really be fired, etc.)

Reply to
Don Y

if the gold wears off it's no big problem you only need it to work for a few seconds after each insertion.

if the contacts lose their spring that could be a problem.

umop apisdn 

--- news:// - complaints: ---
Reply to
Jasen Betts

Of course you could just go to and download the standards for DDR2, DDR3, and DDR4 memory modules. They will tell you what you want to know.


Reply to

Yeah, but it would have to work *reliably*. The last thing you would want is folks (trained monkeys) jiggling the module(s) to get a "good" result: "SPD read error. Please jiggle module."

Out of fear of getting sucked into a "growing problem", I just begged off: "Gee, sorry, but I can't help you with that..."

(More interesting things to do with my time! :> )

Reply to
Don Y

Actually, this is *probably* a proper mindset for running a successful business. Achieve more with less, the creed of the next seculum.

So why the f*ck are they there then? If they can't be bothered to *take care* of equipment they use to perform their work?

As I understand, the non-profit is fighting an uphill battle trying to muster resources for its work, but still...

Reply to
Aleksandar Kuktin

Probably an optimal solution, taking into account that whole "trained monkeys" thing you wrote about..

Reply to
Aleksandar Kuktin

This can be a false economy. E.g., why power an entire PC to exercise

*one* LCD monitor? Why not "split" the signal and drive a dozen monitors from one "video source"? After all, you are just interested in putting an image on the screen so you can check for dead pixels, flakey backlights, etc.! I.e., just because you have hundreds of surplus PC's to choose from, doesn't mean that a better solution might lie elsewhere (i.e., electricity isn't free -- it costs less to drive a distribution amplifier/splitter than power an entire PC!)

Because most non-profits/charities rely on VOLUNTEER labor -- people who, in effect, tell themselves: "Gee, this sounds like such a GOOD CAUSE! I would like to help..." (for the moment, ignore the fact that many of these folks are retirees -- the sorts of people with "time on their hands")

But, just wanting to help doesn't mean you are *able* to help! (of course, the fallback position of "just donate money" is always possible -- but often people don't have "surplus funds" that they can devote to such use... especially "retirees").

The organization is then stuck having to decide whether to *refuse* the offered labor (deeming it "inappropriately skilled" for the tasks at hand) *or* accept it and try to find a good "fit" -- where some value can be extracted from it.

Turning away volunteers has other downsides -- word gets around that you're "selective" about who can help you in your Mission. Other folks hesitate to offer *their* services -- for fear you will turn them away as well!

"Oh, like you, I don't know anything about computers, either! I won't bother offering my time, there..."

(Yes, but you are intimately familiar with import/export regulations so *those* skills might be useful -- if you had only taken the opportunity to *ask*!)

The trick, then, becomes one of trying to find ways of lowering the skill level required for a particular activity -- so that LESS skilled folks can perform it. E.g., if you need an engineer/technician to research every DIMM/SIMM encountered, then that engineer/technician's time is "wasted" on this task instead of building/refurbishing equipment -- a skill that is much harder to "simplify".

Also, it is pretty hard to come up with a list of do's/don'ts that covers even the most basic *assumptions* to which a technician/engineer wouldn't give a second thought! Static sensitive devices, removing power before inserting/removing components, making sure metal hardware isn't lying on exposed circuitry, etc.

For example, one of the places I visited today had *piles*/stacks of LCD monitors organized neatly. Of course, most are now TRASH as they were all stacked with their screen faces leaning on (or, being leaned on by!) the next monitor *above*/below in the stack!

"Oh! I didn't realize that was something that should be avoided..."

Do you "fire" this person for the mess they've caused? Wasn't it

*your* responsibility to ensure they knew EVERYTHING related to WHATEVER they were tasked with doing ON THAT DAY? Remember, you aren't paying them for their time... and, if you aren't grateful for their efforts (i.e., if, instead, you are overly critical of or dismissive in their failures), you risk them feeling unappreciated (or worse) and, possibly, this attitude being conveyed to their other friends, etc.

Most non-profits/charities are understaffed (paid or unpaid). Here, I think the only one that has an abundance of staff (volunteers) is the food pantry. And, the tasks there are all essentially menial ones -- filling boxes with foodstuffs, keeping the floors clean, etc. So, virtually every volunteered hour can be effectively used.

At the opposite extreme, I know of a group that provides free dental care. Hard to imagine them needing many people that are NOT dentists!

Reply to
Don Y

Hmm... correct, I guess.

Interesting problems... I probably would have still optimized the opposite way, but never mind. Evolution will take its course. We'll see if it works out or not.

Reply to
Aleksandar Kuktin

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.