BladeSystem - General
1753506 Members
4922 Online
108794 Solutions
New Discussion

Re: How to detect serial number of DIMMs for RHEL OS Proliant servers?

 
chuckk281
Trusted Contributor

How to detect serial number of DIMMs for RHEL OS Proliant servers?

Chong was looking for how to remotely get DIMM serial numbers:

 

************************

 

Hopefully there is someone who can guide me – tried a few commands but can’t get the RAM serial number info without resorting to opening the server.

 

Sample outputs shown here (for lshw, hpdiags and dmidecode) and none with the serial number info needed for RAM.

 

# lshw

 

     *-memory:0

          description: System Memory

          physical id: 1000

          slot: System board or motherboard

        *-bank:0

             description: DIMM DDR3 Synchronous [empty]

             physical id: 0

             slot: PROC 1 DIMM 1D

             width: 64 bits

        *-bank:1

             description: DIMM DDR3 Synchronous 1333 MHz (0.8 ns)

             physical id: 1

             slot: PROC 1 DIMM 2A

             size: 2GiB

             width: 64 bits

             clock: 1333MHz (0.8ns)

        *-bank:2

             description: DIMM DDR3 Synchronous [empty]

             physical id: 2

             slot: PROC 1 DIMM 3E

             width: 64 bits

        *-bank:3

             description: DIMM DDR3 Synchronous 1333 MHz (0.8 ns)

             physical id: 3

             slot: PROC 1 DIMM 4B

             size: 2GiB

             width: 64 bits

             clock: 1333MHz (0.8ns)

        *-bank:4

             description: DIMM DDR3 Synchronous [empty]

             physical id: 4

             slot: PROC 1 DIMM 5F

             width: 64 bits

        *-bank:5

             description: DIMM DDR3 Synchronous 1333 MHz (0.8 ns)

             physical id: 5

             slot: PROC 1 DIMM 6C

             size: 2GiB

             width: 64 bits

             clock: 1333MHz (0.8ns)

 

hpdiags: Serial Number - No, Spare Part Number - Yes

 

# hpdiags

 

      Serial presence detect (SPD) information - DIMM 3, Card 1

         Memory type: DDR3

         Memory DRAM type: RDIMM

         Memory DRAM Speed: 1333 Mbits

         DDR3 Standard Voltage Capability: YES

         DDR3 Low Voltage Capability: NO

         DIMM Description: SPS-DIMM 4GB PC3-10600R

         Spare Part Number: 501534-001

 

# dmidecode

 

Handle 0x1100, DMI type 17, 34 bytes

Memory Device

     Array Handle: 0x1000

     Error Information Handle: Not Provided

     Total Width: 72 bits

     Data Width: 64 bits

     Size: 2048 MB

     Form Factor: DIMM

     Set: 1

     Locator: PROC 1 DIMM 1D

     Bank Locator: Not Specified

     Type: DDR3

     Type Detail: Synchronous

     Speed: 1333 MHz

     Manufacturer: Not Specified

     Serial Number: Not Specified

     Asset Tag: Not Specified

     Part Number: Not Specified

     Rank: 2

 

Handle 0x1101, DMI type 17, 34 bytes

Memory Device

     Array Handle: 0x1000

     Error Information Handle: Not Provided

     Total Width: 72 bits

     Data Width: 64 bits

     Size: 2048 MB

     Form Factor: DIMM

     Set: 2

     Locator: PROC 1 DIMM 2A

     Bank Locator: Not Specified

     Type: DDR3

     Type Detail: Synchronous

     Speed: 1333 MHz

     Manufacturer: Not Specified

     Serial Number: Not Specified

     Asset Tag: Not Specified

     Part Number: Not Specified

     Rank: 2

 

 **************************

 

Steve had some info:

 

******************

 

