Had this exact headache last year. Short answer: neither, fully.
Both are estimating, just differently. The BMV-712 does coulomb counting from a shunt — dead accurate in the moment but drifts over time if you don't let it sync to 100% properly. Most BMS units use voltage-based SOC curves which are notoriously optimistic, especially with LiFePO4's flat discharge curve.
What I do with my cabin setup:
- BMV-712 for day-to-day monitoring — it's the more trustworthy of the two once calibrated correctly
- BMS for protection (that's its actual job anyway)
- Let the BMV sync to 100% properly — mine needs a proper absorb cycle to reset, otherwise it wanders off
The key question is: have you set your battery capacity correctly in the BMV? I was running Fogstar Drift cells and had the capacity slightly wrong. Took me weeks to realise why the numbers never matched.
Also check your charged voltage threshold and tail current settings in the BMV — these determine when it calls the battery full and resets the counter. Most people leave them at defaults which are often wrong for their specific cells.
What BMS are you running? Some of the cheaper units have genuinely terrible SOC algorithms. If it's a JK or Daly the behaviour can vary quite a bit between firmware versions too.
Anyone else had persistent drift issues they've actually solved? Curious what worked.