PackProbe is a tool for quickly gathering diagnostic information to use in assessing the health and age of most laptop battery packs.

It currently consists of an Arduino sketch that outputs the information on a serial port, and some documentation.

To use it, you will need an Arduino compatible board, a computer running the Arduino IDE, a few resistors, and some wires.

Jump in with Installation and Usage Documentation or read on…

Who is it for:

PackProbe was created for people who are interested in reusing lithium ion cells from laptop battery packs for other purposes like:

  • Flashlights
  • Electric Bikes and other Electric Vehicles
  • Robotics
  • Off-grid Solar and Wind

Right now, its targeted at people who are comfortable with basic electronics, and understand the safety considerations involving lithium ion batteries.. In the future, we may produce kits with all the needed components, and we are working towards a longer term goal of self-contained, ready to use product.

PackProbe hasn’t been tested with lithium ion packs for power tools from companies like Ryobi, Rigid, Dewalt, and Makita. It isn’t known whether tool packs support the SBS standard. We’d appreciate community input, or contribution of tool packs for experimentation/testing.

Why use PackProbe:

PackProbe provides, important information that maximizes yield and efficiency when recovering cells from laptop battery packs.

Lithium Ion Batteries offer the best energy density of any rechargeable battery technology. Unfortunately, new lithium ion cells are expensive and difficult to obtain. As a result, many hobbyists recover cells from used and surplus laptop battery packs.

The cash outlay for recovered cells can range from $0 for packs scrounged from ewaste recycling bins, to $2-3/cell for unused surplus packs purchased on ebay. The downside of this approach is that the quality and capacity of recovered cells are unknown.

Commercial analyzing chargers can be used to characterize recovered cells and determine which cells are worth keeping, and which should be discarded. These chargers are available for $30 and up. They can analyze 2-4 cells in parallel, but a full analysis cycle can take the better part of a day complete. This might be acceptable when dealing with a pack at a time, but many projects demand a larger volume of cells.

In order to deal with this bottleneck, many people do an initial screening of cells by measuring their voltage when removed from the pack. Cells below a certain voltage threshold (2.5-3v) are discarded. A common workflow is to charge the remaining cells and then check self-discharge after a day or so and discard any that have fallen too far from the charge termination voltage.

This approach improves throughput, but still results in investment a significant amount of time and charger-occupancy before determining that cells aren’t up to snuff. It is also likely to result in discarding a significant number of “good” cells due to low initial voltages.

We’ve looked at a a couple of dozen battery packs from various sources. Withing that limited sample set, we’ve identified a number of cases where cells that come in under the 2.5v threshold in quick screening prove desirable, with low internal resistance and self-discharge and high capacity. Meanwhile cells that come in over the threshold voltage may have 250+ cycles, and prove to have poor capacity and high self-discharge and internal resistance.

PackProbe quickly provides information that improves both yield and efficiency of cell harvesting.

How it works

In short, PackProbe lets you quickly and easily get access to information about the specification and health of a battery pack without requiring access to a compatible laptop.

Most laptops use “smart” battery packs based on the Smart Battery System standard in order to maintain safety and reliability. The Smart Battery System Standard allows systems to obtain a range of information about a connected battery pack that we think is useful for people who intend to repurpose the packs.

Ordinarily, getting access to this information requires connecting the pack to a compatible laptop and knowing how to request the desired information from the operating system. With the PackProbe, all you need is a Mac, Windows or Linux computer with the free Arduino development environment, an arduino compatible board, and a few basic electronic components.

With this information, you can quickly obtain detailed information on packs in a few minutes before investing the effort of disassembling them. The information obtained includes manufacture date, capacity, number of charge/discharge cycles and current pack voltage. In many cases, the voltages of the individual banks of parallel cells is also available.

Example output from v0.1.1

Manufacturer Name: SANYO
Device Name: UM09F36
Chemistry LION
Design Capacity: 5600
Design Voltage: 11100
Manufacture Date (Y-M-D): 2010-8-12
Serial Number: 16353
Specification Info: 33
Cycle Count: 1
Voltage: 12.27
Full Charge Capacity: 5600
Remaining Capacity: 2379
Relative Charge(%): 42
Absolute Charge(%): 42
Minutes remaining for full charge: -1
Cell 1 Voltage: 4094
Cell 2 Voltage: 4090
Cell 3 Voltage: 4087
Cell 4 Voltage: 0
State of Health: 5911
Battery Mode (BIN): 0b0
Battery Status (BIN): 0b11000000
Charging Current: 1680
Charging Voltage: 12900
Temp: 19.15
Current (mA): 0

