Arcadia

the quieter you become, the more you hear

Access thinkpad x200 SPD I2C bus

Return to index HERE


Normally you could easily access the SPD I2C bus on the computer to read the paratmeter of the RAM module. But on my X200, the normal method does not work anymore. Then I found out that the solution is to set a GPIO in the intel chipset. You need to set a GPIO to 1 in order to access the SPD eeprom, for T61(p)/X61(t)/T400/T500/W500/X200(t), the IO space address is 11B9, Bit[2] from 0 to 1, thus changing the value from 0xFB to 0xFF. For T60(p)/X60(t), the IO space address is 1680, Bit[3] from 0 to 1.

They I modified the code from here [LINK Here] to made it work under ubuntu [LINK Here]. To compile it, the libpci-dev library needs to be installed. The following shows the result on my X200

  • [*] Checking for a ICH6..ICH9 or Series 5..9 PCH system
  • [*] GPIOBASE=00001181, GC=10
  • [*] GPIO decoding is enabled
  • [*] GPIO lockdown is disabled
  • [*] USE_SEL1=030306f6
  • [*] IO_SEL1=1f55f9f1
  • [*] LVL1=1dfffb73
  • [*] USE_SEL2=00000000
  • [*] IO_SEL2=00000000
  • [*] LVL2=00000000
  • -----------------------------
  • >> original 0x11B9 : FB
  • >> setting 0x11B9 to 0xFF
  • >> current 0x11B9 : FF
  • -----------------------------
  • [+] Done

  • Now to access the I2C bus, load the I2C module : modprobe i2c-dev i2c-i801.