Pylontech pack · diagnosis in progress

The Hundred and Five Cells

Eight modules, fifteen cells each. Ten of those cells throttle the charging of the other ninety-five. Here is which ones, how we know, and what can be done about it.

Last updated : 5 September 2026, 17:00
10
affected cells out of 105
3
modules involved out of 8
5 s
from threshold crossing to current cut
30 A
limit imposed on the whole pack, against 150 A nominal

1The verdict

The pack is not worn out. Four modules out of eight are flawless: sixty cells without a single anomaly, after more than three hundred cycles. A fifth is just as clean.

Three modules carry the entire problem, and within those three, ten cells. When one of them reaches 3550 mV the BMS reduces the charge current — not for its own module, but for the whole pack. Five healthy modules are throttled by ten cells.

200 mV400 mV600 mV0323older pack · address 2 — THE CONTROL1191218831884189519061977187819091891019211191121881318714192151980322older pack · address 11182217831784178517765487371818191791017911182126911317814273151780319older pack · address 31183252131844186518263187183818691841047311184124431318414188154240324isolated (BAT3) · address 4113821243138413751396132713481429143101351113612137131281413515683
healthydriftingbadly affectedterminal
Voltage span swept by each cell between its minimum and maximum over the observation period. The first module is the control: it lives on the same chain as the two damaged ones, has seen the same currents and the same days, and its fifteen cells sit within eleven millivolts of span of each other. A cell that has lost capacity fills and empties before its neighbours, so it sweeps a far wider range at identical current — the sign requires no disassembly. The isolated module shows smaller spans because it spent the period out of service, over a narrower state-of-charge window: what matters is the gap to its own neighbours, not the absolute value.

2The pack, module by module

A module's identity is its barcode, never its address: each chain renumbers its modules from 1, so there are two “module 1” in this installation.

BarcodePackAddr.Affected cellsWhich onesMedian spreadOvervoltageUndervoltage
K220803C30160322older146 · 7 · 12 · 1410849886in service
K220803C30160323older20—600in service
K220803C30160319older352 · 6 · 10 · 12 · 1545416179in service
K220803C30160324older4115572959isolated
Y230202C30371426newer10—211in service
Y230202C30371425newer20—211in service
Y230202C30371431newer30—211in service
Y230202C30371427newer40—210in service

Read the median spread column. The five healthy modules sit between 2 and 6 millivolts; the other three are at 45, 57 and 108. The same contrast shows in the overvoltage counters: 498 for the first module against one for each of the four in the newer pack, which have nonetheless taken ten times more cycles.

All sixty cells of the newer pack sweep between 168 and 191 mV, without exception. The inventory is closed.

3The trip, timed

On 5 September the console was connected to the three modules of the older pack while the alarm was rising. What follows is the record, to the second.

TimeWhat happens
13:04:48cell 7 of module …0322 at 3526 mV, cell 6 of module …0319 at 3541below threshold
13:05:08the same two at 3555 and 3575 mVlevel 3 crossed
13:05:13the BMS drops the allowed charge current from 50 to 30 Afive seconds later
13:15:10cells fall back to 3499 and 3522 mV, alarm clearsthe limit stays at 30 A
13:22:40limit 30 → 40 Aafter 7 min 31 s
13:26:39limit 40 → 35 A, leading cells at 3563 and 3548 mVit trips again
13:38:10limit 35 → 40 Aafter 11 min 31 s

The most useful finding is in the fourth row: the alarm clears well before the limit recovers. Looking for the alarm in the logs therefore misses the bulk of the phenomenon — the alarm lasts minutes, the throttling lasts hours.

The thresholds are not values we chose: they are the ones the hardware declares, read from sysinfo on the LV-HUB.

4Internal resistance, or charge imbalance?

The answer decides what balancing can give back. Two measurement points on the same cell at two different currents settle it.

current per cellspread
13:04:486.33 A163 mV
14:05:420.04 A46 mV

The slope gives ≈ 18.6 mΩ of excess internal resistance on the leading cell, twenty to forty times that of a healthy one. The intercept, ≈ 46 mV, is the true charge imbalance.

Independent check: this line predicts 312 mV at 100 A pack current. The largest spread actually recorded over thirty-seven days is 280 mV.

So of the ~190 mV of spread under charge, only 46 mV are an imbalance — the rest is lost capacity. A perfect rebalance would bring the trip from 3555 down to about 3510 mV: below the threshold, but with only forty millivolts of margin.

5Where the damage comes from

Not from wear. The newer pack has taken three hundred and forty cycles in a year and its sixty cells are intact: cycling does not damage these modules. And the control module shared the chain, the currents and the days of the two damaged ones without a scratch.

The two terminal cells went down to 2953 and 2939 mV, below the low-voltage alarm threshold. A lithium iron phosphate cell taken there under load loses capacity irreversibly. These cells did not age, they were discharged too deep.

6Three questions for Pylontech

  1. Are these cells recoverable by a prolonged hold at high state of charge, or does the 18.6 mΩ resistive component make the attempt pointless?
  2. Is there a recommended procedure for a module in this condition, and a limit beyond which module replacement is the only option?
  3. What exactly does the per-cell SOHCount returned by the soh command count, and from what value does Pylontech consider a cell to require attention?