Diagnostics
Battery diagnostics
SOH, SOC, cell-group potentials, topologies and thermal data.
The charge percentage on the dashboard tells you how full the battery is today. Battery Health helps you understand its condition over time. Hanterill reads values reported by the car, then puts related readings next to each other so you can see what they mean.

Read-only operation
Battery diagnostics are read-only. Hanterill reads the car's values without changing battery settings.
NMC and LFP: which battery does your car have?#
NMC (nickel, manganese and cobalt) and LFP (lithium iron phosphate) are two types of lithium-ion battery. “Lithium-ion” is the broad family; NMC and LFP tell you more about the materials inside. Neither label is a health rating.
Some models are sold with different battery packs. For example, the Volvo EX30 Standard Range uses LFP, while its Extended Range versions use NMC. Do not decide which battery you have from the model name alone. Check the car's battery information or vehicle specification. Hanterill selects a battery layout from the readings it receives, but a detected layout is not a direct chemical test, especially on a vehicle marked provisional.
NMC packs commonly offer more range for a given pack size. LFP avoids nickel and cobalt in its active battery material, and its voltage changes less through much of a charge, so voltage alone tells you less about how full an LFP battery is. When the displayed charge estimate jumps, that is not automatically a sudden loss of battery health. The car's battery controller makes the charge estimate; Hanterill displays what the car reports.
When comparing battery reports, compare the same car and battery variant over time. A capacity or cell-voltage value from an LFP pack is not a useful “good” or “bad” target for an NMC pack. The car's own limits and reference values matter more than the chemistry name.
Health, charge level and capacity#
The battery controller, called the BECM, reports several numbers that sound similar but answer different questions.
| Reading | What it means | How Hanterill gets it |
|---|---|---|
| State of Health (SoH) | The car's estimate of how much capacity the battery retains compared with when it was new. | Reads the percentage reported by the BECM. |
| State of Charge (SoC) | How full the battery is right now. It changes as you drive or charge. | Reads the available charge values reported by the car. |
| Learned capacity | How much charge the BECM has learned that individual cell groups can hold. The app shows an average in amp-hours (Ah) when available. | Reads the BECM's cell-group values and calculates their average. |
A car can report 90% SoH and 20% SoC at the same time. In that example, the controller estimates that the battery can hold about 90% of the charge it held when new, while it is currently charged to 20%. The percentages describe different things.
The BECM calculates its estimates for the battery fitted to that car. Hanterill does not turn a pack's NMC or LFP label into a health score. A lower SoH should be judged against earlier readings from the same car, the car's messages and how it performs, rather than against a different battery type.
How to interpret SoH#
Hanterill displays the SoH reported by the BECM. It does not work it out from the range shown on the dashboard. SoH is the controller's estimate, not a laboratory test or a promise that the car will drive a particular distance. Speed, weather, heating, driving style and battery temperature all affect range.
A single SoH reading is useful context. Saved readings from the same car are more useful for seeing whether its estimate changes over time. A small difference between two visits is less informative than a repeated pattern. If the controller does not return a usable SoH value, the app shows that the value is unavailable.
What usable capacity means#
Usable capacity is the energy the car makes available for normal driving, usually expressed in kilowatt-hours (kWh). It is different from the battery's total physical capacity because the car keeps some charge in reserve. It is also different from the energy left in the battery right now, which depends on SoC.
The app's learned capacity reading is related to usable capacity, but it is not the same number. The BECM supplies learned capacity in amp-hours (Ah). Hanterill compares the average with the original charge capacity expected for the detected battery variant and shows the difference as capacity fade. This percentage is calculated by the app from a BECM reading and the battery variant's reference value.
Amp-hours measure charge; kilowatt-hours measure energy. The kWh capacity bar on this website uses sample figures to explain the idea. It is not a live kWh measurement from your car. In the app, use the reported SoH and learned capacity as the available evidence. Pay attention to any provisional label: it means the interpretation still needs more verification for that vehicle.
Why charge percentages can differ#
The driver display and the battery controller may use different scales for charge level. The car can also keep a reserve at the top and bottom of the battery's operating range. Hanterill places the available charge readings side by side. A small difference is not, on its own, proof of a fault.
Cell groups and the Cell Map#
A battery contains many cell groups. The Cell Map shows the voltage of each group that answered during the scan. It helps you find a group that stands out even when the overall battery reading looks ordinary. The map uses the layout detected for the vehicle; the number of groups varies by battery.

