| 1 |
|
|---|
| 2 |
**** WARNING: IBM Thinkpad users should not install lm_sensors! **** |
|---|
| 3 |
|
|---|
| 4 |
The eeprom of some IBM Thinkpads has been corrupted after installing |
|---|
| 5 |
lm_sensors. |
|---|
| 6 |
|
|---|
| 7 |
In our releases through 2.6.4, sensors-detect (our userspace detection script) |
|---|
| 8 |
corrupts the Atmel 24RF08 eeprom. We have verified this in testing. |
|---|
| 9 |
After the eeprom is corrupted, the checksum verification in the BIOS |
|---|
| 10 |
will fail and the Thinkpad will not boot. |
|---|
| 11 |
|
|---|
| 12 |
The 24RF08 is an 8K eeprom appearing at addresses 0x54 - 0x57 with |
|---|
| 13 |
an additional "access protection page" at address 0x5c. |
|---|
| 14 |
This is an unusual eeprom that contains a RFID (Radio Frequency ID) |
|---|
| 15 |
port for wireless access, and elaborate access protection mechanisms. |
|---|
| 16 |
The 24RF08 gets confused (presumably due to a state machine flaw) by |
|---|
| 17 |
the 'quick write 0' (*) probes our package uses for detection. |
|---|
| 18 |
This behavior is in violation of the I2C specification. This corruption |
|---|
| 19 |
mechanism has never been reported to us on any other eeprom, |
|---|
| 20 |
Atmel or otherwise. |
|---|
| 21 |
|
|---|
| 22 |
We made several changes in release 2.6.5 (released September 15, 2002) |
|---|
| 23 |
to minimize the chance of corruption. |
|---|
| 24 |
Later evolutions were made and the current state is: |
|---|
| 25 |
|
|---|
| 26 |
1) The probing command (quick write 0) has been replaced by a different |
|---|
| 27 |
command (read byte) for addresses where eeproms are known to live. |
|---|
| 28 |
This should prevent corruption of 24RF08 eeproms in any system, |
|---|
| 29 |
IBM or not. A similar change was made to i2cdetect as well, although |
|---|
| 30 |
no corruption was ever reported using this tool. |
|---|
| 31 |
|
|---|
| 32 |
2) The i2c-piix4 module (the bus driver that is used for Intel PIIX4-based |
|---|
| 33 |
systems, including IBM Thinkpads) now accesses DMI information |
|---|
| 34 |
in the BIOS to identify the system manufacturer. If the system |
|---|
| 35 |
manufacturer is IBM, i2c-piix4 will print a message and exit. |
|---|
| 36 |
As the 24RF08 is on the PIIX4 SMBus, this prevents access to |
|---|
| 37 |
the 24RF08. |
|---|
| 38 |
|
|---|
| 39 |
3) The sequence of probes in the eeprom module (when loaded with |
|---|
| 40 |
checksum=1) has been changed so that 24RF08 eeproms will |
|---|
| 41 |
not be corrupted. This *should* prevent corruption of 24RF08 |
|---|
| 42 |
eeproms in non-IBM systems. |
|---|
| 43 |
We do not have any reports of this corruption mechanism in releases |
|---|
| 44 |
2.6.4 or earlier but have verified that it can happen. |
|---|
| 45 |
The ddcmon driver was changed in the same way, just in case. |
|---|
| 46 |
|
|---|
| 47 |
Even with these changes, we still DO NOT RECOMMEND INSTALLING |
|---|
| 48 |
lm_sensors 2.6.5 or later on IBM Thinkpads, because: |
|---|
| 49 |
|
|---|
| 50 |
1) While these changes will dramatically reduce the chance of 24RF08 |
|---|
| 51 |
corruption, these changes have not been heavily tested. |
|---|
| 52 |
|
|---|
| 53 |
2) lm_sensors won't run on most IBM systems because of these changes. |
|---|
| 54 |
|
|---|
| 55 |
3) Most IBM Thinkpads contain a proprietary Embedded Controller which |
|---|
| 56 |
is used to access sensors. This controller is not on the SMBus, |
|---|
| 57 |
and IBM will not release the programming interface to the |
|---|
| 58 |
controller. So lm_sensors isn't useful on these Thinkpads anyway. |
|---|
| 59 |
|
|---|
| 60 |
You may want to try ACPI instead, it should let you get some information |
|---|
| 61 |
about temperatures and fan status. |
|---|
| 62 |
|
|---|
| 63 |
As described above, our 2.6.5 release "blacklisted" all IBM systems. |
|---|
| 64 |
For a moment, we have been planning to refine the system detection |
|---|
| 65 |
so that only those models containing 24RF08's are blacklisted. After that, |
|---|
| 66 |
we planned to use a different approach: a "white list" of known-to-be-safe |
|---|
| 67 |
systems. In both cases, it would require continuous updates of a machines |
|---|
| 68 |
list. This would have been slow and inefficient. |
|---|
| 69 |
|
|---|
| 70 |
The latest idea is to stop using the dangerous command for EEPROM |
|---|
| 71 |
addresses. That way, risks of corruption are reduced to zero. This was |
|---|
| 72 |
already done for user-space tools, as mentioned above. Once this will |
|---|
| 73 |
have been tested and we are sure that there are no drawbacks, we'll |
|---|
| 74 |
do the same on the kernel side in Linux 2.6. The change won't occur in |
|---|
| 75 |
Linux 2.4 however, because it implies changes to both i2c modules and |
|---|
| 76 |
lm_sensors modules. It is possible to use mismatching versions of |
|---|
| 77 |
these modules, and when doing so, the fix would become more dangerous |
|---|
| 78 |
than helpful. |
|---|
| 79 |
|
|---|
| 80 |
We do not have any reports of 24RF08 eeproms on non-IBM systems. |
|---|
| 81 |
If there are any such systems with 24RF08 eeproms, these changes will |
|---|
| 82 |
reduce the chances of corruption. However, there are |
|---|
| 83 |
theoretical scenarios (involving multiple bus masters, |
|---|
| 84 |
SMP systems, or simultaneous bus access) in which 24RF08's could |
|---|
| 85 |
still be corrupted. If you know of any non-IBM systems which contain |
|---|
| 86 |
these eeproms, please contact us. |
|---|
| 87 |
|
|---|
| 88 |
|
|---|
| 89 |
Thanks to IBM, the Linux Thinkpad Mailing List, and Joe in Australia |
|---|
| 90 |
for their assistance on this issue. |
|---|
| 91 |
|
|---|
| 92 |
For more information, see: |
|---|
| 93 |
|
|---|
| 94 |
The Linux Thinkpad Mailing List |
|---|
| 95 |
http://www.bm-soft.com/~bm/tp_mailing.html |
|---|
| 96 |
|
|---|
| 97 |
Joe in Australia's Thinkpad Password Recovery Site |
|---|
| 98 |
http://www.ja.axxs.net/unlock/ |
|---|
| 99 |
|
|---|
| 100 |
Atmel 24RF08 Datasheet |
|---|
| 101 |
http://www.atmel.com/dyn/products/product_card.asp?part_id=2370 |
|---|
| 102 |
|
|---|
| 103 |
Site in the US that sells replacement AT24RF08 chips for all models |
|---|
| 104 |
http://www.pwcrack.com/ |
|---|
| 105 |
|
|---|
| 106 |
|
|---|
| 107 |
(*) 'Write Quick 0' is not an actual write and should never generate |
|---|
| 108 |
a write operation to an eeprom location. |
|---|