Extended OBD-II


  • Not required by law, such log data definitions are often manufacturer and model specific!
  • A simple list will not work across all Subaru vehicles, even similar models (i.e. diesel only) require different definitions databases – PIDs can mean totally different things or same logical item can have different ID number.
  • Therefore, figuring out all PIDs for all kinds of Subaru models (and possibly other control units than ECU) is way too much work to provide this for free. Thanks for understanding!

Table of Contents

Applicable Models
Overview (Listing)

Applicable Models

Engine Type Spec Notes
Diesel Euro 4 Not supported, must use SSM2.
Euro 5 =MY 2010+
Also support older protocol SSM2 via CAN (less items compared to OBD modes)
Euro 6 =MY 2015+
Petrol ? Not supported, must use SSM2.
? MY 2013+ ???


Often called Extended OBD-II, Enhanced OBD-II, or Mode 22, this newest diagnostic protocol has been introduced on Euro 5 diesel ECUs.

Like standard OBD-II it works via ISO15765 transport protocol, same setup as OBD-II and SSM2 via CAN.

Mode 0x22 means (read) enhanced data and its Parameter Identification Number (PID) is made up of two bytes (uint16).

Other manufacturers use custom OBD-II modes, too. However, non-standard modes like 22 and their PIDs are manufacturer specific! For example, definitions from GM, Ford, etc. will not match, resulting in bad results if at all.

Applies to some diesel/petrol models, not diesel Euro 6: Basic PIDs (high byte = 00) match OBD-II standard PIDs e.g. mode 0x22 PID 0x0005 yields same data as standard OBD-II mode 0x01 PID 0x05. If your software also supports Standard OBD-II anyway, just use standard mode 1 as there is no advantage in using mode 22. Euro 6 diesel does not support basic PIDs in mode 22 anymore.

As with SSM2 via CAN, Subaru Diesel Crew again was first, 2011-05-02, in publishing protocol details – enjoy!

Software / Interface Hardware

Wikipedia info might help: On-board diagnostics

SAE J2534 capable [Windows]

You can try the free Windows tool described in J2534 device ISO15765 tutorial.

Torque Pro [Android]
  • Android only! There is no version for other operating systems like iOS!
  • You’ll have to buy “Pro” version, “Lite” won’t work with mode 22 – you can try Standard OBD-II and test your interface though.
  • Homepage: http://torque-bhp.com/
  • Wiki: http://torque-bhp.com/wiki/Main_Page

According to reports in forums, this Android app is working well and allows flexible configuration.

External links
Engine Link [iPad, iPhone, iPod]

Seems to support custom PIDs, display as ASCII text etc.


Some PIDs might require seed-key login (algorithm needed, we do not publish crypto). Do these yield negative response message at least or no response at all?

However, generic logging applications usually do not support authentication anyway as it is manufacturer and model specific.

Definition Downloads

Discontinued due to lack of support and resources. Data listed on this page might get updates.

Overview (Listing)

The focus here is on diesel specific items, we will also add more petrol PIDs over time.
Listing is incomplete, though, many useful items (i.e. DPF related) are known and tested by now:


PID Name [D]iesel,
Basic PIDs, should be same as OBD-II mode 1

Not supported on Euro 6 diesel.

0005 Coolant Temperature [D][P]
0023 Fuel Rail Pressure (diesel, or gasoline direct inject)
003C Exhaust Gas Temperature (EGT) at Catalyst Inlet
003E Exhaust Gas Temperature (EGT) at DPF Inlet
F190 Vehicle Identification Number (VIN)
F197 System String
10A1 Mass Airflow Sensor Voltage [D][P]
10A3 Fuel Injector #1 Pulse Width [P]
10A4 Fuel Injector #2 Pulse Width [P]
10A5 Learned Ignition Timing [P]
10A6 Accelerator Pedal Angle [D][P]
10A7 Fuel Temperature [D]
10AC Primary Boost Control [D][P]
10B2 Alternator Duty [D][P]
10B4 Intake VVT Advance Angle Right [P]
10B5 Intake VVT Advance Angle Left [P]
10E3 Memorised Cruise Speed [D][P]
1116 Final Injection Amount [D]
111B Exhaust Gas Recirculation (EGR) Target Valve Opening Angle [D]
111C Exhaust Gas Recirculation (EGR) Valve Opening Angle [D]
111F Inlet Air Temperature (after air filter) [D]
1121 Target Engine Speed [D][P]
112A Mileage after Injector Learning [D]
112B Mileage after Injector Replacement [D]
112C Interior Heater [D]
Quantity Correction Cylinder #1 .. 4 [D]
1135 Battery Current [D][P]
1136 Battery Temperature [D][P]
1137 Alternator Control Mode [D][P]
Diesel Specific
1149 Cumulative Ash Ratio [D]
114A Pressure Difference between DPF Inlet and Outlet [D]
114B Estimated Catalyst Temperature [D]
114C Estimated DPF Temperature [D]
114D Soot Accumulation Ratio [D]
114E Oil Dilution Ratio [D]
1155 Estimated Distance to Oil Change [D]
1156 Running Distance since last DPF Regeneration [D]
1157 DPF Regeneration Count [D]
Micro-Quantity-Injection Final Learning Values Cylinder #1 .. 4 [D]
1161 Suction Control Valve Learning Value [D]
1162 Final Main Injection Period [D]
116A Distance since DPF Warning Light Flashing [D]
not all
11A1 DPF Regeneration Attempts [D]
Euro 5 gen3+
122F Clutch Switch [D][P]
1230 Stop Light Switch [D][P]
1231 Cruise Control Set/Coast Switch [D][P]
1232 Cruise Control Resume/Accelerate Switch [D][P]
1233 Brake Switch [D][P]
1234 Cruise Control Main Toggle Switch [D][P]
124A Cruise Control Cancel Switch [D][P]
124C Oil Level Switch [D][P]
124F Glow Relay Switch [D]
1251 Sub Fuel Pump Relay Switch [D]
1254 Injector Learning [D]
125B DPF Active Regeneration Switch [D]
Following probably require authentication
1189 Oil Dilution Amount [D]
Injector Code Cylinder #1 .. 4 [D]


Showing payload bytes only for brevity. Setup depends on software used. For example, to request SSMID, full write message bytes using J2534 interface using own application code or generic tool would be “00 00 07 E0 22 F1 00" as first four bytes make up tester/flow-control CAN-ID.

Example responses are provided for comprehension, however, these bytes are often artificially made up due to lack of an actual Euro 5+ car to play with. No guarantees of correctness as always.


W: 22 F1 00
R: 62 F1 00 A2 10 14
→ SSMID = A2 10 14
Using lookup table System Names by SSMID
→ 2.0L DOHC Turbo Diesel


W: 22 F1 82
R: 62 F1 82 70 44 D8 70 07
ROMID = 7044D87007

Vehicle Identification Number (VIN)

Returns 17 ASCII characters, similar to OBD-II Mode 0x09 PID 0x02.
W: 22 F1 90
R: 62 F1 90 4A 46 31 ** ** ** ** ** ** ** ** 31 32 33 34 35 36

→ "JF1********123456"

System String

N/A in other protocols. Returns 32 ASCII characters, bytes valued 0x20 are spaces.
W: 22 F1 97
R: 62 F1 97 32 2E 30 20 44 49 45 53 45 4C 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20

→ "2.0 DIESEL                      "
Further response examples, showing response payload data only:

32 2E 30 20 44 4F 48 43 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20

→ "2.0 DOHC                        "

32 2E 30 20 54 55 52 42 4F 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20

→ "2.0 TURBO                       "

31 2E 36 20 54 55 52 42 4F 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20

→ "1.6 TURBO                       "

Coolant Temperature

formula: x-40 [°C], like SSM2 0x000008 and OBD-II Mode 0x01 PID 0x05
W: 22 00 05
R: 62 00 05 40
→ 0x40 = decimal 64; → result = 64 – 40 = 24 °C

Fuel Rail Pressure (diesel, or gasoline direct inject)

x*10 [kPa] = x/10 [bar] = ((A*256)+B)*10 [kPa], unlike SSM2 0x0001EC [MPa]
x: response payload data as 16 bit unsigned integer (uint16), big endian; alternative view: A = high (first) byte, B = low (second) byte
W: 22 00 23
R: 62 00 23 0B EA
→ 0x0BEA = decimal 3050; → result = 3050 * 10 = 30500 kPa = 305 bar

Exhaust Gas Temperature (EGT) at Catalyst Inlet

OBD-II name: “Catalyst Temperature
Bank 1, Sensor 1”
x/10-40 [°C] = ((A*256)+B)/10-40 like OBD-II Mode 0x01 PID 0x3C, but unlike SSM2 0x000277
x: response payload data as 16 bit unsigned integer (uint16), big endian; alternative view: A = high (first) byte, B = low (second) byte
W: 22 00 3C
R: 62 00 3C 0E D8
→ x = 0x0ED8 = decimal 3800; → result = 3800/10 – 40 = 340 °C

Exhaust Gas Temperature (EGT) at DPF Inlet

OBD-II name: “Catalyst Temperature Bank 1, Sensor 2”
x/10-40 [°C] = ((A*256)+B)/10-40 like OBD-II Mode 0x01 PID 0x3E, but unlike SSM2 0x000278
x: response payload data as 16 bit unsigned integer (uint16), big endian; alternative view: A = high (first) byte, B = low (second) byte
W: 22 00 3E
R: 62 00 3E 0D AC
→ x = 0x0DAC = decimal 3500; → result = 3500/10 – 40 = 310 °C

Primary Boost Control

  • Diesel: VGT adjustment of turbocharger nozzle ring (low value → open → low turbo rpm)
  • Petrol: Primary wastegate duty cycle.

x*100/255 [%], like SSM2 0x000030
W: 22 10 AC
R: 62 10 AC 64
→ 0x64 = decimal 100; → result = 100*100/255 = 39.2 %

Alternator Duty

x [%], like SSM2 0x00003A
W: 22 10 B2
R: 62 10 B2 00
→ 0x00 = decimal 0; → result = 0*100/255 = 0 %

Intake VVT Advance Angle Right

x-50 [deg], like SSM2 0x00003C
W: 22 10 B4
R: 62 10 B4 40
→ 0x40 = decimal 64; → result = 64 – 50 = 14 deg

Intake VVT Advance Angle Left

x-50 [deg], like SSM2 0x00003D
W: 22 10 B5
See 10B4

Memorised Cruise Speed

x [km/h], like SSM2 0x00010A
W: 22 10 E3
R: 62 10 E3 82
→ 0x82 = decimal 130; → result = 130 km/h

Final Injection Amount

x/256 [mm³/st] = A+B/256, like SSM2 0x0001E2
W: 22 11 16
R: 62 11 16 46 32
→ x = 0x4632 = decimal 17970; → result = 17970 / 256 = 70.195 mm³/st
or: → A = 0x46 = dec 70; B = 0x32 = dec 50; → result = 70 + 50 / 256 = 70.195 mm³/st

Exhaust Gas Recirculation (EGR) Target Valve Opening Angle

x-50 [deg], like SSM2 0x0001E8
W: 22 11 1B
R: 62 11 1B 78
→ 0x78 = decimal 120; → result = 120 – 50 = 70 deg

Exhaust Gas Recirculation (EGR) Valve Opening Angle

x-50 [deg], like SSM2 0x0001E9
W: 22 11 1C
R: 62 11 1C 3C
→ 0x3C = decimal 60; → result = 60 – 50 = 10 deg

Inlet Air Temperature (after air filter)

x-40 [°C], like SSM2 0x0001ED
W: 22 11 1F
R: 62 11 1F 42
→ 0x42 = decimal 66; → result = 66 – 40 = 26 °C

Target Engine Speed

x/4 [rpm] = (A*256+B)/4 like SSM2 0x0001EE
x: response payload data as 16 bit unsigned integer (uint16), big endian; alternative view: A = high (first) byte, B = low (second) byte
W: 22 11 21
R: 62 11 21 0C 90
→ x = 0x0C90 = decimal 3216; → result = 3216 / 4 = 804 rpm

Mileage after Injector Learning

x*5 [km] = (A*256+B)*5, like SSM2 0x0001FA
W: 22 11 2A
R: 62 11 2A 02 58
→ x = 0x0258 = decimal 600; → result = 600 * 5 = 3000 km

Mileage after Injector Replacement

x*5 [km] = (A*256+B)*5, like SSM2 0x000204
W: 22 11 2B
R: 62 11 2B 27 12
→ x = 0x2712 = decimal 10002; → result = 10002 * 5 = 50010 km

Interior Heater

x [steps], like SSM2 0x000270
W: 22 11 2C
R: 62 11 2C 01
→ x = 1 steps

Quantity Correction Cylinder #1

(x-100)/100 [ms] = (A-100)/100, like SSM2 0x00025D
W: 22 11 2D
R: 62 11 2D 71
→ x = 0x71 = decimal 113; → result = (113-100)/100 = 0.130 ms

Cylinders 2, 3, 4 require PIDs 112E, 112F, 1130 respectively.

Battery Current

x-128 [A], like SSM2 0x000271
positive result = charging battery, negative = discharching
W: 22 11 35
R: 62 11 35 8A
→ 0x8A = decimal 138; → result = 138 – 128 = 10 A (charging)

Battery Temperature

x-40 [°C], like SSM2 0x000273
W: 22 11 36
R: 62 11 36 3B
→ 0x3B = decimal 59; → result = 59 – 40 = 19 °C

Cumulative Ash Ratio

x [%], like SSM2 0x000275
W: 22 11 49
R: 62 11 49 20
→ 0x20 = decimal 32; → result = 32 %

Pressure Difference between DPF Inlet and Outlet

x [kPa], like SSM2 0x000276
W: 22 11 4A
R: 62 11 4A 10
→ 0x10 = decimal 16; → result = 16 kPa

Estimated Catalyst Temperature

x*5-40 [°C], like SSM2 0x000279; calculated by ECU algorithm
W: 22 11 4B
R: 62 11 4B 45
→ 0x45 = decimal 69; → result = 69 * 5 – 40 = 305 °C

Estimated DPF Temperature

x*5-40 [°C], like SSM2 0x00027A; calculated by ECU algorithm
W: 22 11 4C
R: 62 11 4C 44
→ 0x44 = decimal 68; → result = 68 * 5 – 40 = 300 °C

Soot Accumulation Ratio

x [%], like SSM2 0x00027B
W: 22 11 4D
R: 62 11 4D 20
→ 0x20 = decimal 32; → result = 32 %

Oil Dilution Ratio

Note: use Oil Dilution Ratio 2 mainly for better accuracy!
x [%], like SSM2 0x00027C
W: 22 11 4E
R: 62 11 4E 04
→ 0x04 = decimal 4; → result = 4 %

Oil Dilution Ratio 2

Pseudo parameter, exclusively by SDC, highly recommended instead of logging standard “Oil Dilution Ratio”.
Note: Maximum result value is 10 % since underlying PID cannot get negative. If you get close to 10 % then use standard oil dilution ratio PID as well! That’s the only disadvantage here.
10-x/15 [%] = 10-A/15 [%]
W: 22 11 55
R: 62 11 55 56
→ x = 0x56 = decimal 86; → Oil Dilution Ratio 2 = 10 – 86/15 = 4.27 %

Background Information

In all tested Euro 4/5/6 software the exact relationship is:
DistanceToOilChange[km] = 15000 - 1500 * OilDilutionRatio[%]
See post Estimated Distance to Oil Change for details and graph.
Therefore a more precise oil dilution value (roughly one decimal place) can be achieved by querying PID 1155 and calculating:
OilDilutionRatio2[%] = 10 - DistanceToOilChange[km] / 1500

OilDilutionRatio2 = 10 – 8100 / 1500 = 4.6 %
OilDilutionRatio2 = 10 – 8200 / 1500 = 4.5 %

Using standard Oil Dilution Ratio (PID 114E) the result would just be “5 %” in both cases.

→ OilDilutionRatio2[%] = 10 - DistanceToOilChange[km] / 1500
→ OilDilutionRatio2[%] = 10 - (x*100) / 1500 = 10-x/15

Estimated Distance to Oil Change

x*100 [km], like SSM2 0x00029A
W: 22 11 55
R: 62 11 55 56
→ x = 0x56 = decimal 86; → result = 86 * 100 = 8600 km


This parameter is not meant as actual indicator when to service the car. It only derives from oil dilution ratio which is much more useful to watch. See post Estimated Distance to Oil Change for details.

Running Distance since last DPF Regeneration

This mileage counter is being reset to zero just after fully completing an active regeneration, otherwise keeps growing.
x [km] = A*256+B like SSM2 0x00029B
x: response payload data as 16 bit unsigned integer (uint16), big endian; alternative view: A = high (first) byte, B = low (second) byte
W: 22 11 56
R: 62 11 56 02 34
→ x = 0x0234 = decimal 564; → result = 564 km

DPF Regeneration Count

x [-] = A*256+B like SSM2 0x00029D; tracks fully completed active regenerations only
x: response payload data as 16 bit unsigned integer (uint16), big endian; alternative view: A = high (first) byte, B = low (second) byte
W: 22 11 57
R: 62 11 57 01 23
→ x = 0x0123 = decimal 291; → result = 291 regenerations

Micro-Quantity-Injection Final Learning Values Cylinder #1

These are static learning values, updated after Injector Learning / Calibration procedure had been completed.
Resultant first five payload data bytes represent five raw values for Pressure Level #1 .. 5. Last 3 of 8 total payload response bytes are const 00.
(x[i]-128)/200 [ms] like SSM2 0x00023D ...
W: 22 11 58
R: 62 11 58 81 72 93 84 95 00 00 00
Pressure Level #1 → x = x[0] = 0x81 = decimal 129; → result = (129-128)/200 = 0.005 ms
Pressure Level #2 → x = x[1] = 0x72 = decimal 114; → result = (114-128)/200 = -0.070 ms

Cylinders 2, 3, 4 require PIDs 1159, 115A, 115B respectively.

Suction Control Valve Learning Value

SCV (Suction Control Valve)
x-1000 [mA] = ((A*256)+B)-1000 like SSM2 0x000238
W: 22 11 61
R: 62 11 61 03 B1
→ x = 0x03B1 = decimal 945; → result = 945-1000 = -55 mA

Final Main Injection Period

x/1000 [ms] = ((A*256)+B)/1000 like SSM2 0x000257
W: 22 11 62
R: 62 11 62 02 B5
→ x = 0x02B5 = decimal 693; → result = 693/1000 = 0.693 ms

Oil Dilution Amount

Might require authentication!
x/200 [kg] = x*5 [g], like SSM2 0x0002A2 (Euro 4 only)
W: 22 11 89
R: 62 11 89 32
→ x = 0x32 = decimal 50; → result = 50 * 5 = 250 g

Distance since DPF Warning Light Flashing

Exception: Euro 5 gen2 Legacy/Outback ROMs have implemented a totally different item for PID 116A: Target Throttle Position, x-50 [deg], length 1! This mismatch has been mitigated in later versions by disabling this PID via support info bit.
x [km] = A*256+B
W: 22 11 6A
R: 62 11 6A 00 76
→ x = 0x0076 = decimal 118; → result = 118 km

DPF Regeneration Attempts

MY 2012+ = Euro 5 gen3 and Euro 6 only!
Records half-finished active regenerations. Whenever active DPF regeneration passes half of its normal duration (~6 minutes) this counter is being incremented. Naturally, this counter will be higher than PID 1157 DPF Regeneration Count. Also, due to its design, it will not indicate all regeneration attempts.
x [-] = A*256+B
W: 22 11 A1
R: 62 11 A1 01 45
→ x = 0x0145 = decimal 325; → result = 325 attempts

Oil Level Switch

like SSM2 0x000196 bit 5
W: 22 12 4C
R: 62 12 4C FF
00 → LOW; FF → HIGH (normal)

Glow Relay Switch

glow plugs; like SSM2 0x000197 bit 5
W: 22 12 4F
R: 62 12 4F FF
00 → OFF; FF → ON

Sub Fuel Pump Relay Switch

Sub Fuel Pump; like SSM2 0x000197 bit 3
W: 22 12 51
R: 62 12 51 FF
00 → OFF; FF → ON

Injector Learning

like SSM2 0x000197 bit 0
W: 22 12 54
R: 62 12 54 FF
00 → Not Completed; FF → Completed (normal)

DPF Active Regeneration Switch

like SSM2 0x0001CE bit 3
W: 22 12 5B
R: 62 12 5B 00
00 → OFF (not in progress); FF → ON (in progress)

Injector Codes

Read cylinder #1 injector code:
W: 22 10 2A
R: 62 10 2A B* ** ** ** ** ** ** ** ** ** ** ** ** 00 **

Cylinders 2, 3, 4 require PIDs 102B, 102C, 102D respectively.

