Estimated distance to oil change is directly driven by oil dilution ratio. Confirmed in all Boxer Diesel ROMs so far, Euro 4/5/6 spec. (Exception: does not apply to open-style DPF – earliest Euro 4 models).
The term “distance to oil change” is actually misleading. Normally, some time after oil change + reset, oil dilution ration often settles somewhere between 4 and 6% (Euro 4), the lower the better. Do not confuse this with distance till next maintenance! Do consult car manual instead or ask dealership.
The firmware uses a 2D LUT (two dimensional lookup table) and standard interpolation:
However this x-y table data makes up this perfectly linear relationship:
DistanceToOilChange[km] = 15000 - 1500 * OilDilutionRatio[%]
Distance to oil change cannot get negative because interpolation subroutines don’t extrapolate.
Note that the logging parameter Oil Dilution Ratio [%] (
SSM2 0x00027C, x[%]) cannot provide decimal places, as it is a simple integer value without conversion.
Original RAM value however is a 32-bit floating point variable so if you are able to log RAM (advanced, specific ECU ROM definitions required!) you can spot slight changes.
Another and rather easy option is to log parameter Estimated Distance to Oil Change (
SSM2 0x00029A, x*100 [km]) and reverse-calculate oil dilution ratio:
This will provide better oil dilution precision, roughly one decimal place.
Note: Maximum result value is 10 % since underlying value cannot get negative. Use standard oil dilution parameter if you get close to and above 10 %.
Add this to RomRaider logger definitions:
<parameter id="P300" name="Oil Dilution 2" desc="Reverse-calculated from Estimated Distance to Oil Change to get better precision." ecubyteindex="72" ecubit="4" target="1"> <address>0x00029A</address> <conversions> <conversion units="%" expr="10-x/15" format="0.00" gauge_min="0" gauge_max="15" gauge_step="1" /> </conversions> </parameter>
For newer models that use the new diagnostic protocol, look here: Extended OBD-II
Of course both oil dilution ratio and distance to oil change should be considered rough estimations. So far all Subaru control units cannot measure dilution, there is no suitable sensor attached. Such dilution sensors do exist but add costs, especially development and (reliability) testing. As a result of missing sensor, the ECU must be told to reset oil dilution value when engine oil has been replaced – see Engine Oil Change (DPF models).
We know the oil dilution algorithm in detail and are able to debug issues. Basically, oil dilution gets to increase while active DPF regeneration is being performed. Otherwise it will drop (very) slowly as the ECU estimates oil evaporation. As you might expect, evaporation rate depends on (coolant) temperature, the higher the better. See post Oil Dilution Graph for more details.
Articles regarding oil dilution:
- 2016-10: confirmed that this also applies to Euro 6 spec
- 2016-05: added logger.xml snippet