Sniffing Around Inside a ThinkPad Battery
For most people, a battery pack that’s misbehaving simply means it’s time to get a new battery. But when the battery in their ThinkPad wasn’t able to muster up more than 20 minutes of runtime, [Shrinath Nimare] saw an opportunity to dig deeper and do a bit of investigating.
The problem seemed to be that the battery pack was reporting that it was 100% charged at just 11.7 V instead of the correct 12.3 V. As it turns out, that 11.7 V figure is only slightly above what the battery should be when its run flat — so in reality, the battery was never actually getting a charge and would report that it was dead after just a few minutes of use. But why?
With a logic analyzer attached to the pins of the battery, [Shrinath] set out to sniff its communications with the ThinkPad. Even if it wouldn’t lead to fixing the battery pack, the information obtained would potentially be useful for other projects, such as creating a custom high-capacity LiFePO4 pack down the line.
With the pack opened, [Shrinath] determined that a 51F51 BMS IC was running the show. The battery communicates with the host computer over SMBus, which is very similar to I2C. In fact, they’re so similar that [Shrinath] was able to use the I2C decoder in sigrok to break out the read and write commands and compare them to a PDF of the Smart Battery Data Specification.
With a few captures in hand, [Shrinath] made some good progress in decoding what the two devices are saying to each other. For example, when the computer sent the command 0x15
, the battery correctly responded with the desired charge voltage of 12.3 V. The command 0x18
was then given, which the specification says should cause the battery to report its capacity. Here again, valid data was returned, confirming that [Shrinath] was on the right path.
Even though it’s still early in the investigation, [Shrinath] had enough trouble finding practical examples of sniffing SMBus data that they thought it would be worth uploading their captures and notes to Hackaday.io. Hopefully further poking will show if the battery can be revived, but even if not, we’re always glad to see when hackers are willing to document their exploits for the benefit of the community.
This actually isn’t the first time we’ve heard of somebody snooping on their ThinkPad battery — back in 2020, we covered [Alexander Parent]’s efforts to create an open source battery pack for the T420 based on the ATtiny85.