Skip to content

Instantly share code, notes, and snippets.

@dancek
Created May 23, 2018 18:05
Show Gist options
  • Save dancek/1cc3e32c05d646437601a3d994c9d764 to your computer and use it in GitHub Desktop.
Save dancek/1cc3e32c05d646437601a3d994c9d764 to your computer and use it in GitHub Desktop.
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: 92 10 0b 03 03 19 00 09 03 52 01 08 0c 00 3e 00 ??????.??R???.>.
10: 69 78 69 30 69 11 20 89 00 05 3c 3c 00 f0 83 01 ixi0i? ?.?<<.???
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
30: 00 00 00 00 00 00 00 00 00 00 00 00 0f 11 45 00 ............??E.
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
70: 00 00 00 00 00 80 ce 02 11 30 b1 5b 13 a1 0e 59 .....????0?[???Y
80: 4d 34 37 31 42 35 32 37 33 43 48 30 2d 43 48 39 M471B5273CH0-CH9
90: 20 20 00 00 80 ce 00 00 00 53 31 42 4e 30 30 30 ..??...S1BN000
a0: 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 03 ?.?............?
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 32 59 00 .............2Y.
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: 92 10 0b 03 03 19 00 09 03 52 01 08 0f 00 3e 00 ??????.??R???.>.
10: 69 78 69 30 69 11 20 89 00 05 3c 3c 00 f0 83 01 ixi0i? ?.?<<.???
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
30: 00 00 00 00 00 00 00 00 00 00 00 00 0f 11 45 00 ............??E.
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
70: 00 00 00 00 00 80 ce 02 11 30 b1 5b 13 a1 06 54 .....????0?[???T
80: 4d 34 37 31 42 35 32 37 33 43 48 30 2d 43 48 39 M471B5273CH0-CH9
90: 20 20 00 00 80 ce 00 00 00 53 31 42 4e 30 30 30 ..??...S1BN000
a0: 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 03 ?.?............?
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 32 59 00 .............2Y.
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
Script started on Mon 21 May 2018 08:03:54 PM EEST
code-stats-zsh requires CODESTATS_API_KEY to be set!
% % ~/dev/spd-change % ~/dev/spd-change[?2004hddedeccooddee--ddiimmmmsm m i d - e d o c de d  nninixx--sshheelnix-shell - p i2c-tools[?2004l % nix-shell -p i2c-tools~/dev/spd-change
[nix-shell:~/dev/spd-change]$ decode-dimms
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_MEASUREMENT = "fi_FI.UTF-8",
LC_PAPER = "fi_FI.UTF-8",
LC_MONETARY = "fi_FI.UTF-8",
LC_NAME = "fi_FI.UTF-8",
LC_COLLATE = "fi_FI.UTF-8",
LC_CTYPE = "fi_FI.UTF-8",
LC_ADDRESS = "fi_FI.UTF-8",
LC_NUMERIC = "en_US.UTF-8",
LC_MESSAGES = "en_US.UTF-8",
LC_TELEPHONE = "fi_FI.UTF-8",
LC_TIME = "en_US.UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
No EEPROM found, try loading the eeprom or at24 module
[nix-shell:~/dev/spd-change]$ sudo modprobe i2c-dev eepi2c-i801 eeprom
[sudo] password for dance:
[nix-shell:~/dev/spd-change]$ decode-dimms
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_MEASUREMENT = "fi_FI.UTF-8",
LC_PAPER = "fi_FI.UTF-8",
LC_MONETARY = "fi_FI.UTF-8",
LC_NAME = "fi_FI.UTF-8",
LC_COLLATE = "fi_FI.UTF-8",
LC_CTYPE = "fi_FI.UTF-8",
LC_ADDRESS = "fi_FI.UTF-8",
LC_NUMERIC = "en_US.UTF-8",
LC_MESSAGES = "en_US.UTF-8",
LC_TELEPHONE = "fi_FI.UTF-8",
LC_TIME = "en_US.UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
No EEPROM found, try loading the eeprom or at24 module
[nix-shell:~/dev/spd-change]$ decode-dimmssudo modprobe i2c-dev i2c-i801 eepromeeprom
[nix-shell:~/dev/spd-change]$ sudo modprobe eepromdecode-dimms
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_MEASUREMENT = "fi_FI.UTF-8",
LC_PAPER = "fi_FI.UTF-8",
LC_MONETARY = "fi_FI.UTF-8",
LC_NAME = "fi_FI.UTF-8",
LC_COLLATE = "fi_FI.UTF-8",
LC_CTYPE = "fi_FI.UTF-8",
LC_ADDRESS = "fi_FI.UTF-8",
LC_NUMERIC = "en_US.UTF-8",
LC_MESSAGES = "en_US.UTF-8",
LC_TELEPHONE = "fi_FI.UTF-8",
LC_TIME = "en_US.UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
# decode-dimms version $Revision$
Memory Serial Presence Detect Decoder
By Philip Edelbrock, Christian Zuckschwerdt, Burkart Lingner,
Jean Delvare, Trent Piepho and others
Number of SDRAM DIMMs detected and decoded: 0
[nix-shell:~/dev/spd-change]$ i2cdetect -l
i2c-0 unknown i915 gmbus ssc N/A
i2c-1 unknown i915 gmbus vga N/A
i2c-2 unknown i915 gmbus panel N/A
i2c-3 unknown i915 gmbus dpc N/A
i2c-4 unknown i915 gmbus dpb N/A
i2c-5 unknown i915 gmbus dpd N/A
i2c-6 unknown DPDDC-B N/A
i2c-7 unknown DPDDC-C N/A
i2c-8 unknown DPDDC-D N/A
[nix-shell:~/dev/spd-change]$ i2cdetect -ldecode-dimmssudo modprobe eepromdecode-dimmssudo modprobe i2c-dev i2c-i801 eepromat24
[nix-shell:~/dev/spd-change]$ sudo modprobe at24i2cdetect -l
i2c-0 unknown i915 gmbus ssc N/A
i2c-1 unknown i915 gmbus vga N/A
i2c-2 unknown i915 gmbus panel N/A
i2c-3 unknown i915 gmbus dpc N/A
i2c-4 unknown i915 gmbus dpb N/A
i2c-5 unknown i915 gmbus dpd N/A
i2c-6 unknown DPDDC-B N/A
i2c-7 unknown DPDDC-C N/A
i2c-8 unknown DPDDC-D N/A
[nix-shell:~/dev/spd-change]$ i2cdetect -lsudo modprobe at24i2c-i801
[nix-shell:~/dev/spd-change]$ sudo modprobe i2c-i801i2cdetect -l
i2c-0 unknown i915 gmbus ssc N/A
i2c-1 unknown i915 gmbus vga N/A
i2c-2 unknown i915 gmbus panel N/A
i2c-3 unknown i915 gmbus dpc N/A
i2c-4 unknown i915 gmbus dpb N/A
i2c-5 unknown i915 gmbus dpd N/A
i2c-6 unknown DPDDC-B N/A
i2c-7 unknown DPDDC-C N/A
i2c-8 unknown DPDDC-D N/A
i2c-9 unknown SMBus I801 adapter at efa0 N/A
[nix-shell:~/dev/spd-change]$ i2cdetect -lsudo modprobe i2c-i801i2cdetect -lsudo modprobe at24i2cdetect -l
i2c-0 unknown i915 gmbus ssc N/A
i2c-1 unknown i915 gmbus vga N/A
i2c-2 unknown i915 gmbus panel N/A
i2c-3 unknown i915 gmbus dpc N/A
i2c-4 unknown i915 gmbus dpb N/A
i2c-5 unknown i915 gmbus dpd N/A
i2c-6 unknown DPDDC-B N/A
i2c-7 unknown DPDDC-C N/A
i2c-8 unknown DPDDC-D N/A
i2c-9 unknown SMBus I801 adapter at efa0 N/A
[nix-shell:~/dev/spd-change]$ decode-dimms
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_MEASUREMENT = "fi_FI.UTF-8",
LC_PAPER = "fi_FI.UTF-8",
LC_MONETARY = "fi_FI.UTF-8",
LC_NAME = "fi_FI.UTF-8",
LC_COLLATE = "fi_FI.UTF-8",
LC_CTYPE = "fi_FI.UTF-8",
LC_ADDRESS = "fi_FI.UTF-8",
LC_NUMERIC = "en_US.UTF-8",
LC_MESSAGES = "en_US.UTF-8",
LC_TELEPHONE = "fi_FI.UTF-8",
LC_TIME = "en_US.UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
# decode-dimms version $Revision$
Memory Serial Presence Detect Decoder
By Philip Edelbrock, Christian Zuckschwerdt, Burkart Lingner,
Jean Delvare, Trent Piepho and others
Decoding EEPROM: /sys/bus/i2c/drivers/eeprom/9-0050
Guessing DIMM is in bank 1
---=== SPD EEPROM Information ===---
EEPROM CRC of bytes 0-116 OK (0xAEA4)
# of bytes written to SDRAM EEPROM 176
Total number of bytes in EEPROM 256
Fundamental Memory type DDR3 SDRAM
Module Type SO-DIMM
---=== Memory Characteristics ===---
Maximum module speed 1333 MHz (PC3-10600)
Size 4096 MB
Banks x Rows x Columns x Bits 8 x 15 x 10 x 64
Ranks 2
SDRAM Device Width 8 bits
Bus Width Extension 0 bits
tCL-tRCD-tRP-tRAS 9-9-9-24
Supported CAS Latencies (tCL) 10T, 9T, 8T, 7T, 6T, 5T
---=== Timings at Standard Speeds ===---
tCL-tRCD-tRP-tRAS as DDR3-1333 9-9-9-24
tCL-tRCD-tRP-tRAS as DDR3-1066 7-7-7-20
tCL-tRCD-tRP-tRAS as DDR3-800 6-6-6-15
---=== Timing Parameters ===---
Minimum Cycle Time (tCK) 1.500 ns
Minimum CAS Latency Time (tAA) 13.125 ns
Minimum Write Recovery time (tWR) 15.000 ns
Minimum RAS# to CAS# Delay (tRCD) 13.125 ns
Minimum Row Active to Row Active Delay (tRRD) 6.000 ns
Minimum Row Precharge Delay (tRP) 13.125 ns
Minimum Active to Precharge Delay (tRAS) 36.000 ns
Minimum Active to Auto-Refresh Delay (tRC) 49.125 ns
Minimum Recovery Delay (tRFC) 160.000 ns
Minimum Write to Read CMD Delay (tWTR) 7.500 ns
Minimum Read to Pre-charge CMD Delay (tRTP) 7.500 ns
Minimum Four Activate Window Delay (tFAW) 30.000 ns
---=== Optional Features ===---
Operable voltages 1.5V
RZQ/6 supported? No
RZQ/7 supported? Yes
DLL-Off Mode supported? Yes
Operating temperature range 0-95 degrees C
Refresh Rate in extended temp range 2X
Auto Self-Refresh? Yes
On-Die Thermal Sensor readout? No
Partial Array Self-Refresh? No
Module Thermal Sensor Yes
SDRAM Device Type Standard Monolithic
---=== Physical Characteristics ===---
Module Height 30 mm
Module Thickness 2 mm front, 2 mm back
Module Width 67.6 mm
Module Reference Card F revision 0
Rank 1 Mapping Standard
---=== Manufacturer Data ===---
Module Manufacturer Micron Technology
DRAM Manufacturer Micron Technology
Manufacturing Location Code 0x0F
Manufacturing Date 2011-W23
Assembly Serial Number 0xFB5C7F1A
Part Number 16JSF51264HZ-1G4D1
Revision Code 0x4431
Decoding EEPROM: /sys/bus/i2c/drivers/eeprom/9-0051
Guessing DIMM is in bank 2
---=== SPD EEPROM Information ===---
EEPROM CRC of bytes 0-116 OK (0xFC7B)
# of bytes written to SDRAM EEPROM 176
Total number of bytes in EEPROM 256
Fundamental Memory type DDR3 SDRAM
Module Type SO-DIMM
---=== Memory Characteristics ===---
Maximum module speed 1333 MHz (PC3-10600)
Size 4096 MB
Banks x Rows x Columns x Bits 8 x 15 x 10 x 64
Ranks 2
SDRAM Device Width 8 bits
Bus Width Extension 0 bits
tCL-tRCD-tRP-tRAS 9-9-9-24
Supported CAS Latencies (tCL) 9T, 8T, 7T, 6T, 5T
---=== Timings at Standard Speeds ===---
tCL-tRCD-tRP-tRAS as DDR3-1333 9-9-9-24
tCL-tRCD-tRP-tRAS as DDR3-1066 7-7-7-20
tCL-tRCD-tRP-tRAS as DDR3-800 6-6-6-15
---=== Timing Parameters ===---
Minimum Cycle Time (tCK) 1.500 ns
Minimum CAS Latency Time (tAA) 13.125 ns
Minimum Write Recovery time (tWR) 15.000 ns
Minimum RAS# to CAS# Delay (tRCD) 13.125 ns
Minimum Row Active to Row Active Delay (tRRD) 6.000 ns
Minimum Row Precharge Delay (tRP) 13.125 ns
Minimum Active to Precharge Delay (tRAS) 36.000 ns
Minimum Active to Auto-Refresh Delay (tRC) 49.125 ns
Minimum Recovery Delay (tRFC) 160.000 ns
Minimum Write to Read CMD Delay (tWTR) 7.500 ns
Minimum Read to Pre-charge CMD Delay (tRTP) 7.500 ns
Minimum Four Activate Window Delay (tFAW) 30.000 ns
---=== Optional Features ===---
Operable voltages 1.5V
RZQ/6 supported? Yes
RZQ/7 supported? Yes
DLL-Off Mode supported? Yes
Operating temperature range 0-95 degrees C
Refresh Rate in extended temp range 2X
Auto Self-Refresh? No
On-Die Thermal Sensor readout? No
Partial Array Self-Refresh? No
Module Thermal Sensor No
SDRAM Device Type Standard Monolithic
---=== Physical Characteristics ===---
Module Height 30 mm
Module Thickness 2 mm front, 2 mm back
Module Width 67.6 mm
Module Reference Card F revision 3
Rank 1 Mapping Standard
---=== Manufacturer Data ===---
Module Manufacturer Samsung
DRAM Manufacturer Samsung
Manufacturing Location Code 0x02
Manufacturing Date 2012-W08
Assembly Serial Number 0x6250CDAA
Part Number M471B5273DH0-CH9
Number of SDRAM DIMMs detected and decoded: 2
[nix-shell:~/dev/spd-change]$ i2cdump 9 0x50
No size specified (using byte-data access)
Error: Could not open file `/dev/i2c-9': Permission denied
Run as root?
[nix-shell:~/dev/spd-change]$ i2cdump 9 0x50[1@s[1@u[1@d[1@o[1@
No size specified (using byte-data access)
Error: Could not set address to 0x50: Device or resource busy
[nix-shell:~/dev/spd-change]$ sudo i2cdump 9 0x50man modprobe
MODPROBE(8) modprobe MODPROBE(8)

NAME
modprobe - Add and remove modules from the Linux Kernel

SYNOPSIS
modprobe [-v] [-V] [-C config-file] [-n] [-i] [-q] [-b] [modulename] [module parameters...]

modprobe [-r] [-v] [-n] [-i] [modulename...]

modprobe [-c]

modprobe [--dump-modversions] [filename]

DESCRIPTION
modprobe intelligently adds or removes a module from the Linux kernel: note that for convenience, there is no difference between _ and - in module names
(automatic underscore conversion is performed). modprobe looks in the module directory /lib/modules/`uname -r` for all the modules and other files, except
for the optional configuration files in the /etc/modprobe.d directory (see modprobe.d(5)). modprobe will also use module options specified on the kernel
command line in the form of <module>.<option> and blacklists in the form of modprobe.blacklist=<module>.

Note that unlike in 2.4 series Linux kernels (which are not supported by this tool) this version of modprobe does not do anything to the module itself: the
work of resolving symbols and understanding parameters is done inside the kernel. So module failure is sometimes accompanied by a kernel message: see
dmesg(8).

modprobe expects an up-to-date modules.dep.bin file as generated by the corresponding depmod utility shipped along with modprobe (see depmod(8)). This file
lists what other modules each module needs (if any), and modprobe uses this to add or remove these dependencies automatically.

If any arguments are given after the modulename, they are passed to the kernel (in addition to any options listed in the configuration file).

OPTIONS
-a, --all
Insert all module names on the command line.

-b, --use-blacklist
This option causes modprobe to apply the blacklist commands in the configuration files (if any) to module names as well. It is usually used by udev(7).

-C, --config
This option overrides the default configuration directory (/etc/modprobe.d).

This option is passed through install or remove commands to other modprobe commands in the MODPROBE_OPTIONS environment variable.

-c, --showconfig
Dump out the effective configuration from the config directory and exit.

--dump-modversions
Print out a list of module versioning information required by a module. This option is commonly used by distributions in order to package up a Linux
kernel module using module versioning deps.
 Manual page modprobe(8) line 1 (press h for help or q to quit) 
-d, --dirname
Root directory for modules, / by default.

--first-time
Normally, modprobe will succeed (and do nothing) if told to insert a module which is already present or to remove a module which isn't present. This is
ideal for simple scripts; however, more complicated scripts often want to know whether modprobe really did something: this option makes modprobe fail in
the case that it actually didn't do anything.

--force-vermagic
Every module contains a small string containing important information, such as the kernel and compiler versions. If a module fails to load and the kernel
complains that the "version magic" doesn't match, you can use this option to remove it. Naturally, this check is there for your protection, so this using
option is dangerous unless you know what you're doing.

This applies to any modules inserted: both the module (or alias) on the command line and any modules on which it depends.

--force-modversion
When modules are compiled with CONFIG_MODVERSIONS set, a section detailing the versions of every interfaced used by (or supplied by) the module is
created. If a module fails to load and the kernel complains that the module disagrees about a version of some interface, you can use "--force-modversion"
to remove the version information altogether. Naturally, this check is there for your protection, so using this option is dangerous unless you know what
you're doing.

This applies any modules inserted: both the module (or alias) on the command line and any modules on which it depends.

-f, --force
Try to strip any versioning information from the module which might otherwise stop it from loading: this is the same as using both --force-vermagic and
--force-modversion. Naturally, these checks are there for your protection, so using this option is dangerous unless you know what you are doing.

This applies to any modules inserted: both the module (or alias) on the command line and any modules it on which it depends.

-i, --ignore-install, --ignore-remove
This option causes modprobe to ignore install and remove commands in the configuration file (if any) for the module specified on the command line (any
dependent modules are still subject to commands set for them in the configuration file). Both install and remove commands will currently be ignored when
this option is used regardless of whether the request was more specifically made with only one or other (and not both) of --ignore-install or
--ignore-remove. See modprobe.d(5).

-n, --dry-run, --show
This option does everything but actually insert or delete the modules (or run the install or remove commands). Combined with -v, it is useful for
debugging problems. For historical reasons both --dry-run and --show actually mean the same thing and are interchangeable.

-q, --quiet
With this flag, modprobe won't print an error message if you try to remove or insert a module it can't find (and isn't an alias or install/remove
command). However, it will still return with a non-zero exit status. The kernel uses this to opportunistically probe for modules which might exist using
request_module.

-R, --resolve-alias
Print all module names matching an alias. This can be useful for debugging module alias problems.
 Manual page modprobe(8) line 48 (press h for help or q to quit) 
-r, --remove
This option causes modprobe to remove rather than insert a module. If the modules it depends on are also unused, modprobe will try to remove them too.
Unlike insertion, more than one module can be specified on the command line (it does not make sense to specify module parameters when removing modules).

There is usually no reason to remove modules, but some buggy modules require it. Your distribution kernel may not have been built to support removal of
modules at all.

-S, --set-version
Set the kernel version, rather than using uname(2) to decide on the kernel version (which dictates where to find the modules).

--show-depends
List the dependencies of a module (or alias), including the module itself. This produces a (possibly empty) set of module filenames, one per line, each
starting with "insmod" and is typically used by distributions to determine which modules to include when generating initrd/initramfs images. Install
commands which apply are shown prefixed by "install". It does not run any of the install commands. Note that modinfo(8) can be used to extract
dependencies of a module from the module itself, but knows nothing of aliases or install commands.

-s, --syslog
This option causes any error messages to go through the syslog mechanism (as LOG_DAEMON with level LOG_NOTICE) rather than to standard error. This is also
automatically enabled when stderr is unavailable.

This option is passed through install or remove commands to other modprobe commands in the MODPROBE_OPTIONS environment variable.

-V, --version
Show version of program and exit.

-v, --verbose
Print messages about what the program is doing. Usually modprobe only prints messages if something goes wrong.

This option is passed through install or remove commands to other modprobe commands in the MODPROBE_OPTIONS environment variable.

ENVIRONMENT
The MODPROBE_OPTIONS environment variable can also be used to pass arguments to modprobe.

COPYRIGHT
This manual page originally Copyright 2002, Rusty Russell, IBM Corporation. Maintained by Jon Masters and others.

SEE ALSO
modprobe.d(5), insmod(8), rmmod(8), lsmod(8), modinfo(8)

AUTHORS
Jon Masters <jcm@jonmasters.org>
Developer

Robby Workman <rworkman@slackware.com>
Developer

 Manual page modprobe(8) line 95 (press h for help or q to quit) 
[nix-shell:~/dev/spd-change]$ sudo modprobe -r eeprom
[nix-shell:~/dev/spd-change]$ sudo modprobe -r eepromman modprobesudo i2cdump 9 0x50decode-dimms
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_MEASUREMENT = "fi_FI.UTF-8",
LC_PAPER = "fi_FI.UTF-8",
LC_MONETARY = "fi_FI.UTF-8",
LC_NAME = "fi_FI.UTF-8",
LC_COLLATE = "fi_FI.UTF-8",
LC_CTYPE = "fi_FI.UTF-8",
LC_ADDRESS = "fi_FI.UTF-8",
LC_NUMERIC = "en_US.UTF-8",
LC_MESSAGES = "en_US.UTF-8",
LC_TELEPHONE = "fi_FI.UTF-8",
LC_TIME = "en_US.UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
# decode-dimms version $Revision$
Memory Serial Presence Detect Decoder
By Philip Edelbrock, Christian Zuckschwerdt, Burkart Lingner,
Jean Delvare, Trent Piepho and others
Number of SDRAM DIMMs detected and decoded: 0
[nix-shell:~/dev/spd-change]$ decode-dimms
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_MEASUREMENT = "fi_FI.UTF-8",
LC_PAPER = "fi_FI.UTF-8",
LC_MONETARY = "fi_FI.UTF-8",
LC_NAME = "fi_FI.UTF-8",
LC_COLLATE = "fi_FI.UTF-8",
LC_CTYPE = "fi_FI.UTF-8",
LC_ADDRESS = "fi_FI.UTF-8",
LC_NUMERIC = "en_US.UTF-8",
LC_MESSAGES = "en_US.UTF-8",
LC_TELEPHONE = "fi_FI.UTF-8",
LC_TIME = "en_US.UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
# decode-dimms version $Revision$
Memory Serial Presence Detect Decoder
By Philip Edelbrock, Christian Zuckschwerdt, Burkart Lingner,
Jean Delvare, Trent Piepho and others
Number of SDRAM DIMMs detected and decoded: 0
[nix-shell:~/dev/spd-change]$ decode-dimms sudo modprobe -r eepromman modprobesudo i2cdump 9 0x50decode-dimms i2cdetect -ldecode-dimms i2cdump 9 0x50[5@sudo man modprobesudo modprobe -r eepromat24
[nix-shell:~/dev/spd-change]$ sudo modprobe -r at24i2c-i801
[nix-shell:~/dev/spd-change]$ sudo modprobe eepbrom
[nix-shell:~/dev/spd-change]$ decode-dimms
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_MEASUREMENT = "fi_FI.UTF-8",
LC_PAPER = "fi_FI.UTF-8",
LC_MONETARY = "fi_FI.UTF-8",
LC_NAME = "fi_FI.UTF-8",
LC_COLLATE = "fi_FI.UTF-8",
LC_CTYPE = "fi_FI.UTF-8",
LC_ADDRESS = "fi_FI.UTF-8",
LC_NUMERIC = "en_US.UTF-8",
LC_MESSAGES = "en_US.UTF-8",
LC_TELEPHONE = "fi_FI.UTF-8",
LC_TIME = "en_US.UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
# decode-dimms version $Revision$
Memory Serial Presence Detect Decoder
By Philip Edelbrock, Christian Zuckschwerdt, Burkart Lingner,
Jean Delvare, Trent Piepho and others
Number of SDRAM DIMMs detected and decoded: 0
[nix-shell:~/dev/spd-change]$ decode-dimms
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_MEASUREMENT = "fi_FI.UTF-8",
LC_PAPER = "fi_FI.UTF-8",
LC_MONETARY = "fi_FI.UTF-8",
LC_NAME = "fi_FI.UTF-8",
LC_COLLATE = "fi_FI.UTF-8",
LC_CTYPE = "fi_FI.UTF-8",
LC_ADDRESS = "fi_FI.UTF-8",
LC_NUMERIC = "en_US.UTF-8",
LC_MESSAGES = "en_US.UTF-8",
LC_TELEPHONE = "fi_FI.UTF-8",
LC_TIME = "en_US.UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
# decode-dimms version $Revision$
Memory Serial Presence Detect Decoder
By Philip Edelbrock, Christian Zuckschwerdt, Burkart Lingner,
Jean Delvare, Trent Piepho and others
Number of SDRAM DIMMs detected and decoded: 0
[nix-shell:~/dev/spd-change]$ sudo modprobe i2c-i801
[nix-shell:~/dev/spd-change]$ sudo modprobe i2c-i801decode-dimms
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_MEASUREMENT = "fi_FI.UTF-8",
LC_PAPER = "fi_FI.UTF-8",
LC_MONETARY = "fi_FI.UTF-8",
LC_NAME = "fi_FI.UTF-8",
LC_COLLATE = "fi_FI.UTF-8",
LC_CTYPE = "fi_FI.UTF-8",
LC_ADDRESS = "fi_FI.UTF-8",
LC_NUMERIC = "en_US.UTF-8",
LC_MESSAGES = "en_US.UTF-8",
LC_TELEPHONE = "fi_FI.UTF-8",
LC_TIME = "en_US.UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
# decode-dimms version $Revision$
Memory Serial Presence Detect Decoder
By Philip Edelbrock, Christian Zuckschwerdt, Burkart Lingner,
Jean Delvare, Trent Piepho and others
Decoding EEPROM: /sys/bus/i2c/drivers/eeprom/9-0050
Guessing DIMM is in bank 1
---=== SPD EEPROM Information ===---
EEPROM CRC of bytes 0-116 OK (0xAEA4)
# of bytes written to SDRAM EEPROM 176
Total number of bytes in EEPROM 256
Fundamental Memory type DDR3 SDRAM
Module Type SO-DIMM
---=== Memory Characteristics ===---
Maximum module speed 1333 MHz (PC3-10600)
Size 4096 MB
Banks x Rows x Columns x Bits 8 x 15 x 10 x 64
Ranks 2
SDRAM Device Width 8 bits
Bus Width Extension 0 bits
tCL-tRCD-tRP-tRAS 9-9-9-24
Supported CAS Latencies (tCL) 10T, 9T, 8T, 7T, 6T, 5T
---=== Timings at Standard Speeds ===---
tCL-tRCD-tRP-tRAS as DDR3-1333 9-9-9-24
tCL-tRCD-tRP-tRAS as DDR3-1066 7-7-7-20
tCL-tRCD-tRP-tRAS as DDR3-800 6-6-6-15
---=== Timing Parameters ===---
Minimum Cycle Time (tCK) 1.500 ns
Minimum CAS Latency Time (tAA) 13.125 ns
Minimum Write Recovery time (tWR) 15.000 ns
Minimum RAS# to CAS# Delay (tRCD) 13.125 ns
Minimum Row Active to Row Active Delay (tRRD) 6.000 ns
Minimum Row Precharge Delay (tRP) 13.125 ns
Minimum Active to Precharge Delay (tRAS) 36.000 ns
Minimum Active to Auto-Refresh Delay (tRC) 49.125 ns
Minimum Recovery Delay (tRFC) 160.000 ns
Minimum Write to Read CMD Delay (tWTR) 7.500 ns
Minimum Read to Pre-charge CMD Delay (tRTP) 7.500 ns
Minimum Four Activate Window Delay (tFAW) 30.000 ns
---=== Optional Features ===---
Operable voltages 1.5V
RZQ/6 supported? No
RZQ/7 supported? Yes
DLL-Off Mode supported? Yes
Operating temperature range 0-95 degrees C
Refresh Rate in extended temp range 2X
Auto Self-Refresh? Yes
On-Die Thermal Sensor readout? No
Partial Array Self-Refresh? No
Module Thermal Sensor Yes
SDRAM Device Type Standard Monolithic
---=== Physical Characteristics ===---
Module Height 30 mm
Module Thickness 2 mm front, 2 mm back
Module Width 67.6 mm
Module Reference Card F revision 0
Rank 1 Mapping Standard
---=== Manufacturer Data ===---
Module Manufacturer Micron Technology
DRAM Manufacturer Micron Technology
Manufacturing Location Code 0x0F
Manufacturing Date 2011-W23
Assembly Serial Number 0xFB5C7F1A
Part Number 16JSF51264HZ-1G4D1
Revision Code 0x4431
Decoding EEPROM: /sys/bus/i2c/drivers/eeprom/9-0051
Guessing DIMM is in bank 2
---=== SPD EEPROM Information ===---
EEPROM CRC of bytes 0-116 OK (0xFC7B)
# of bytes written to SDRAM EEPROM 176
Total number of bytes in EEPROM 256
Fundamental Memory type DDR3 SDRAM
Module Type SO-DIMM
---=== Memory Characteristics ===---
Maximum module speed 1333 MHz (PC3-10600)
Size 4096 MB
Banks x Rows x Columns x Bits 8 x 15 x 10 x 64
Ranks 2
SDRAM Device Width 8 bits
Bus Width Extension 0 bits
tCL-tRCD-tRP-tRAS 9-9-9-24
Supported CAS Latencies (tCL) 9T, 8T, 7T, 6T, 5T
---=== Timings at Standard Speeds ===---
tCL-tRCD-tRP-tRAS as DDR3-1333 9-9-9-24
tCL-tRCD-tRP-tRAS as DDR3-1066 7-7-7-20
tCL-tRCD-tRP-tRAS as DDR3-800 6-6-6-15
---=== Timing Parameters ===---
Minimum Cycle Time (tCK) 1.500 ns
Minimum CAS Latency Time (tAA) 13.125 ns
Minimum Write Recovery time (tWR) 15.000 ns
Minimum RAS# to CAS# Delay (tRCD) 13.125 ns
Minimum Row Active to Row Active Delay (tRRD) 6.000 ns
Minimum Row Precharge Delay (tRP) 13.125 ns
Minimum Active to Precharge Delay (tRAS) 36.000 ns
Minimum Active to Auto-Refresh Delay (tRC) 49.125 ns
Minimum Recovery Delay (tRFC) 160.000 ns
Minimum Write to Read CMD Delay (tWTR) 7.500 ns
Minimum Read to Pre-charge CMD Delay (tRTP) 7.500 ns
Minimum Four Activate Window Delay (tFAW) 30.000 ns
---=== Optional Features ===---
Operable voltages 1.5V
RZQ/6 supported? Yes
RZQ/7 supported? Yes
DLL-Off Mode supported? Yes
Operating temperature range 0-95 degrees C
Refresh Rate in extended temp range 2X
Auto Self-Refresh? No
On-Die Thermal Sensor readout? No
Partial Array Self-Refresh? No
Module Thermal Sensor No
SDRAM Device Type Standard Monolithic
---=== Physical Characteristics ===---
Module Height 30 mm
Module Thickness 2 mm front, 2 mm back
Module Width 67.6 mm
Module Reference Card F revision 3
Rank 1 Mapping Standard
---=== Manufacturer Data ===---
Module Manufacturer Samsung
DRAM Manufacturer Samsung
Manufacturing Location Code 0x02
Manufacturing Date 2012-W08
Assembly Serial Number 0x6250CDAA
Part Number M471B5273DH0-CH9
Number of SDRAM DIMMs detected and decoded: 2
[nix-shell:~/dev/spd-change]$ i2cdetect -l
i2c-0 unknown i915 gmbus ssc N/A
i2c-1 unknown i915 gmbus vga N/A
i2c-2 unknown i915 gmbus panel N/A
i2c-3 unknown i915 gmbus dpc N/A
i2c-4 unknown i915 gmbus dpb N/A
i2c-5 unknown i915 gmbus dpd N/A
i2c-6 unknown DPDDC-B N/A
i2c-7 unknown DPDDC-C N/A
i2c-8 unknown DPDDC-D N/A
i2c-9 unknown SMBus I801 adapter at efa0 N/A
[nix-shell:~/dev/spd-change]$ i2cdetect -lsudo modprobe -r eeprom
[nix-shell:~/dev/spd-change]$ sudo modprobe -r eepromi2cdetect -l
i2c-0 unknown i915 gmbus ssc N/A
i2c-1 unknown i915 gmbus vga N/A
i2c-2 unknown i915 gmbus panel N/A
i2c-3 unknown i915 gmbus dpc N/A
i2c-4 unknown i915 gmbus dpb N/A
i2c-5 unknown i915 gmbus dpd N/A
i2c-6 unknown DPDDC-B N/A
i2c-7 unknown DPDDC-C N/A
i2c-8 unknown DPDDC-D N/A
i2c-9 unknown SMBus I801 adapter at efa0 N/A
[nix-shell:~/dev/spd-change]$ i2cdump 9 0x50
No size specified (using byte-data access)
Error: Could not open file `/dev/i2c-9': Permission denied
Run as root?
[nix-shell:~/dev/spd-change]$ i2cdump 9 0x50[1@s[1@u[1@d[1@o[1@
No size specified (using byte-data access)
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-9, address 0x50, mode byte
Continue? [Y/n]
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: 92 10 0b 03 03 19 00 09 03 52 01 08 0c 00 7e 00 ??????.??R???.~.
10: 69 78 69 30 69 11 20 89 00 05 3c 3c 00 f0 82 05 ixi0i? ?.?<<.???
20: 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ?...............
30: 00 00 00 00 00 00 00 00 00 00 00 00 0f 11 05 00 ............???.
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
70: 00 00 00 00 00 80 2c 0f 11 23 fb 5c 7f 1a a4 ae .....?,??#?\????
80: 31 36 4a 53 46 35 31 32 36 34 48 5a 2d 31 47 34 16JSF51264HZ-1G4
90: 44 31 44 31 80 2c 00 00 00 00 00 00 00 00 00 00 D1D1?,..........
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
[nix-shell:~/dev/spd-change]$ # spec: divisor at 0x0dend at 0x0a, divosorisor at 0x0b (nanoseconds)
[nix-shell:~/dev/spd-change]$ # expected: resolution of 1/8ns (wikipedia)
[nix-shell:~/dev/spd-change]$ i2cget 9 0x50 0x0a
Error: Could not open file `/dev/i2c-9': Permission denied
Run as root?
[nix-shell:~/dev/spd-change]$ i2cget 9 0x50 0x0a[1@s[1@u[1@d[1@o[1@
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will read from device file /dev/i2c-9, chip address 0x50, data address
0x0a, using read byte data.
Continue? [Y/n]
0x01
[nix-shell:~/dev/spd-change]$ sudo i2cget 9 0x50 0x0b
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will read from device file /dev/i2c-9, chip address 0x50, data address
0x0b, using read byte data.
Continue? [Y/n] y
0x08
[nix-shell:~/dev/spd-change]$ # spec: minimum cycle time at 0x0c. expected: 667Mhz -> 1.5ns
[nix-shell:~/dev/spd-change]$ sudo i2cget 9 0x050 50 0x0c
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will read from device file /dev/i2c-9, chip address 0x50, data address
0x0c, using read byte data.
Continue? [Y/n] y
0x0c
[nix-shell:~/dev/spd-change]$ # 10333Mhz: 1066Mhz: -> DDrR -> 533MHZhz -> 1.875ns = 15/16ns
[nix-shell:~/dev/spd-change]$ # i2cset 9 0cx50 0x00f
[nix-shell:~/dev/spd-change]$ exit
% % ~/dev/spd-change % ~/dev/spd-change[?2004h[?2004l
Script done on Mon 21 May 2018 08:20:23 PM EEST
Script started on Mon 21 May 2018 08:24:44 PM EEST
\[\][dance@grave:~/dev/spd-change]$\[\] sudo i2cset 9 0x50 0x0c 0x0f
[sudo] password for dance:
WARNING! This program can confuse your I2C bus, cause data loss and worse!
DANGEROUS! Writing to a serial EEPROM on a memory DIMM
may render your memory USELESS and make your system UNBOOTABLE!
I will write to device file /dev/i2c-9, chip address 0x50, data address
0x0c, data 0x0f, mode byte.
Continue? [y/N] y
Error: Write failed
\[\][dance@grave:~/dev/spd-change]$\[\] exit
Script done on Mon 21 May 2018 08:25:32 PM EEST
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment