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); // 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) Sleep(500); // 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.