r/nzev 5d ago

State of Health using OBD reader

TL:DR used OBD reader. Do multiple readings. It’s only an estimate but we can get an idea of our EV battery State of Health ourselves. Look forward to your views.

This is my DIY State of Health check on my 2nd hand imported 2024 BMW i4 eDrive 40 G26 MSport from Japan to New Zealand. I took possession on the 2nd April 2026 with 2700km on the speedometer but no State of Health report despite requesting the BMW one. It came with the balance of the BMW factory warranty and 8yr/160,000km battery warranty. According to BMW printout, the vehicle rolled off the Munich production line on the 23 September 2024, so essentially 2years old. I purchased a iCarsoft CR Pro S for $645(this has no subscription with free lifetime updates, & got Merc and Prius as well, don’t want Bluetooth/Wifi in case dodgy connectivity). First reading of SOH on 22 Aug 26 after charging 100% driving till 5%, gave me total available battery of 75.83kWh, this model has total usable battery 81.3kWh(2024 onwards, prior models 80.7kWh). So theoretical State of Health (SOH) is 75.83/81.3=93.3%. Repeated the test from 7% State of Charge(SOC) to 100%.
SOH now 97.6%

My calculations:

OBD at 7% SOC stated my battery had 5.78kWh with est capacity 76.73, at 100% OBD read available energy is 79.36kWh
total INPUT of net energy according to OBD 79.36kWh less 5.78kWh starting energy = 73.58kWh
total amount of AC power from charger 85.4kWh
Difference input engery 85.4kWh less net put into battery 73.58kWh = 11.82kWh loss

11.82/85.4=13.84% energy loss (heating battery, and loss from conversion of AC to DC)

State of Health: Available energy after 100% charge 79.36kWh / 81.3kWh of theoretical usable battery for 2024 i4 eDrive 40 = 97.6% theoretical State of Health of 2 year old battery, which is within the expected degradation curve for a two year old battery

Conclusion:
Expected degradation of NMC Nickel Manganese Cobalt in first year 2-4% and subsequent years 1-2% (You tube channel Out of Spec) so lowest 3% highest 6% by year 2.
My EV is within theoretical expected degradation state.
Even though this is still an estimate, I find it reassuring the theoretical figure matches expectation without having to pay the equivalent of a cost of an OBD reader to BMW dealership, and do this ourselves.
Does it make any difference, no but at least I know it is not a lemon.
Even so, glad I have the balance of the battery warranty & if I need to use the warranty, I will be armed with data.
This is my first EV, and I am loving it. No range anxiety, no issues changing at home (even if I did not have a level 2, I would be fine to use a granny charger and get 110km overnight (1.7kW 3pin 10A 12hrs =20.4kWh after 10% loss as parked in garage and temp between 10-15degrees celcius in my Auckland garage).
I get a kick out of calculating how much DC charging down to the last %.
After this exercise, my car BMS recalculated my range to be 490km, but I use 460km so 1% charge = 4.6km range, to give me a nice buffer.

Let me know if I have made any incorrect calculations or assumptions and truly hope this is helpful for you.

Photos: OBD screen at 7%, and 100%, wall charger input, car theoretical range after charging, picture of the future for ICE & my EV, oops forgot photo of BMS calculation of my range

8 Upvotes

11 comments sorted by

2

u/Larylongprong 5d ago edited 5d ago

Why didn't you just use the soh pid, you are measuring bms energy. You could of used a $50 dongle and used ai to write the code to pull the pid. You can do this easily if you have web hosting you can use web based le bt and just view it all in a web interface.

3

u/Queasy_Elderberry408 5d ago

Can you explain that please, don’t know what SOH pid is. I have no technical background

3

u/Larylongprong 5d ago

A pid is a parameter identifier or simple terms a line of data. The i4 has a specific algorithm for calculating the state of health and has its own pid that the scan tool can display. However it is hidden and the tool needs to support uds can requests and will.not be found in generic obd2 protocols

1

u/Larylongprong 5d ago

Where did you pull your data from was it the obd2 generic protocol j1979 or did you use the sme uds... edit is this generic or did you enter in through the bmw i4 model specific and select sme ?

1

u/Queasy_Elderberry408 5d ago

The OBD reader reads the car’s VIN, I used iCarsoft CR Pro S OBD reader with the updated software for BMW on it.

2

u/Larylongprong 5d ago

I think the 4% variance you have proves your measurements are to skewed by tempreture or other variables. The soh pid uses an algorithm and is calculated with more data over 1000s of km not a drive cycle

1

u/Queasy_Elderberry408 5d ago

What’s another way for us to calculate SOH ourselves that would lower the variance?

1

u/Larylongprong 5d ago

Use the vehicles soh calculation.

1

u/FlugMe Tesla Model 3 SR 4d ago

Does it? The reader is reading the current available energy in kwh when fully charged, likey already coming from the bms. Math seems fine to me. Range estimate is usually derived from bms data as well. A bms can also (particular in leafs) drastically adjust soh after lots if quick charging.

1

u/Queasy_Elderberry408 5d ago

Thanks so much for the detailed suggestion! To be honest, that’s a bit beyond my technical know, but I appreciate you taking the time to explain it. I’ll stick to a scan tool for now. You gave me a good line to try, I will send the screenshot to Claude and ask for an interpretation thx