Tag Archives: sbs

Dell and Thinkpad Lithium Ion Pack Irritation

I got a bunch of Thinkpad Lithium Ion battery packs yesterday and dumped pack data out of all of them. The new packs had the same issue I saw with a pack for a different module, they don’t report individual cell voltages in response to commands that work with many other packs.

I did some research and found that the linux tm-smapi module provides access to individual cell voltages but from a little reading, it looks like this information may come by way of an embedded system controller. I figured there was still a good chance that this information was originally gathered from the battery via SMBus, so I wrote a simple arduino sketch to scan through a wide range of SMBus commands and look at the data returned. Unfortunately, I don’t see any values that look like cell voltages.

With any luck, the data is still there, and just packed in a way that isn’t obvious. I think I’m going to need to collect data from multiple packs to see which values differ, particularly if I charge or discharge the packs. The worst possible option is that reading the data requires putting the pack in an undocumented mode and using undocumented commands.

The Dell packs I have don’t yield individual cell voltages either, so while I was at it, I also looked to see if any of the Dell packs might report the data in response to non-standard commands. Again, nothing obvious. I couldn’t find any confimation on line that Dell makes this info available via any utilities, so I may be chasing something that isn’t there.

The humble Smart Battery reveals its secrets

It took me a little longer than I’d hoped, but I’m able to get most of the information I want out of most of the laptop batteries I’ve tested.

ASUS AL32-1005

Manufacturer Name: AS085NJ35E
Device Name: 1005-28
Chemistry LGC0
Design Capacity (mAh): 5400
Design Voltage: 11250
Manufacture Date (Y-M-D): 2009-6-21
Serial Number: 937
Specification Info: 49
Cycle Count: 254
Voltage: 10.28
Full Charge Capacity (mAh): 1680
Remaining Capacity (mAh): 0
Relative Charge PCT: 0
Absolute Charge: 0
Minutes remaining for full charge: -1
Cell 1 Voltage: 2642
Cell 2 Voltage: 3820
Cell 3 Voltage: 3817
Cell 4 Voltage: 0
State of Health: 0
Charging Current: 0
Charging Voltage: 0
Temp: 20.25
Current (mA): 0

You’ll see that this pack is 5 years old, and has had 254 cycles, which probably puts it near the end of its useful life. Looking at the individual cell voltages (actually banks of parallel cells), you’ll see that that one of them is quite a bit lower than the others, suggesting those cells are closer to failing.
I’m still having trouble with the Dell packs I’ve tested. I can get most of the information I want from them, but they don’t report the capacity of the individual cells properly. The individual cell data isn’t part of the official smart battery standard, but it seems pretty standardized. It may be the Dell packs don’t report that information at all, or it may be that they use a different set of commands to reveal it.

Dell 9T48V

Dell 9T48V
Manufacturer Name: SMP-SDI2.8
Device Name: DELL YXVK234J
Chemistry LION
Design Capacity (mAh): 8400
Design Voltage: 11100
Manufacture Date (Y-M-D): 2013-4-19
Serial Number: 181
Specification Info: 49
Cycle Count: 44
Voltage: 10.03
Full Charge Capacity (mAh): 8428
Remaining Capacity (mAh): 0
Relative Charge PCT: 0
Absolute Charge: 0
Minutes remaining for full charge: -1
Cell 1 Voltage: -1
Cell 2 Voltage: -1
Cell 3 Voltage: -1
Cell 4 Voltage: -1
State of Health: -1
Charging Current: 4214
Charging Voltage: 12900
Temp: 23.25
Current (mA): 0

HP Packs have been a mixed bag. I’ve been able to get a full compliment of data out of some of them, and none at all out of others. I’ll work on fixing it after the initial release.

The code runs on an arduino Yun now, and should be easily adapted to any arduino compatible. I’m going to write a little documentation and release it while I continue to work on it.  If you are interested in getting early access, leave a comment here.

Smart Battery Hacking Progress!

I finally made some progress on reading out data using the “smart battery” interface on laptop battery packs. I’ve succeeded in pulling a number of useful numerical values from three different MacBook Pro batteries from two different manufacturers and one Acer battery pack. I have, so far, failed to get anything out of a different model of Acer pack, an ASUS pack, and an HP pack, but I have some ideas about what to try next. I also have to do more work to make sense of a few of the values I’m getting, and figure out how to read out string data, and figure out if I can get at voltages for individual parallel banks of cells.

In the meantime, here is what I got out of an old Mac battery:

NuPower
Design Capacity (mAh): 5800
Design Voltage: 10800
Manufacture Date: 15400
Cycle Count: 531
Voltage: 12.23
Full Charge Capacity (mAh): 3073
Remaining Capacity (mAh): 2812
Relative Charge PCT: 92
Absolute Charge: 48
Temp: 31.85
Current (mA): 0
Minutes remaining for full charge: -1

Notes: Smart Battery Hacking 2014-08-27

I’m trying to read out information from three different laptop batteries by taking advantage of the smart battery system interface.

The batteries are:

So far, I haven’t had any success in reading out data from any of the batteries, but I have figured out the pinout of the connectors:

MacBook Pro Battery ConnectorIMG_6028

From left to right, inside the wide guide slots on either side:

  • P-
  • Temperature
  • Data (SMBus)
  • Clock (SMBus)
  • Unused
  • P+

 Acer Battery Connector

IMG_6026

From left to right, inside the wide guide slots on either side:

  • P-
  • P-
  • Data (SMBus)
  • Clock (SMBus)
  • Temperature
  • Battery Activate / Enable
  • P+
  • P+

The MacBook Pro battery packs make power available all the time, while the acer batteries require a short or low resistance connection between the P- (system ground) and the Battery Activate pin in order to “wake” the battery so it will present voltage, or receive charging current. Furthermore, the Acer packs only wake up briefly if the overall pack voltage is below ~9v or so.

I’m currently using an arduino and using this post as a starting point on how to (try) to talk to a smart battery.