Hanterill shows the lowest, highest and average cell-group voltage. Voltage spread is the gap between the highest and lowest reading, measured in millivolts (mV), or thousandths of a volt. It describes the pack at the moment of the scan. Charge level, temperature and recent driving or charging can affect it. Compare scans made under similar conditions; a group that repeatedly stands out is more meaningful than one unusual result.
Some cell groups may not answer. The app leaves their positions blank and marks the scan as incomplete. You can use Re-read missing modules to try again. A missing reading is never treated as zero. Where the BECM supplies separate cell-group health or learned-capacity readings, the app can summarize those as well; they are different from the voltage spread shown on the Cell Map.
Temperature, power and other readings#
Battery Health shows the temperatures and coolant readings the car provides. A difference between warm and cool sensors can be useful context, but it does not by itself identify a faulty part. The page also shows available charge and discharge power limits. These are the limits the car reports at the time of the scan, not a guarantee of the power you will always get.
The battery module's temperature map shows both sensors in each module block, the warmest and coolest blocks, and the spread between them. The 12 V battery's temperature history is a separate reading on the Power screen, with numbered bands and sample counts. Those bands describe the low-voltage battery. Hanterill also shows the 12 V supply reading where the car reports it.
Charge history and per-cell values#
The battery module keeps its own lifetime counters, and the Battery and Charging screens read them directly:
- Charge counts: how many normal (AC) and fast (DC) charges the battery has recorded. A count is shown only when the module's start, stop and charge-gained tables agree; otherwise the figure stays empty and the note says which table disagreed.
- Time per charge band: The chart shows how long the battery has spent in each of ten bands. Their exact percentage edges are not established, so the bands stay numbered; the distribution still shows whether the battery has spent more time near one end of its charge range.
- Per-cell heat maps: SoH, learned capacity (Ah) and SoC for every cell individually, with the lowest and highest cell called out alongside the average. A single weak cell shows up here before it moves the pack average.
Checks and missing data#
Hanterill compares readings that should agree, such as the battery's reported voltage and the sum of the cell-group voltages; it can also check reported power against voltage and current, and whether current looks plausible while the car is parked. A disagreement may come from an incomplete scan, a changing operating state or a reading that needs closer inspection. Investigate it; do not treat one number as a diagnosis.
The page distinguishes a value that was measured, one calculated from readings, one marked provisional and one that was not reported. Missing or uncertain data should not be interpreted as a healthy or unhealthy result.
Everyday battery care#
- Use the charge target recommended in your car for ordinary driving. The right target can vary by model and battery, even when two cars both use NMC or both use LFP. Charge to 100% when you need the full range and the car allows it; avoid leaving the car at a very high or very low charge for a long time.
- For an NMC car, a daily target below 100% may be recommended. Use the car's displayed daily target instead of applying a number copied from another model.
- For an LFP car, follow any full-charge instruction shown by its manufacturer or in the car. Some LFP vehicles ask for an occasional full charge to help the charge estimate stay accurate; that is a vehicle instruction, not a rule for every LFP pack. A full charge does not restore lost SoH.
- If the car will sit unused for weeks, use its long-term parking guidance and check its charge level periodically. Do not store either type close to empty. Protect the car from prolonged extreme heat where practical.
- In cold weather, allow for slower charging and reduced available power until the battery warms. If the car offers battery preconditioning before a fast-charge stop, use it. The battery controller sets the safe limits; Hanterill's readings help explain them but do not override them.
Compare readings over time#
Save a session with a battery report to add a point to Battery Health Trend. The trend shows SoH, SoC and, when available, the spread of cell-group SoH values. That last figure compares the health percentages reported for cell groups; it is not the voltage spread from the Cell Map. The trend groups visits by vehicle and leaves uncaptured values blank. You can export its table as a CSV file.
For a closer look at cell voltages, Compare cell captures compares two cell-map captures that you supply. It compares the same cell positions in the two captures. The saved-session trend does not automatically compare complete cell maps.