The Ancel BA101 lead-acid Battery Tester is an easy to use and versatile lead-acid battery tester for car, UPS or other similar batteries. The tester has a mini-USB serial output port which can be used to log and report the measured test data. Unfortunately the software that it comes with is proprietary, closed source, runs only on Windows and it cannot be downloaded without making an account on the Ancel website.
This repo builds on ancel-tester written by SilverGreen93, which proposes a platform agnostic python3 script which connects to a serial port, receives the data from the Ancel BA101 Battery Tester and displays it in the terminal so that it can be logged and/or printed as needed. It has been included for reference. He did the hard part, so give him some credit.
This app will detect active COM ports on the computer, simplifying COM port selection.
It can be run directly on Windows and Linux (not tested).
Read the Ancel BA101 manual here: Ancel_BA101_User_manual.pdf
Official Ancel product page: https://www.ancel.com/products/ancel-ba101
- Python 3 installed
- Python 3 serial library:
pip install pyserial
- Python 3 customtkinter library:
pip install customtkinter
- Connect Ancel BA101 via USB cable to PC.
- Execute the Python script
ancel_data_print_app.py
and select the COM port from the combobox. - Click Connect
- The script will wait for data to be received.
- On the Ancel BA101 tester, go to Print Data and press Enter.
- The data will be displayed in the Window. Copy the output and paste it into a text file for printing. Close the program as you would any other, or click Connect to reconnect to the BA101.
Example:

- The status label doesn't properly indicate that the app is connected to the BA101 even when it is. Continue to select Print Data on the device, and the data will transfer. I think this is because the serial listener is tying things up so that the interface can't update. (This may have been fixed by starting the serial listener in it's own thread, I will test Monday, August 25th 2025)
The data format specification was not provided by Ancel, but was manually reverse engineered. Some values might be not right.
Offset | Raw data example | Decoded data example | Meaning |
---|---|---|---|
0 | E6 7C | - | Initial marker (?) |
2 | 1A | - | ?? |
3 | 00 | GOOD | Battery status 00: GOOD 01: GOOD, RECHARGE 02: BAD, REPLACE 03: REPLACE 04: CHARGE & RETEST |
4 | 05 14 | 1300 | Battery voltage x 0.01V |
6 | 00 C3 | 195 | Measured amps |
8 | 06 1D | 1565 | Internal resistance x 0.01mΩ |
10 | 00 64 | 100 | Health percentage |
12 | 00 64 | 100 | Charge percentage |
14 | 00 87 | 135 | Rated amps (A) |
16 | 0A | CA | Selected measuring standard 01: CCA 02: DIN 03: JIS 04: EN 05: IEC 06: GB 07: SAE 08: MCA 09: BCI 0A: CA |
17 | 01 2C | 300 | Cranking time (ms) |
19 | 01 | NORMAL | Cranking status 01: NORMAL 02: LOW |
20 | 03 E8 | 1000 | Cranking voltage x 0.01V |
22 | 05 AA | 1450 | Unloaded voltage x 0.01V |
24 | 05 6E | 1390 | Loaded voltage x 0.01V |
26 | 00 0C | 12 | Ripple (mV) |
28 | 01 | LOW | Charging status 00: NO OUTPUT 01: LOW 02: NORMAL 03: HIGH |
29 | FE 7F | - | Final marker (?) |