Oil Dilution Reset (K-Line, Euro4)

Applies to

Old Euro 4 models, model years (MY) 2009/2010, fitted with closed-type DPF, (therefore Impreza and Forester only?). This also means using SSM2 via Serial (K-Line) protocol, as SSM2 via CAN will not work for most maintenance operations on such old ECUs due to ROM software limitation.


After changing the engine oil, the ECU needs to be told in order to reset its oil dilution amount and ratio values – the ECU cannot detect the change by itself. By the way, Euro 4 engines do not even have an oil level switch/sensor. Also look at post Oil Dilution Graph describing ECU calculations.

By applying a little communication, dilution will be zeroed, also saved into the ECU’s EEPROM after ignition off. Otherwise this (estimated!) value might rise over time and trigger DPF light flashing having reached 10% ratio.

It seems there are still folks out there interested in this, changing oil by themselves, not at the dealership where mechanics use Subaru Select Monitor (SSM-III or newer SSM-IV) software.
I searched through some of my old notes and found the rather short and easy procedure.


Working K-Line connection to ECU. See page SSM2 via Serial.

C-style pseudo code

// only one single SSM2 address is needed
const int address = 0x27D;
byte b = Read(address);

if (b == 0xFF) { print("Probably unmanaged (closed-type) DPF, nothing to do."); exit; }

// set bit 6
Write(address, b | 0x40);

// Wait for some time (500 ms or so is more than enough for the ECU to do its work)

// clear bit 6
b = Read(address);
Write(address, b & ~0x40);

// verify, make sure bit 6 is zero again...
b = Read(address);

Almost done! Now turn ignition off so that new content gets saved into EEPROM! I also recommend waiting for about 20 seconds, then turn ignition back on in order to query oil dilution ratio [%] and/or oil dilution amount [g] parameter(s) to be sure. These values should be zero now. See post Why and when cycling ignition matters for explanation.

In RomRaider logger definitions (version 310) these parameters are called:

P193 Oil Dilution Ratio % Öl Verdünnung Verhältniss
P236 Cumulative oil diesel entry g Öl kum Dieseleintrag

SSM2 via K-Line communication example

SND = message from tester to ECU
RCV = received response from ECU

SND: 80 10 F0 05 A8 00 00 02 7D AC
RCV: 80 F0 10 02 E8 00 6A

SND: 80 10 F0 05 B8 00 02 7D 40 FC
RCV: 80 F0 10 00 F8 40 BA

SND: 80 10 F0 05 A8 00 00 02 7D AC
RCV: 80 F0 10 02 E8 40 AA

SND: 80 10 F0 05 B8 00 02 7D 00 BC
RCV: 80 F0 10 00 F8 00 7A

SND: 80 10 F0 05 A8 00 00 02 7D AC
RCV: 80 F0 10 02 E8 00 6A


It has been confirmed to be working, using RomRaider‘s built-in Test tool (menu: Tools → Launch Test App…). Since the sequence of individual commands is not time critical, it can be done by sending SSM2 messages manually one after the other. See this RomRaider Forums thread.