You can use 2 tools below in Linux if these are ProLiant 200 series or better. There may be some other tools like dmidecode cpuz, etc but I have found issues due to lack of chipset support in some platforms.

 

  1. HPdiags – You need to use hpdiags –v 5 to get the SPD info. This will give you an XML file with the DIMM SPD data. Below is an example of the output from hpdiags for a DIMM’s SPD data

    <property caption="0000 - 000F" name="0000 - 000F" value="92 10 0B 01 02 12 00 08 0B 52 01 08 0C 00 7E 00 ________________ . . . . . . . . . R . . . . . . " hexData="1"/>
    <property caption="0010 - 001F" name="0010 - 001F" value="69 78 69 30 69 11 20 89 70 03 3C 3C 00 F0 82 05 ________________ i x i 0 i . . p . . . . . . . " hexData="1"/>
    <property caption="0020 - 002F" name="0020 - 002F" value="80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ________________ . . . . . . . . . . . . . . . . " hexData="1"/>
    <property caption="0030 - 003F" name="0030 - 003F" value="00 00 00 00 00 00 00 00 00 00 00 00 0F 33 08 09 ________________ . . . . . . . . . . . . . 3 . . " hexData="1"/>
    <property caption="0040 - 004F" name="0040 - 004F" value="80 80 97 1D 00 00 50 55 00 00 00 00 00 00 00 00 ________________ . . . . . . P U . . . . . . . . " hexData="1"/>
    <property caption="0050 - 005F" name="0050 - 005F" value="00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ________________ . . . . . . . . . . . . . . . . " hexData="1"/>
    <property caption="0060 - 006F" name="0060 - 006F" value="00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ________________ . . . . . . . . . . . . . . . . " hexData="1"/>
    <property caption="0070 - 007F" name="0070 - 007F" value="00 00 00 00 00 80 2C 08 10 07 E0 64 14 E8 EB E8 ________________ . . . . . . . . . . . d . . . . " hexData="1"/>
    <property caption="0080 - 008F" name="0080 - 008F" value="33 36 4A 53 5A 46 35 31 32 37 32 50 59 31 47 34 ________________ 3 6 J S Z F 5 1 2 7 2 P Y 1 G 4 " hexData="1"/>
    <property caption="0090 - 009F" name="0090 - 009F" value="44 31 44 31 80 2C 00 00 00 00 00 00 00 00 00 00 ________________ D 1 D 1 . . . . . . . . . . . . " hexData="1"/>
    <property caption="00A0 - 00AF" name="00A0 - 00AF" value="00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ________________ . . . . . . . . . . . . . . . . " hexData="1"/>
    <property caption="00B0 - 00BF" name="00B0 - 00BF" value="FF FF FF FF FF FF FF FF FF FF FF FF FF FF 24 0E ________________ . . . . . . . . . . . . . . . . " hexData="1"/>
    <property caption="00C0 - 00CF" name="00C0 - 00CF" value="11 01 55 53 45 30 31 33 4E 33 44 48 00 00 00 00 ________________ . . U S E 0 1 3 N 3 D H . . . . " hexData="1"/>
    <property caption="00D0 - 00DF" name="00D0 - 00DF" value="00 00 0E 11 07 80 01 00 01 03 00 00 00 00 FF FF ________________ . . . . . . . . . . . . . . . . " hexData="1"/>
    <property caption="00E0 - 00EF" name="00E0 - 00EF" value="FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ________________ . . . . . . . . . . . . . . . . " hexData="1"/>
    <property caption="00F0 - 00FF" name="00F0 - 00FF" value="FF FF FF FF FF FF 00 FF FF FF FF FF FF FF FF FF ________________ . . . . . . . . . . . . . . . . " hexData="1"/>
  2. hpasmcli – You need to use the hpasmcli –s “show dimm spd”. This will give you a text file with the DIMM SPD data. Below is a sample from a DIMM from the output of hpasmcli.


    SPD BYTES:
  3.  _________
  4.  
  5. 00: 92 10 0b 02 02 11 00 09 0b 52 01 08 0c 00 3c 00
  6. 10: 69 78 69 30 69 11 20 89 70 03 3c 3c 00 f0 83 8d
  7. 20: 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  8. 30: 00 00 00 00 00 00 00 00 00 00 00 00 0f 11 04 01
  9. 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  10. 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  11. 60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  12. 70: 00 00 00 00 00 83 0b 0d 09 49 29 5c 07 7d fe 9e
  13. 80: 4e 54 32 47 43 37 32 42 38 50 41 30 4e 46 2d 43
  14. 90: 47 20 00 00 83 0b 00 00 00 00 20 00 00 00 00 4d
  15. a0: 4d 30 39 42 32 37 30 4c 47 44 4e 54 39 34 39 32
  16. b0: 32 30 31 00 00 00 00 01 4e 45 00 34 32 00 24 0e
  17. c0: 11 01 55 53 45 30 30 32 57 4e 31 43 00 00 00 00
  18. d0: 00 00 0e 11 07 9e 01 00 01 01 00 00 00 00 ff ff
  19. e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
  20. f0: ff ff ff ff ff ff 00 00 00 00 00 00 00 00 00 88


