Anyone else struggling to get accurate SoC readings from a cheap BMS with LiFePO4 cells?

by PU_Sparks · 1 month ago 355 views 10 replies
PU_Sparks
PU_Sparks
Member
8 posts
Joined Mar 2025
1 month ago
#7484

I've just finished building a 12V 200Ah LiFePO4 battery from 4 x 272Ah EVE cells I picked up off AliExpress, paired with a JK BMS (the 200A active balancer version). The pack itself seems solid — cells were well matched and the build went smoothly enough. Problem is, the SoC percentage on the BMS app is all over the place. It'll show 80% and then drop to 60% within minutes of putting a modest load on, say a 300W inverter running a kettle.

I've done the full charge/discharge calibration cycle twice now, and I'm fairly certain the BMS is just doing coulomb counting without any decent voltage curve correction for LiFePO4. The flat discharge curve on these cells is brilliant for usable capacity but it absolutely confuses simpler BMS units that are expecting more of a linear voltage drop. I've read a few threads suggesting the JK can be a bit hit-and-miss on SoC accuracy unless you nail the capacity setting and the Peukert exponent, but I can't find a solid UK source explaining exactly what values to plug in.

Has anyone here actually got reliable SoC readings from a JK BMS, or have you given up and added a dedicated battery monitor like a Victron BMV-712 or a Shunt from Electrodacus? Really curious whether a proper shunt-based monitor alongside the BMS is just the way to go, or if I'm missing something obvious in the JK settings.

BitsAndBobs9
BitsAndBobs9
Member
9 posts
Joined Sep 2024
1 month ago
#13046

BitsAndBobs9 | 847 posts

@PU_Sparks Yeah, LiFePO4 SoC is notoriously tricky because of that incredibly flat voltage curve through the middle 80% of charge. Your JK BMS will be doing coulomb counting primarily, so the accuracy really depends on it having a solid reference point to anchor from — usually a full top balance.

One thing that genuinely helped me was doing a proper full top balance at 3.65V per cell and letting it sit until current dropped right off. Once the BMS "sees" a genuine 100% from a known state, its coulomb counting becomes far more reliable.

Also worth checking your actual capacity figure is set correctly in the JK app — if it's pulling calculations based on 272Ah but your cells are slightly under, the drift compounds quickly. What firmware version are you running?

FZ_Builds
FZ_Builds
Active Member
11 posts
thumb_up 1 likes
Joined Apr 2024
1 month ago
#13403

FZ_Builds | 312 posts

@PU_Sparks The JK BMS SoC readout is honestly decorative at best — treat it as a rough guide rather than gospel. On my narrowboat setup I gave up on relying on the BMS entirely and paired my Fogstar cells with a Victron BMV-712 shunt monitor. Coulomb counting is genuinely the only reliable method for LiFePO4 given how flat that voltage curve sits between roughly 20–80%. The trick is nailing your charged/discharged reference points so the shunt can calibrate itself properly after a full top-balance. Once I did that, my readings stayed accurate for weeks without drift. The JK can still handle protection duties — that's what it's good at — but offload the actual SoC monitoring to dedicated hardware.

Rocky Tinker
Rocky Tinker
Member
7 posts
Joined Feb 2025
4 weeks ago
#13563

RockyTinker | 203 posts

@PU_Sparks The only reliable fix I've found is pairing with a proper coulomb counter — a Victron BMV-712 transformed my setup. It tracks actual amps in/out rather than guessing from voltage, so SoC stays accurate even across that flat LiFePO4 plateau.

Key thing though: you have to do a full charge-to-float cycle after install so it can calibrate 100%. After that it's rock solid.

The JK BMS SoC will drift badly if you're regularly doing partial cycles, which in a tiny house or backup scenario is basically always. The BMV pays for itself in peace of mind alone — you stop second-guessing whether you've actually got 60% or 35% left when the grid goes down.

MultiPlusGeek
MultiPlusGeek
Active Member
12 posts
Joined Dec 2024
4 weeks ago
#13479

MultiPlusGeek | 203 posts

@PU_Sparks The real fix for this is ditching the BMS SoC entirely and using a proper coulomb counter. I've got a Victron SmartShunt on my motorhome build and the difference in accuracy is night and day — it tracks actual amp-hours in/out rather than guessing from voltage.

The catch is you need to let it fully charge to 100% occasionally so it can re-sync. LiFePO4 never quite hits a clean "full" knee unless you're absorption charging properly, so the drift creeps in over time.

What's your charging setup? If you're running a MPPT without a proper absorption stage set correctly, the SmartShunt will still drift eventually regardless of how good it is.

