| 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. |
|---|