Byte index [0..14] Content
0 const:

  • (Euro 4, SSM2 only: B3)
  • Euro 5: B2
  • Euro 6: B6
1..12 12 payload bytes
13 const 00
14 simple XOR checksum

Link to related post: Injector Codes

85 responses to “Extended OBD-II

  1. PID 22 11 57 appears to be DPF Active Regeneration Count on an engine from late 2012.
    Response is 62 11 57 00 34. I’m assuming an equation of A*255+B where A=00 and B=34, giving a regen count of 52. I won’t know if this equation is correct until the B value overflows in about 4 years.

    • Absolutely correct, just added it to the list.

      • Jan Schmidt

        On my MY10 2.0D Forester, this Active Regen count PID (22 11 57) gives 22273 if treated as big-endian, but 343 regens as a little endian result, which seems the more reasonable number. Perhaps they changed endianness somewhere, or it’s just the wrong PID.
        The Soot % (22 11 4D) gives 77%, which seems possible (the reason I’m looking at these PIDs is DPF regen trouble), but it’s reporting 78% Oil Dilution with 22 11 4E – at which point I expect the car would be panicking 🙂

      • My protocol research is based on MY2011 Impreza Euro 5, ROM date summer/autumn 2010. I would expect those PIDs to be consistent throughout models but do not really know. Changed endianness is unlikely as OBD-II Mode 1 uses big endian as well…
        What software are you using? Can you post complete send and receive messages to be sure? Also ROMID, CALID. Thank you!

      • Jan Schmidt

        I’m using Torque (lite) on Android. I’m not sure it can do protocol captures, and I’m not sure where to find the ROMID and CALID. I’m pretty new to talking to an ECU – still figuring out the bits of software to use. Is there a bit of software I can use on a Linux machine to talk to my bluetooth OBD adapter and get the protocol feed directly?

      • I have encountered some interesting threads like

        Better read the whole thread, there are also screenshots, for example on page 3:

        Obviously it can work very well, not sure if you need Torque Pro for this custom PID stuff…

        If your interface is J2534 capable (driver needed) you could follow my Manual ISO15765 Connection Tutorial

        No J2534 standard support means, it really depends on the app which devices it supports due to proprietary communications with the interface device.

        Hope you can report success soon, I’d like to collect info and post solutions.

      • Jan Schmidt

        Thanks for the links. Based on those I should be getting sensible readings (their PIDs match what you’ve published above for at least Soot % and Oil Dilution %). Nevertheless I’m getting silly numbers for some, after comparing with my mechanic’s proprietary analyser:

        I got DPF Soot 77% Oil Dilution 78% Regens 343
        Compared to Soot 41% Oil dilution 2% Regens 291

        I’m using an ELM327 bluetooth dongle – a cheap one, so no doubt a terrible useless clone. I think I’ll invest in a more expensive unit. I’m on Linux, so I’m not sure where J2534 drivers come from – do the vendors supply Linux drivers too?

      • SAE J2534 standard is Windows only unfortunately, unlikely to get Linux drivers. There are hacky solutions, I remember getting FreeSSM working years ago with my Tactrix Openport 2.0 after fiddling with the source code, pointing it to my own custom Linux driver library…
        If your interface is supported by Android and Torque, you should be able to get results there as other guys have shown.
        The screenshot here shows you should be able to view request & response bytes with Torque. If the bytes you are getting do not make any sense, there must be something wrong, interface or driver perhaps?

      • Jan Schmidt

        Just to follow up on this thread and close it out: With Torque Pro, I’m able to get sensible values out of the mode 22 PIDs. I don’t know why it’s wrong with Torque Lite.

        Using an OpenPort 2.0, I was also able to dump the ROM. My MY10 ADM Forester 2.0D has CID JP4A130A ROMID 77 44 D8 72 07 CVN FC3C4E96 AA496FF4 from ScoobyRom. I think you’ve already seen that one based on https://subdiesel.wordpress.com/ecu-definitions/ecu-software-versions-stock/ but I can send it if not.

        Also, I took too long figuring out why my soot levels were rising so fast and killed the DPF (170% soot). In my case, a crack in the turbo air intake hose was not feeding the engine enough air, and it’s been running rich.

      • Thanks, good info!
        Cannot test Torque Lite/Pro myself unfortunately.
        Please send your ROM anyway, compressed (.7z, .zip, .xz …) binary, for email address see page “About”.
        That ROM was released December 2011. Can you tell if it is still latest version – when was the last time your mechanics checked for updates?
        Search for “JP4A130A Subaru Service Bulletin SB11-134” and you’ll find the PDF.
        Also I’ve seen multiple threads in various forums about intake leaks causing trouble. With DPF one cannot see exhaust gas/soot directly for visible clues anymore…

      • Jan Schmidt

        > Please send your ROM anyway, compressed (.7z, .zip, .xz …) binary, for email address see page “About”.


        > That ROM was released December 2011. Can you tell if it is still latest version – when was the last time your mechanics checked for updates?

        Seems I’ll have to take it into the official Subaru shop for that – my mechanic doesn’t get the service bulletins

        > Also I’ve seen multiple threads in various forums about intake leaks causing trouble. With DPF one cannot see exhaust gas/soot directly for visible clues anymore…

        Yeah, that’s been an expensive lesson.

  2. Hi, I have a new Subaru Forester 2.D MY14 (SJ) and I found that Exhaust Gas Temperature (EGT) at DPF Inlet does not work properly. I getting negative values even if outside is pretty hot. Maybe formula for calculating is wrong, or sensor PID is incorrect?

    • Hi, not sure, all research & info on this site is based mostly on MY09/10 ROMs.
      Do other PIDs including formulas yield meaningful results?
      AFAIK the command 22 is manufacturer specific – unlike standard OBD, so there could be changes.

      • Thanks for the response. All other temperatures seems OK. So probably the sensor PID was changed… I also found that the Oil dilution amount doesn’t work at all, only % (ratio) value is working.

    • My mistake, could not test it on my Euro4 car back then. Now updated, formula matches OBD-II which is unlike typical SSM2 EGT conversion.

  3. Pingback: Updated protocols page Extended OBD-II | Subaru Diesel Crew

  4. Is there a list of options and their names for the mode 0x22 ?

  5. I can confirm that Exhaust Gas Temperature (EGT) at Catalyst Inlet working on my Forester 2014 EURO 5 (SJ) model. I tested PID 0x003C. If there is a need to test also others let me know.

  6. Forester MY14
    Mode 0x22 list PIDs supported 0x1000 – … (summary 107 Subaru specific parameters)

    62 10 00 FF C0 00 0D
    62 10 20 50 00 00 19
    62 10 40 00 00 00 01
    62 10 60 A0 00 00 01
    62 10 80 01 80 00 01
    62 10 A0 AC 04 DF D5
    62 10 C0 80 00 00 07
    62 10 E0 2A 00 00 01
    62 11 00 00 3C 10 01
    62 11 20 80 00 1E 01
    62 11 40 00 00 00 01
    62 11 60 0C 00 18 01
    62 11 80 00 00 00 01
    62 11 A0 00 00 00 01
    62 11 C0 5D 55 7E DD
    62 11 E0 30 00 F8 01
    62 12 00 00 00 00 01
    62 12 20 00 07 F0 01
    62 12 40 00 50 00 01
    62 12 60 0C 00 1F F7
    62 12 80 00 00 00 01
    62 12 A0 C0 00 00 00

    • Thank you, good info, will check and update the page.

    • Confirmed 107 supported PIDs calculated by octave script from your data:
      1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 100A, 101D, 101E, 1022, 1024, 103C, 103D, 1061, 1063, 1088, 1089, 10A1, 10A3, 10A5, 10A6, 10AE, 10B1, 10B2, 10B4, 10B5, 10B6, 10B7, 10B8, 10B9, 10BA, 10BC, 10BE, 10C1, 10DE, 10DF, 10E3, 10E5, 10E7, 110B, 110C, 110D, 110E, 1114, 1121, 1134, 1135, 1136, 1137, 1165, 1166, 1174, 1175, 11C2, 11C4, 11C5, 11C6, 11C8, 11CA, 11CC, 11CE, 11D0, 11D2, 11D3, 11D4, 11D5, 11D6, 11D7, 11D9, 11DA, 11DC, 11DD, 11DE, 11E3, 11E4, 11F1, 11F2, 11F3, 11F4, 11F5, 122E, 122F, 1230, 1231, 1232, 1233, 1234, 124A, 124C, 1265, 1266, 1274, 1275, 1276, 1277, 1278, 1279, 127A, 127B, 127C, 127E, 127F, 12A1, 12A2
      Which model is your 2014 Forester exactly, what petrol engine type?
      Can you also try identification PIDs as well as 0x00XX supported PIDs?

      • Alexander

        FB25 CVT non-turbo \ 22765 AE 371 Denso \ CPU 72531 Renesas \ CID EA1M220F
        No SSM2 via serial, no SSM2 via CAN ((

        Mode 0x22 PIDs 0x00XX… the same OBD mode1 PIDs 0xXX…
        Mode 0x22 PIDs 0x10XX… Subaru specific. List like above used by SubaruScanTool

    • ;o)
      Mode 0x22 PID 0x10B4 VVT Advance Angle Right
      Mode 0x22 PID 0x10B5 VVT Advance Angle Left
      Mode 0x22 PID 0x1121 Engine Speed [RPM]

  7. Does anybody know if there is possible to read these values via TorquePro:
    – Running Distance since last Diesel Particulate Filter (DPF) Regeneration (km)
    – Cumulative Ash Ratio (%)
    – Estimated Distance to Oil Change (km)
    This could be quite usefull.


    • I will look them up and add them. As long as these don’t need authentication, they will work.
      Ash is normally not important – only if your car has lots of mileage and ash is reaching 100%, mostly driven by accumulated fuel flow, therefore also regenerations.
      As estimated distance to oil change derives directly from oil dilution, see post, personally I almost never log this item.
      DistanceToOilChange[km] = 15000 - 1500 * OilDilutionRatio[%]
      Then again, newest models might have differences in their software, no data from Euro 6 yet…

      • Thank you for your effort, then I thing that only Running Distance since last Diesel Particulate Filter (DPF) Regeneration (km) is interesting.

      • Thank you for new PIDs, I tested runnig distance since last DPF regen and distance to oil change and both works. Thanks.

  8. Tactrix Stand-alone logger supports Mode22 reading also, even mixed protokoll reading. But it seems only on basics

    Testing with stand-alone logger is some times crapy:
    – reading switches will crash the logger functionality, so e.g. config the activ regeneation switch reading wil stop working the logger.
    – Every 2 byte value seems to be worng interpretated: calculation from raw data (formular = x) to physical value got crapy results.

    Don´t know on witch side the problem is.
    So stand alone logger seems no to be a alternativ for Mode22 reading and RomRaider seem not to react of request

  9. I think
    Mode 0x22 PID 0x127F – “SI-Drive Mode”
    1 – S
    2 – S#
    3 – I
    8 – S#
    16 – I

    • Values look perfect, cannot confirm PID 0x127F.
      I thought SI-Drive Mode PID was 0x10DC, can you try?
      uint8, enum data: 1=S; 2=S#; 3=I; 8=S#; 16=I; 24=S
      Possibly my stuff from several years ago is obsolete…

      Another possibility: 0x10DC could be PID which is TCU-only, not ECU.

  10. Took some time in trying to unterstand, why Tactrix crashes while reading switches and other parameter:

    ECU sends a negativ responce, when e.g. PID 0x125F is requested.
    W: 22 12 B5
    R: 7F 22 31

    Do not know, if troque app will start an diagnosic setion with start request, so some more PID are anabled.
    Tactrix doesn´t and starts directly with the PID request.
    So, I get negative responce even on VIN or Rom-ID requests.

    • IMHO a negative response is better than no response at all and all apps should be able to handle this!

      I doubt that apps, especially generic ones like Torque, know about Subaru advanced session modes and required seed-key algorithms.

      Negative response code 0x31 (Request out of range) from your example write+read is to be expected as according to my supported-PID list, PID 0x12B5 is not supported, highest PID is 0x1262.
      Btw, Denso/Subaru NRCs are rather limited compared to other manufacturers, meaning Subaru ROMs respond using very few and rather generic NRCs instead of more detailed specific error codes depending on what part went wrong.

      I guess, as long as apps don’t provide error feedback, testing each PID manually and excluding not working ones would be a solution for now.

  11. Don´t unterstand your item:
    the read and wirte example was done on a MY2011 Impreza EURO5 with lastest updates..
    So, if 0x12B5 (regeneration active switch) is not supported, in witch way Subaru tester will read the info ?
    I have this problems with all switches.
    At least, we have some examples, where this switch was reat e.g. in Forester forum
    I don´t think, it there are twice availible on SSM..

    Bad of all, the hard disk with all CAN-logs of the SSM-tool cashed minetime, so no chance to take a look, what this tester did 😦

    • 2 Jochen
      If you have access to real SSM-CAN-scanner – let’s make a complete list of names of Mode 0x22 PIDs with the help of CAN sniffer ;o)

      • IMHO while sniffing CAN can be useful for many things, you cannot derive complete definitions from sniffing CAN traffic from a single ECU or just a few different ECUs. Diagnostic software will query capabilities first, then it won’t request unsupported PIDs and even if it did, the particular ECU would respond with error code or not respond at all. SSM-III does not display unsupported items… e.g. no diesel parameters when connected to a petrol ECU.

    • You keep talking about 0x12B5 !?
      Try 0x125B as documented, several car owners (using Torque Pro etc.) use this definition for the active regen switch, works fine.

      Suggestion: create and post a list of your PID requests + responses.
      If possible, also request supported PID capabilities as shown in ParsePID project (ex W: 22 12 00; R: 62 12 00 00 00 00 01).

  12. Torkem_Fores

    Hi !
    I have recently bought a Subaru Forester 2.0D AUG2015 (Euro6). I have a problem with the DPF, in order to know how to work the DPF, I bought torque tool.
    So, the ECU does not respond at extended PID’s. Otherwise, it respons to basics PID. Exemple:
    If I ask for PID “0105” it gives me the Coolant Temperature. But If I ask for PID “220005”, (the equivalent) I do not get any result.

    Could some on tell me which are the PID to obtain DPF dates, in PID basics mode..??
    I mean, the equivalent PID to 22124F, 22114E, 221189, 22114C, 22114B, 22114D, etc

    Thank you so much,

    • Hi! From what I’ve heard, this protocol and usual PIDs should work on Euro6 models.
      To resolve protocol issues I recommend testing PIDs manually, as in screenshot “Testing PID” ( http://www.subaruforester.org/vbulletin/f160/pitrack_1-s-saga-dpf-regens-vs-performance-economy-loss-278465/index4.html#post3529673 ).
      If you get a negative response (7F 22 ..) this usually means PID is not supported.
      Not sure if this manual testing requires installing/using a specific Torque plugin.

      • Hi,
        Yes, with the same Torque tool I can test the PIDs, when I am adding a new PID.
        I attached some print-screens of results. I do not know interpret values
        For example, for 22114D PID, Soot Accumulation Ratio, the test result is:
        Result for equation: 0.0
        Command: 22114d
        Response: 7E80762110000000FFD75A0762110000FFD63F

        Results for other PID’s:

        Here there is on exemple of print-screen result of my Forester:

        Would you mind telling me why it does not work?
        Thank you so much

      • No probs, that’s good feedback, well done. All these responses are strange and they should not be equal of course.
        Firstly, were you using Torque “Pro”, not the free “Lite” version? Because Torque Lite messing up or not supporting longer commands as required with mode 22 could be an easy explanation for this.
        So far I haven’t had any chance to work with a Euro 6 model.
        However, I have done some slight reverse-engineering of a Euro 6 ECU firmware, 2015 Forester, CID JF7C100D. You’ll find mode 22 support info in ParsePID project.
        I extracted those info from the ROM and also analysed multiple functions through disassembly. I investigated getter functions which produce response bytes for 0x114B, 0x114d, 0x1156, 0x1157 and a few more. Those functions work exactly as expected, conversion formula matches perfectly. So these PIDs do exist for sure, just like in Euro 5 ROMs.

        Now, in theory, some additional stuff like switching into a special diagnostic mode before logging might be needed on Euro 6. Or request message format could differ.
        Problem is, again, cannot test this myself and so far there has been too little feedback from Euro 6 car owners.

      • Hi subdiesel,
        My Toque is the PRO app version 1.8.81 (the latest version).
        I was so angry that I did not realized that the answer were the same. Clearly it is not normal.
        And yes, I was looked the ParsePID project to look for the equations and PIDs.

        We assume that the PID’s work in EuroVI. In fact, a couple of days ago, I’ve found out that the Kutavyz partner has a Forester Euro VI and it works correctly. I keep in touch with him, however he did not find any solution to my issue.

        I would like to know how to configurate Torque app to make it ready.

        Thanks for all,

  13. Hi!

    The last time that my EuroVI Forester was in the garage I have access to the SSM III and one of the PID’s was the numbers of attemps of DPF regen. I think this is a very useful PID and it isn’t in the table. Is there any way to obtain it?


  14. Hi again!

    I’ve tried the PID 11A1 on my EuroVI Forester and is working like a charm with Torque Pro. I leave you an screenshot to show my working PID’s:

    For now, I’m having troubles with the inyector learning status (PID 221254), because it always stay “ON”, leave you an screenshot too:
    On the other hand, the “Mileage after Injector Learning” (PID 112A) appears to work fine(you can see in the first screenshot), but can’t confirm cause’ i don’t now when the inyector learn happened.

    Thank you so much for your help!

    • Thanks, corrected 1254, FF means “Completed” which is the normal state. When calibration is in progress or has been aborted, it should indicate 00.

  15. Hi,
    Could you tell me something about : https://subdiesel.wordpress.com/generic/protocols/extended-obd-ii/#comment-2313
    I would like to know how to configurate Torque app to make it ready

    Thank you so much for your help.

    • Cannot help with Torque or interface setup, sorry. Don’t have Subaru hardware to test it myself.
      My advice is to keep comparing every config detail with another Torque user, try different interface etc.

  16. Hello,

    I have a Forester 2.0D SJ MY13 and I managed to setup TorquePro to monitor DPF specific parameters (which is awesome btw!! 🙂

    Can I also monitor the trip parameters?
    Something like: http://www.truedelta.com/images/mk_reviews/1395801809-Forester-trip-computer.JPG

    • Hello,

      I have found them in TorquePro default settings. I thought that Subaru had different codes. 🙂

    • Hi, other than (ECU’s internal) odometer and fuel flow Subaru diesel ECUs usually don’t do trip specific items. For everything else other units like dashboard computer are responsible. Sniffing CAN (low speed bus), revealing specific CAN messages might work.

  17. Hi all,
    Pitrack_1 from subaruforester.org here.

    Firstly a *BIG* thanks to subdiesel for his/(her?) persistence in this field over several years now.

    I’m a bit overwhelmed with all the new PIDs you’ve uncovered. If there’s some checking of particular PIDs I can do I will see what I can do to help, let me know.

    I see a few queries about Torque Free / Torque Pro and addding/testing PIDs. It’s bee quite a while since I played with this and I’ve forgotten a bit but I’ll see what I can remember and suggest to help.

    Toruq/torque pro
    1) Buy Torque Pro. Its about $US5 so approx 5 minutes work at $60US/hr. If you can afford a Forester Diesel (or similar) you can afford $5 rather than post groans about how Torque Free won’t do everything the Pro version will. ‘Nuff said about that.
    2) There is free add-on to Torque Pro by its’ author called Torquescan which aids in discovering PIDs by scanning and also implements a Telnet server for those who can use it (not me).
    3) I have a generic ELM327 copy (I realise now) which has served me well. It would pay to get a good one however, I’ve just been lucky I think. I think it has limited speed compared to a good ‘un, I get approx 28 PIDs/sec rate.
    4) You can either add PIDs manually through Torque Pro: start Torque Pro, go to the setting menu (bottoom-left corner gear icon), choose settings, select “Add custom PIDs/Sensors”, then select from the menu (top-right corner) “Add custom PID” to add one PID or select “add predefined set” to add some from a predetermined format file- it may need to be in a particular directory, I think off “…/.torque/extendedpids” or similar. The file format is a simple comma-delimited one, an example can be found on my “pitrack_1’s saga” pages, you can add more PIDs to the bottom.

    What the hey, here’s my example file (everything between the “—-“s)
    “Name”, “ShortName”, “ModeAndPID”, “Equation”, “Min Value”, “Max Value”, “Units”, “Header”
    “Glow Relay Switch”, “Glow Relay”, “22124F”, “A”, “0”, “255”, “on/off”
    “Oil Dilution Ratio”, “Oil Dilution”, “22114E”, “A”, “0”, “255”, “%”
    “Estimated DPF Temperature”, “Est. DPF Temp”, “22114C”, “5*A-40”, “-50”, “1000”, “°C”
    “Estimated Catalyst Temperature”, “Est. Cat Temp”, “22114B”, “5*A-40”, “-50”, “1000”, “°C”
    “Soot Accumulation Ratio”, “Soot”, “22114D”, “A”, “0”, “255”, “%”
    “DPF Active Regeneration Count”, “DPF Regen Count”, “221157”, “A*256+B”, “0”, “65535”, “”
    “DPF Active Regeneration Switch”, “DPF Regen”, “22125B”, “A”, “0”, “255”, “on/off”
    “Exhaust Gas Temp at DPF”, “EGT@DPF”, “22003E”, “(A-2)*25+B/10”, “-50”, “1000”, “°C”

    Hope this helps,


    • Hello Patrick,

      Thanks to subdiesel and you I’ve managed to setup DPF monitoring on my Forester 2.0D SJ MY13.
      Note3 screenshot:

      What I’ve learned:
      – when it reaches 66% soot the temps are automatically raised above 600C from a typical 250-350C range and DPF switch turns to ON.
      – the passive regeneration is quite OK with ~1800RPM for 3rd or 4th in normal conditions (not going up a hill or windy)
      – I have ~43000 km with my Subie (was brand new) and 87 regens so far (~500km between regens)
      – lately it seems to regen sooner and I believe it had a lot of failed attempts during the first 2 years since I had the car

      Doing 15minutes with 2400rpm on the highway as the dealer suggested seems so dumb right now and I believe it does more harm. For example if you have 10-20% soot ratio you could reach 60% after 15 minutes on the highway and when you get back in the city the regen starts. So stupid.

      Thank you all guys for making all the effort on getting the data public!

      • Hi, I’ve also had plenty of regens on the highway. No point in extra driving when EGT is still too low, meaning more soot is being produced than burned off. You’d need more engine load – German “Autobahn” or long uphill sections…

      • Hi subdiesel,

        What is considered EGT too low ? I have 200C-250C after 1h of 2000rpm (4th) with 15-20C outside temp.
        When the active regen starts it reaches 600-650C and stays there with 2300-2500rpm.
        What would be the “sweet spot”?

        Today I’ve managed to do a trip of ~100km with 2000rpm (4th) on national road and 1600rpm in the city with a slight downhill and the soot grew from 23-25% to 33-35%. The EGT temp was between 200-250C.

        I will try to do more tests as I get the chance to figure out the sweet spot but it would be nice to know if any of you had any experience with relation between passive regen and EGT.

        PS: I’ve managed to monitor the Glow Switch and it turns off at around 30-35C.

        Thank you.

      • Hi,
        IIRC my Euro 4 car needed roughly 400 °C sustained EGT to keep or decrease soot level.
        Euro 5 should do be better, don’t have numbers – did only briefly drive EU5 models. Best to log and analyse for yourself.
        Btw, glow plugs decision is quite complex, not based on simple coolant temperature thresholds. Glow is not only used for engine start, also for emissions during warm-up it seems.

    • Thanks a lot for all feedback!
      Check your EGT formula, should be: (A*256+B)/10-40 [°C]
      I might try to code some dynamic web site in the near future, for example it could easily generate such definition formats…

      • Hi subdiesel,

        Everything you saw on the screen uses the formulas provided in the csv file.

        A few things I forgot to mention.
        – the active regen ends with a different soot percentage depending on the conditions of driving
        – once it stoped at 20% and went down to 0% after ~10minutes of normal-agressive driving (~2000-2300 rpm)
        – another time it stoped about 5 minutes after the soot reached 0% (during this time the soot remained at 0%)
        I think the active regen decides if it could keep the temp high enough based on the average driving and if not it will shut down sooner. This also means the temps drop to where they were before the active regen started.
        I had an active regen done in 2nd gear (2300-2500rpm) because of the road conditions and it stoped at below 20% soot and then went down to 5-7% with active regen off).

        In the end I think the computer decides based on conditions what to do.
        Problem is that as the driver it is difficult to help the active regen all the time to be done properly.

        This is a screenshot after I’ve started the engine for 2 minutes.

        Any ideas why the Glow Relay Switch could be On ? The outside temp were around 12C.

        I’ve managed to drive ~40km in the city and still keep the Soot Ratio below 64% – barely 🙂
        It’s quite interesting because if you drive like an “old man” the Soot Ratio goes up very very slow.
        It could be useful to help with fuel consumption too :))

        Thanks again!

  18. Hi Subdiesel et al,

    as posted on my “Pitrack_1’s Saga…” page:

    [QUOTE=subdiesel;5960970]Hi, please someone try “Oil Dilution Ratio” derived from PID [URL=”https://subdiesel.wordpress.com/generic/protocols/extended-obd-ii/#mode22pid1155″]0x1155[/URL] (actually “Estimated Distance to Oil Change”) to get better precision, at least 1 decimal place rather than just the integer value. Check whether this calculation matches standard “Oil Dilution Ratio” 0x114E.

    PID: 221155
    name: Oil Dilution 2
    equation: 10-A/15
    unit: %[/QUOTE]

    Hi subdiesel,

    It works! 🙂


    PID 221155 (proposed Oil dilution 2)
    Response: 62115578
    Result: 2.0 (note: 10 – (7*16+8)/15 = 2 exactly so no decimal info yet… perhaps try tomorrow/later?)

    PID 22114E (‘original’ Oil dilution)
    Response: 62114E02
    Result: 2 (integer)

    Hope this helps,


  19. Some more info on Torque Pro and PIDs:

    1) TorqueScan (free add-on) will list all the PIDs known, highlighting in green the responsive ones and showing their results. So once programmed in (see next point), the responses can be easily seen here (you just may have to scroll down through copious PIDs)

    2) Programming of the PIDs takes place in the Settings as outlined above. What I didn’t say is it is quite easy, for the 22 series PIDs simply enter “22wxyz” as the PID (where wxyz are the next 4 digits). Display names can be set, type of output (e.g. on/off, %, other), multipliers apllied and also a formula set. For those really knowing what they are doing, there are diagnostic code areas that are beyond me (haven’t looked up on the forums either…). I suppose they may be used to trigger various responses. These do show up in Torquescan.

    3) When you program a PID, there is a test button down the bottom to, err, test before you save. This returns both a formuale-calculated result AND THE RESPONSE CODE – used to calculate the result but also showing who’s responding if I remember correctly. Great way of testing individual PIDS.

  20. Mrjuliosan,

    Yes the soot ratio will vary with exhaust temp. Speculatively, perhaps either it’s not temp compensated or perhaps DPF pore sizes change as it cools or the sensors have different responses.

    The glow plug light remains on on our car until coolant temp of 45C (I think) is reached.

    You’ll find this info already on this site or in my thread and/or others I’ve made posts to, plus more besides.


    • Thanks for the info Patrick. I’ll try to read more once I have some time.

      Is there a way to read an info that would let me know when to leave during winter?
      I usually leave the car on until it reaches 850-900rpm and then leave.
      Would that help the engine and other components ?

    • Hi,

      my experience is the same with a soot ration floating based on temperature of DPF. So it seems to be a normal behavior. Here you can find a tracklog with a chart, take a look if you want:


      When the DPF temperature was low the soot ratio goes down but when DPF temperature increased soot ratio starts growing.

      At my MY14 glow plug turns off pretty quickly and for sure it didn’t light up until 45C of coolant temperature.


  21. A copy from my saga page on subaruforester.org…

    Well Subdiesel,

    I tried it Oil dilution 2 PID 221155 again tonight and the result is…


    72 / 2.4% as opposed to 78 / 2% previously. So it does recognise decimal places. [b]Congratulations, well done!!!![/b]:biggrin:


  22. Please note the formula for simple on/off switches (like 0x125B DPF Active Regeneration Switch) needs to be “A” to make it work with Torque Pro. As it is now, the formula field is empty for all switches in the CSV and ODS files linked above.

    Thanks for all the good work and for sharing the information.

  23. Couple more parameter tests…both work!

    Just driven up to Syd from Canberra, no regens… now at approx 600km since last regen. How do I know this?

    Pressure Difference between DPF Inlet and Outlet (DPF Press diff), A, [kPa], 22 11 4A
    Result shows a positive integer, got no feel for what it should be so I’ll trust subdiesel that it’s a reasonable figure.

    Running Distance since last DPF Regeneration (dist since last regen), A*256+B, [km], 22 11 56
    Seems to show the correct figure.

    Those who have Torque Pro should note there’s been a few updates recently: There is the possibility of headers and diagnostic start/stop commands for each extra parameter. These are beyond me but I expect someone ‘out there’ will know what to do with them?

    Also I think there are some extra ‘standard’ parameters that have been added to the standard list: such as distance since last code reset (or maybe I didn’t notice this previously)


  24. I have tried and tried to get this to work with my MY15 OB diesel. i get either no data, or a zero result. Eg. the soot accum says 0% as does oil dilution and regen count. i doubt this is possible! i have used the formulas as described. for example my mode and PID for soot is 22114D, formula A and it returns 0. not sure what to do now…

  25. no, not sure, but i get live data of other functions such as coolant temp… it’s a bit odd… for other functions i get a constant value of 253.

  26. I have torque pro, a chip BT dongle and… a forester diesel my2015 euro6. I am playing with pid following your great suggestions to look for dpf status etc… no one of the pid tried works e.g. I literally typed 22114d in Torque interface. The interface show some extra field I left blank: OBD Header, diagnostic start an diagnostic stop commands.
    The Standard info in torque works, like speed ..trottle..but I am not interested to these info. .. but.dpf…. the question is: do I missed something for configuring torque? Is actually euro6 not supported? (But even the pid you reports works for euro6 does not provide feedbacks)…
    Many thanks!!!

    • Reply by myself: I confirm that with the good dongle and torque pro many extended PIDs in the csv file are working with Euro6 forester diesel. MANY THANKS!!! I have a quite full understanding of the process as observed using torque pro. However even at 140kmh for 10 minutes the soot is increasing never decreasing. I here regen every 120km approx. The car has 25000 km and ash is 12%. Soot 66% trigger regen and after 12 minutes stops independently on the residual soot. Usually is 0 after 8 minutes bUT i drove to have regen start and stop when in the highway. The dealer did not reset at oil change and an error raised when Dilution was 11%. It was not reset at oil change when I had not the right dongle tö che it at that time. After reset for service, the error disappeared and dilution reset to 0%. now Dilution is 3% estimated by ecu in defect, i know. With Dilution was at 10% (estimated by ecu in excess) the regen where every 50 or 60km!

  27. Distance between regens strongly depends on quality of diesel and also on the outside temperature. And I think that diesel quality in the summer is much worse (because of BIO things 😦 ) than the winter diesel. I have MY14 EURO V Forester diesel and after 2 years of monitoring things around the DPF I observed a lot of things. In warm weather, 25C and up, I also have regens every 50-80 km. But in cold weather like now, 10C and below, I have regens after 500-600km even if I driving only in the city. The one of the reasons for this huge difference can be also the fact that in hot air is much less oxygen per litre as in the cold one (try to put closed empty plastic bottle into the fridge and see what happens) and because of that the combustion process is worse in summer than in winter. I have 60000km actually and ash is 23% and oil dilution usually around 2-3%. I set up an alarm in Torque so I know when the regen started and I try to change driving style to help regen finish easily. Passive regen starts when you are able warm up DPF to at least 400-440C, on highway it is 150km/h and more or in the mountains,… in my case. So I didn’t think that there is something wrong with your car.

    • Thanks. I am based in Rome and usually buy total-erg special diesel. I hope that the extra cost is justified to keep engine and DPF clean….. Congratulations to all of you working to ‘decript’ the info in the ECU. I went to service dealer providing the most probable root cause and why the error appeared….he was quite astonished. ..

      • This summer I have a roadtrip with my family to Corse and I used Total Excellium diesel. I was quite surprised with the performance and DPF behavior even if there was hot. Distance between DPF regens extends to 450 – 650 km based on driving conditions. So definitely diesel quality has a big impact on DPF. In Slovakia we do not have Total so I used to use other brands like Shell, OMV, … but I see difference even in the same brand but different country. For example OMV MaxxMotion diesel in Slovakia is not the same like OMV MaxxMotion in Austria even if the price is the same:-(

  28. Hi,

    Not sure if you’re still maintaining as the last post is a year ago. Very useful but I can’t read the extended (mode 22) codes. I’ve now tried 2 OBD readers and they only read the standard ones (such as rpm). Mine is a MY2010 UK Forester – would this make a difference?


    • Hi, need more details.
      All Euro 5 diesel ECUs use extended OBD. What’s your calibration ID, JP4A130A perhaps? CID can be read via standard OBD, any device/app should support this.

  29. Thanks for the reply – I’ve now had 4 OBD adapters and the last one actually worked! I’m annoyed at having to go through 4 of them though; 2 weren’t cheap but at least Amazon does returns.

    Best wishes.

  30. Dieselforry

    I have 2010 Euro5 diesel Forester
    Can someone confirm or deny my findings:
    22111A A*10 is Cylinder Actual Fresh Air Flow?

    For example – I am getting 14.4 g/s of air flow at idle (EGR closed)
    14.4g/s *60=864 g/min
    864*1000=864000 mg/min
    864000/800rpm=1080 mg/revolution
    1080/2 (because 2 strokes per rev)= 540 mg/st (thats for atmospheric pressure)
    This PID at idle gives me 560 to 590 mg/st at idle (boost gauge shows ~0.4-0.6 of positive pressure)
    unted full boost (22.5 PSI) I have seen 1540 mg/st which is pretty close to theoretical calcuations…

    • Correct. And yes, it should match MAF which is the source obviously. My Euro4 values were similar (490 mg/cyl; 800 rpm; EGR 0 deg; warm engine; boost 2.4 kPa).
      By the way, PID 111A including formula x*10 [mg/cyl] matches classic SSM 0001E7 “Mass Air Flow” exactly.

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.