What Next

  • Read the Documentation
    • Download the PackProbe sketch and required libraries
    • Configure the sketch for your board
    • Load the sketch
    • Make a circuit with pull-up resistors on the clock and data pins
    • Connect a battery pack

How to Contribute

  • Participate in the forums (coming soon)
  • Report bugs
  • Add support for other packs
  • Contribute documentation

15 thoughts on “PackProbe”

  1. Thanks for this extremely useful information. I just discovered this forum and project and am pursuing it actively.

    1. Glad you found it useful! I’ve been working on individual cell testing lately, and haven’t done much work on PackProbe for a while, but I’m happy to take suggestions and bug reports (or fixes) for a new version. What is your personal interest in Li-ion packs and batteries?

      If you have any questions/ideas/etc, please join the forum and we can discuss things there.

      Oh, and please share the results of your own pack-probing. If enough people do, I’ll create a community database and add some code to PackProbe to make submitting a report as easy as copying URL and pasting it into a browser.

  2. Hi. My name is Kris. In packprobe.ino we can read : “Indidual cell voltages don’t work on Lenovo and Dell Packs” in most batteries, individual cell voltages can be read from address 0x38,39,3a,3b,3c,3d,3e,3f, and can’t read from dell or lenovo batteries. I found some method to read cell voltages from lenovo battery based on bq8030 manufactured by sanyo. Cell voltages can be also stored in blocks. Try read block 51, there are stored cell voltages in hex. Tested on battery for lenovo x200, FRU P/N: 42T4694, manufacturer : sanyo.
    Second battery : FRU P/N: 42T4865, manufacurer: lgc, controller: r2j24050f020a, invidual cell voltages can be read from block 23 in hex.

  3. Hey,
    thanks for sharing this project!
    I have an question regarding Battery Status (BIN) and Battery Mode (BIN). The Smart Battery Data Specification says, that the value BatterieStatus(0x16) for example have two bytes of information. So you use fetchWord. You read 2 bytes. Thats ok. but than you OR these and shift these to 1 Byte. Your example: Battery Status (BIN): 0b11000000
    Here are only 8 bits. But the Batterie controller provides 16bits of information. Why do you cut these Infos?

    Best Regards

  4. hey,
    i downloaded and installed the SoftI2CMaster library, but i getting a lot of error messeges like:”i2c_init was not declared in htis scope” and the same with “scan”.
    I´m working with a arduino nano and followed the instructions which where given.
    What can i do to get the code work?

  5. Is it possible use this to revive “dead” tablet/notebook BMS?

    I mean I have two Asus TF-201 batteries and other ACER/Toshiba/Lenovo laptop batteries which BMS does not start because it stopped working due to low voltage.

    Now I have enough 18650 cells to revive my battery packs but there is no communication over SMBus probably and the device does not start or if starts reports dead battery.

  6. Works tested on arduino nano with mu06 hp battery

    Manufacturer Name: 13-54
    Device Name: MU06047
    Chemistry LION
    Design Capacity: 4400
    Design Voltage: 10800
    Manufacture Date (Y-M-D): 2012-3-10
    Serial Number: 10270
    Specification Info: 49
    Cycle Count: 264
    Voltage: 11.79
    Full Charge Capacity: 244
    Remaining Capacity: 0
    Relative Charge(%): 0
    Absolute Charge(%): 0
    Minutes remaining for full charge: -1
    Cell 1 Voltage: 4094
    Cell 2 Voltage: 4007
    Cell 3 Voltage: 3692
    Cell 4 Voltage: 0
    State of Health: 0
    Battery Mode (BIN): 0b110000000000001
    Battery Status (BIN): 0b101011010000
    Charging Current: 3080
    Charging Voltage: 12600
    Temp: 26.85
    Current (mA): 0

  7. Please, have in any place a schema to load an run this code with a arduino uno? i need pinout to put and run…, how i can do to work on uno??

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.