12 responses to “Oil Dilution Reset (K-Line, Euro4)

  1. Thanks for the share!
    As you commented on the other post, I also don’t know with what kind of software do this… if you have any suggestion it’s appreciated again and I’ll be your beta tester… in the meanwhile I found a trick that seems to work till now.. Since there is not a real issue due to the oil dilution to worry about if regular manteinance and check are made, I modified the oil-dilution and evaporation maps in the ECU using the OpenPort interface and their ECU flash software. Now the oil dilution % is always kept under 10%, no matter of the mileage or use of the car…
    It’s not a very clean way to do a reset, but it’s a very ”italian” workaround of the problem 😀 😀 :D…


    • I think I never implemented the reset procedure in my own software stack – no need.
      Some programming skills and basic understanding of PassThru (J2534) stuff are necessary to create a new tool. Instead it is rather easy for developers to add this into existing software (RomRaider, FreeSSM, EcuFlash perhaps?). Another solution would be to use a generic PassThru tool as described in my protocol tutorial pages – not sure if that free Windows tool is still available though, I am on Linux only.
      Your mentioned workaround should work. Currently I have no idea about open source ECU definitions (maps) from recent years. At EcuTek I was not involved in Subaru diesel related work.


  2. Subdiesel, nice to see, still you a with your Impreza and working on little items on them. 🙂

    Can you pleas get in contact to me or dschulz of RomRaider to implementate this function inti the logger function ?
    We also find, there is a seed-and-key mechnismus to enable any advanced workshop function on SSM-II (SSMviaCAN) befor you can reset the oil dilutation,
    Did you work on this ?

    If you know this algorthimen, we can implementate a few more workshop functions to RomRaider. (e.g. DPF reset, reading and wirting DPF parameter, learing new injectors)

    BR Jochen


    • Hi,
      as you probably noticed, I am doing some updates to this site – improving content, fixing broken links, possibly posting more useful information.
      As for software, I am currently working on ScoobyRom – slight updates, minor (!) new features…
      See page About. I don’t have any car or ECUs to play with, so no big work etc.

      I recently managed to get Eclipse & RomRaider code (huge!) working on my Linux box. Due to lack of hardware I would need to set up virtual ECU simulation. Also I am not as fluent in Java. Therefore, experienced RR developers will probably have to code new stuff, should be rather easy for them.

      As for Euro5+ models, yes, there’s probably security access required for advanced logging and maintenance – which I don’t know – again – lack of hardware to test and play with.
      On my Euro4 diesel I never needed seed/key for maintenance and diagnostics – therefore posted simple communication procedure should work. If not, feel free to send me logs etc.
      AFAIK FreeSSM also does not contain seed/key stuff – not required for older petrol/diesel models it seems – except for flashing of course.

      Ok, that’s just the current status and I am open for suggestions…


  3. Hey Subdiesel,

    to test several function, I got a EURO4 and EURO5 ECU to work on bench, as well as my E4 Impreza.
    A few others E5 (GEN2 / GEN3) Diesel are in steck to test, if it is nessessary and stable enough to test on road driven cars.

    For the maintenance functions, I will ask dschulz to implementate the E4 stuff without security access and we will see.

    ECUTek DeltaDash supports so functions for the E5 Diesels, so maybe you can give a hint to the access functions, as fare as this is possible.

    As you allready see, we provided deffintions for some (still growing) diesel dumps for ECUFlash. If you like to, you are wellcome to join and support.

    What about your patched software for the E4 Diesels ?
    You active the FAP-Lampe during active regeneration and have advanced CAN logging, witch is very usefull at E5-dumps.
    Are you willing to share this functions for opensource tuning ?
    But maybe we can disscuss this via mail



    • Hi, Ok, you’ll be able to do some testing then.
      Unfortunately, at the moment I am using Linux x64 exclusively, RomRaider does not like this, needs 32 bit JRE it seems, Logger window etc. won’t even launch. Well, I am busy with other stuff anyway.
      Yes, I will release more stuff in the future, within weeks & months let’s say, especially for E4 which I actually had implemented and was working fine on my car. Takes time to dig into this old stuff again and make it work…
      There will be no problem regarding EcuTek as they did not need/want my Subaru Diesel content, I was working on petrol and other brands there.
      I will definitely release Euro4 patches for DPF light and advanced logging including microcontroller source code.
      First, expect updated ScoobyRom within a week or so… After that, we shall see…


  4. Sounds good,
    If you implementate the patches for opensource use, shoot me a mail to geht the latest EURO4 dumps for Impreza and Forester


  5. Can you describe step by step how to perform the reset in RomRaider AppTest. When I read the first value I get the message that the address is to 3 bit long.


  6. Thank you so very much!
    Just followed your steps with a simple serial/USB connection and a terminal program. Worked like a charm it seems.

    I thought of possibly adding this to FreeSSM. However, with my lack of C++ skills this will take a while and I probably won’t dare getting it into FreeSSM’s sources for anybody to use. Have I seen you making contributions there as well? I guess it would only take you a few minutes to do that?

    In any case, I’m happy as it is and will only have to do it twice a year, so can live with my ‘terminal version’.


    • Yes, I did some contributions to FreeSSM. Communication messages itself would be easy to add. How and where to add this to user interface is the question…
      Currently busy but it’s on my TODO list. Thanks for reporting serial terminal success! Good to know – OS-independent, almost no extra software needed…


      • It is OS-independent, yes. The crucial point was to tell the terminal program that I was entering HEX strings and it should interpret them as such (also the replies). I also didn’t have to do any bit-flipping myself, since the ECU responded exactly as you stated in your example.

        As for FreeSSM: the changes I attempted so far are not visible to the UI (I’m not a UI person) but only via keystrokes. But if I had to add it to the UI, I would probably go for the adjustments panel.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.