Marine Callum
Marine Callum
Member
5 posts
Joined Aug 2024
4 weeks ago
#13690

MarineCallum | 847 posts

@PU_Sparks Worth adding some context to what others have said about coulomb counters — LiFePO4's notoriously flat voltage curve is the root cause here. The BMS is trying to estimate SoC from voltage, but between roughly 20–80% charge the cells barely move at all, so any voltage-based reading is essentially guesswork.

One thing nobody's mentioned yet: make sure you're actually completing full charge cycles occasionally (to the absorption knee) and full discharges, as this gives the BMS proper reference points to recalibrate against. Also double-check your capacity settings in the JK app — if that figure's even slightly off, your percentage readings will drift noticeably over time.

The JK is a decent BMS overall, just don't lean on its SoC for anything critical.

Tony Ross
Tony Ross
Member
8 posts
thumb_up 5 likes
Joined Dec 2024
3 weeks ago
#13854

TonyRoss | 412 posts

@PU_Sparks One thing nobody's mentioned yet — the JK BMS SoC is heavily dependent on having your cell capacity set correctly in the app. A lot of people leave it at the default and wonder why the readings drift. Your EVE 272Ah cells also likely need a full cycle or two before the BMS learns them properly; the JK does have a basic learning function built in.

Also worth checking your Peukert settings if you're running significant loads — cheap BMS firmware often assumes a fairly light discharge rate, which throws the coulomb counting out badly under heavier draws.

That said, I'd still echo the general sentiment here — for anything critical, treat the JK's SoC as a rough guide only and invest in a dedicated shunt monitor. The Victron SmartShunt is the obvious choice but the Daly equivalent is half the price if budget's tight.

Ken Crane
Ken Crane
Member
5 posts
Joined Jan 2025
3 weeks ago
#13875

KenCrane | 156 posts

@PU_Sparks Something worth trying before you go down the coulomb counter route — do a proper full capacity test on your cells first. EVE cells from AliExpress can vary quite a bit from their rated capacity, and if your BMS thinks it's working with 200Ah but you've actually got 185Ah (or whatever), the SoC calculations will be skewed from the start. Charge fully, rest the pack for a few hours, then do a controlled discharge whilst logging actual amp-hours out. Get that real figure dialled in and you'll immediately see improvement.

Liam
Liam
Member
7 posts
thumb_up 6 likes
Joined Nov 2024
3 weeks ago
#14131

Liam1990 | 203 posts

@PU_Sparks One thing I'd add from my motorhome setup — the JK BMS SoC will drift considerably if your shunt placement isn't correct. Any loads or charging sources not wired through the shunt mean the BMS is essentially flying blind. I had this exact problem before adding a Victron SmartShunt downstream of everything. The JK and the SmartShunt still disagreed initially, but after a full calibration cycle the SmartShunt became my trusted reference and I essentially ignored the JK's SoC readout entirely. Two separate monitoring tools telling different stories is actually useful for diagnosing wiring issues.

Ducato Camper
Ducato Camper
Member
7 posts
thumb_up 1 likes
Joined Jun 2025
3 weeks ago
#14201

DucatoCamper | 847 posts

@PU_Sparks Worth mentioning that LiFePO4's notoriously flat voltage curve is the root cause of most SoC headaches — voltage-based estimation is essentially useless across the middle 80% of the range. Even decent coulomb counters drift over time without a reliable reset point. What's worked brilliantly for me is pairing the JK with a Victron BMV-712 — let the JK handle protection duties and use the Victron purely for monitoring. Set a tight tail current threshold for your 100% sync point and you'll get genuinely accurate readings. Bit of extra cost, but night and day difference in reliability.

Kangoo Nomad
Kangoo Nomad
Active Member
10 posts
thumb_up 3 likes
Joined May 2024
3 weeks ago
#14422

KangooNomad | 412 posts

@PU_Sparks The piece nobody's mentioned yet — your JK BMS SoC resets to 100% every time it hits the top-of-charge voltage threshold, regardless of actual capacity. If your charge parameters aren't dialled in precisely (I run 14.2V absorption on my Fogstar Drift cells), you'll get phantom full-charge events constantly skewing the reading.

Pair the JK with a Victron SmartShunt as your actual SoC reference. The JK handles protection duties; the SmartShunt handles coulomb counting. That separation of responsibilities sorted my tiny house system completely. Set your charged voltage, tail current, and Peukert correctly in VictronConnect and you'll get reliable figures within a couple of percent.

Log in to join the discussion.

Log In to Reply