Both of these will give you the raw SPD data (256 bytes). The serial number is contained in bytes 122-125 (highlighted in yellow above) for DDR-3 memory.

 

http://www.simmtester.com/page/news/showpubnews.asp?num=153

 

 

The problem is the DIMM serial number is not in a specific format. It is up to the vendor (Hynix, Micron, etc) to decide on the decode method. What that means is the server number in the SPD data can be something like d729cab0 but once it gets run through the vendors magic decoder ring it may be something else. That value will always be the same but will not correlate to what is on the DIMM label itself.

 

The only thing I have found it useful for is figuring out what the correct DIMM is if I have SPD data before the DIMM was removed. I have used this when capturing DIMM’s that were not labeled prior to shipping to the lab. I can install the DIMM in a lab unit and pull the SPD data and compare to find the DIMM I was looking for. I am not sure what your goal is here but I also have a tool that can parse the raw SPD data so if you need some help on decoding this data let me know. I hope this helps.

 

******************

 

Jeroen had a tool for Windows OS users:

 

*****************

 

I’m sorry but in my believing (what I use the most) so far only this windows tool called cpuz (www.cpuid.com) can make this very easily visible in the format below:
General

Memory type                 FB-DDR2

Manufacturer (ID)           Samsung (CE00000000000000)

Size                              2048 MBytes

Max bandwidth             PC2-5300 (333 MHz)

Part number                  

Serial number                D0801905

Manufacturing date        Week 46/Year 07

 

Attributes

Number of banks                       4

EPP                               no

XMP                              no

 

Timings table

Frequency (MHz)                       333     

CAS#                            5.0      

RAS# to CAS# delay      5         

RAS# Precharge             5         

TRAS                             15       

TRC                               20       

 

********************

 

What tools do you use? Let us if you other comments or suggestions.

2 REPLIES 2
chuckk281
Trusted Contributor

Re: How to detect serial number of DIMMs for RHEL OS Proliant servers?

Mark had this info:

 

***************

 

If you install lmsensors RPM (which you have to for Proliant Agents anyway) you could use the perl script which gives you serial number and also manufacturer from the SPD Data. Perl Script is here

 

  http://www.lm-sensors.org/browser/i2c-tools/trunk/eeprom/decode-dimms

 

or alternatively run the command hpasmcli –s “show dimm spd” which will give the spd data (if at 8.70 – I’ve had mixed success at 8.6 and less where SPD data isn’t shown). You then go to the Wiki Page and decode it for serial number (for DDR3 Byte offset 0x7a à 7d). Vendor is a little more difficult, and you need to look up a list from JPEL. It’s probably best to use the Perl Script.

 

***************************

bperina
Occasional Visitor

Re: How to detect serial number of DIMMs for RHEL OS Proliant servers?

Is the HP SN, the one that comes in the PO also coded into the DIMM itself or is it just a sticker? would there be any database where we can access in order to associate the Manufacturer SN to its respective HP SN? 

Thanks!