Pages: [1] 2 3 ... 9
Author Topic: How to find which error class corresponds to a DTC read by OBD  (Read 193105 times)
Tony@NefMoto
Administrator
Hero Member
*****

Karma: +130/-4
Offline Offline

Posts: 1389


2001.5 Audi S4 Stage 3



I'm sorry this isn't more detailed, but if you ask me some questions about this I can fill it out more. Any specific memory addresses mentioned are in relation to the MBox B5 S4 bin file which is also attached to this post for reference.

1) Find the DTC in the DTC table. The DTC is the Pxxxx value, and it is stored in hexadecimal, since all Pxxxx codes are actually already in hexadecimal.
2) Get the address of the DTC block: (address of the first of the four DTCs in the group).
3) Compute the DTC index: (address of DTC block - address of DTC table) / 8.
4) Find the value containing the DTC error code class for the DTC index: (DTC error code class table address + DTC index).

DTC Table:
There are two versions of the DTC table at addresses 0x812CC4 and 0x81324C, in blocks of four words (8 bytes). 0x812CC4 contains the manufacturer specific P-codes DTCs, 0x81324C contains the universal CARB p-codes. If you are reading DTCs with VCDS or NefMoto, then you are using the manufacturer specific P-code DTCs at 0x812CC4.

DTC Error Code Class Table:
DTC error code class table is at address 0x8106AD, in blocks of one byte.

For example, to find the error class that generates bank 1 post cat O2 sensor heater DTC:
1) 0x812CC4 is the address of the DTC table.
2) The first occurrence of DTC P1114 Bank 1 post cat O2 sensor heater is at address 0x812EDC in the DTC table. (0x812EDC - 0x812CC4) / 8 gives us 0x43 which is the DTC index in the DTC error class table.
3) 0x8106AD is the address of the DTC error code class table.
4) 0x43 is the DTC index of the post cat heater DTC.
5) 0x8106AD + 0x43 = 0x8106F0 => address of the byte value containing the bank 1 post cat O2 sensor heater error class.

An equation I wrote that means something:  Roll Eyes
( ( ( (DTC index) * 4 ) + [0 to 3] ) * 2 ) + ( DTC Table Address ) => DTC OBD Code

DO NOT BLINDLY ZERO ERROR CLASSES! Almost every DTC can be prevented by editing the appropriate maps. This is a last resort, or, alternately, if you wish to generate a DTC which is already disabled.
« Last Edit: October 26, 2015, 05:38:16 PM by nyet » Logged

Remember you have to log in if you want to see the file attachments!
Info or questions, please add to the wiki: http://www.nefariousmotorsports.com/wiki
Follow NefMoto developments on Twitter: http://twitter.com/nefmoto
gremlin
Hero Member
*****

Karma: +179/-7
Offline Offline

Posts: 568


« Reply #1 on: April 28, 2011, 02:29:02 PM »

1) Find the DTC in the DTC table. The DTC is the Pxxxx value, and it is stored in decimal in the file, not in hexadecimal.

A bit correction. Vice versa. Pxxxx value is stored in dump as hexadecimal, not decimal.

There are two versions of the DTC table at addresses 0x812CC4 and 0x81324C, in blocks of four words (8 bytes). 0x812CC4 seems to be what is used, and I'm not sure what the other one is for.

One table - manufacturer specific P-codes, another table - CARB universal P-codes equivalents.
« Last Edit: October 26, 2015, 05:34:44 PM by nyet » Logged
Tony@NefMoto
Administrator
Hero Member
*****

Karma: +130/-4
Offline Offline

Posts: 1389


2001.5 Audi S4 Stage 3


« Reply #2 on: April 28, 2011, 02:32:47 PM »

A bit correction. Vice versa. Pxxxx value is stored in dump as hexadecimal, not decimal.

Right, I forgot that the P values are already hexadecimal. Thanks for the clarifications.

I'll update the original post.
« Last Edit: April 28, 2011, 03:14:45 PM by Tony@NefMoto » Logged

Remember you have to log in if you want to see the file attachments!
Info or questions, please add to the wiki: http://www.nefariousmotorsports.com/wiki
Follow NefMoto developments on Twitter: http://twitter.com/nefmoto
phila_dot
Hero Member
*****

Karma: +170/-11
Offline Offline

Posts: 1709


« Reply #3 on: April 28, 2011, 09:51:54 PM »

Thanks Tony!

The equation at the end seems kinda circular though.
Logged
Tony@NefMoto
Administrator
Hero Member
*****

Karma: +130/-4
Offline Offline

Posts: 1389


2001.5 Audi S4 Stage 3


« Reply #4 on: April 28, 2011, 09:56:54 PM »

The equation at the end seems kinda circular though.

I can't remember what it means either. Wink

I wrote a bunch of notes on this almost a year ago I think. Finally I got around to doing a little write up, and now I don't 100% remember what I was trying to say with that equation.

My entire world revolves around seeing what the assembly code does, and sometimes it is hard to translate this into information for people that don't look at assembly code.
Logged

Remember you have to log in if you want to see the file attachments!
Info or questions, please add to the wiki: http://www.nefariousmotorsports.com/wiki
Follow NefMoto developments on Twitter: http://twitter.com/nefmoto
Goups
Newbie
*

Karma: +3/-0
Offline Offline

Posts: 1


« Reply #5 on: May 19, 2011, 12:43:09 AM »

I will try to clarify the information.

Procedure with WinOLS:

First, please note the following addresses:
DTC Error Code Class Table (8 bit table)   0x106AD
DTC Manufacturer P-codes (16 bits values)   0x12CC4      
DTC CARB P-codes (16 bits values)      0x1324C


For example, to find which error class goes with this code:
17522 - Oxygen (Lambda) Sensor; B1 S2: Internal Resistance too High
        P1114 - 004 - No Signal/Communication

In WinOLS, use the following view: 16 bits, LoHi, FF

Search for an hexadecimal value of 1114 in the first table.

Note: Since it's a Manufacturer P-Code, the error only appear in the first table

You will find 4 occurrences at the following addresses: 0x12EDC, 0x12EDE, 0x12EE0, 0x12EE2

Make the following calculation:
( addresses of the first occurrence - address of the associated DTC table) / 8 = index

( 0x12EDC - 0x12CC4 ) / 8 = 0x43

Now, 0x43 is the index of this DTC in the Error Code Class table.

Determine the address of the value to switch off the DTC

0x106AD + 0x43 = 0x106F0

Since I don't have an S4, I will test it with my 1.8T this weekend.  I will disconnect the 02 sensor and try to disable some codes.
« Last Edit: October 26, 2015, 05:39:14 PM by nyet » Logged
phila_dot
Hero Member
*****

Karma: +170/-11
Offline Offline

Posts: 1709


« Reply #6 on: May 21, 2011, 04:38:56 PM »

It worked !!!   Grin

I disconnect the second O2 sensor.  I got P1114 and P1118.

I disabled them in the file and write the ECU.

Then, I clear both DTC.  They never came back. Even if I plug back the sensor.

I will post the file later.


What about readiness?
Scan it with regular OBD2 scanner or OBD module with VCDS to double check because VCDS shows incorrectly unsupported as ready.

I going to guess that it won't pass readiness. Unless he disabled diagnosis as well. These will only disable the DTC. Any other effects of the actual issue will still occur. For my secondary O2's I have disabled DTC and diagnosis, and unplugged them. Readiness is set and my faulty O2's cannot have any effect unplugged. There is also a codeword to disable secodary correction, but I have not experimented with that yet.
Logged
DJGonzo
Guest
« Reply #7 on: May 21, 2011, 04:41:02 PM »

I going to guess that it won't pass readiness. Unless he disabled diagnosis as well. These will only disable the DTC. Any other effects of the actual issue will still occur. For my secondary O2's I have disabled DTC and diagnosis, and unplugged them. Readiness is set and my faulty O2's cannot have any effect unplugged. There is also a codeword to disable secodary correction, but I have not experimented with that yet.
Did you actually scan with the OBD module on VCDS or an actual OBD2 scanner?
Unless you hacked some routine, yo do not have readiness. Just disabling the diagnosis does nothing. It just sets your emission systems as unsupported.
Logged
phila_dot
Hero Member
*****

Karma: +170/-11
Offline Offline

Posts: 1709


« Reply #8 on: May 21, 2011, 04:44:01 PM »

I going to guess that it won't pass readiness. Unless he disabled diagnosis as well. These will only disable the DTC. Any other effects of the actual issue will still occur. For my secondary O2's I have disabled DTC and diagnosis, and unplugged them. Readiness is set and my faulty O2's cannot have any effect unplugged. There is also a codeword to disable secodary correction, but I have not experimented with that yet.
Did you actually scan with the OBD module on VCDS or an actual OBD2 scanner?
Unless you hacked some routine, yo do not have readiness. Just disabling the diagnosis does nothing. It just sets your emission systems as unsupported.

Just VCDS. Readiness check says "Passed" for all fields.
Logged
DJGonzo
Guest
« Reply #9 on: May 21, 2011, 04:46:11 PM »

Just VCDS. Readiness check says "Passed" for all fields.
Well you didn't set readiness yet  Tongue

I can't believe NOBODY is interested in setting actual readiness.
Logged
phila_dot
Hero Member
*****

Karma: +170/-11
Offline Offline

Posts: 1709


« Reply #10 on: May 21, 2011, 05:03:33 PM »

Just VCDS. Readiness check says "Passed" for all fields.
Well you didn't set readiness yet  Tongue

I can't believe NOBODY is interested in setting actual readiness.

Consider me interested.

How is readiness being "unsupported" interpreted?
Logged
DJGonzo
Guest
« Reply #11 on: May 21, 2011, 05:13:03 PM »

Unsupported means the vehicle isn't "equipped" with said emissions system.
Its part of the OBD2 standard since some cars didn't come with SAI, others didn't come with an EGR valve, etc. When you disable diagnosis or set the "euro-byte" to 0, you are telling the ECU that the car isn't equipped with said emissions equipment and sets it as unsupported/not supported (both terms are interchangeable) at the OBD2 level.
Logged
Jason
Hero Member
*****

Karma: +38/-0
Offline Offline

Posts: 500


Breaks everything!


« Reply #12 on: May 22, 2011, 09:42:05 AM »

I going to guess that it won't pass readiness. Unless he disabled diagnosis as well. These will only disable the DTC. Any other effects of the actual issue will still occur. For my secondary O2's I have disabled DTC and diagnosis, and unplugged them. Readiness is set and my faulty O2's cannot have any effect unplugged. There is also a codeword to disable secodary correction, but I have not experimented with that yet.
Did you actually scan with the OBD module on VCDS or an actual OBD2 scanner?
Unless you hacked some routine, yo do not have readiness. Just disabling the diagnosis does nothing. It just sets your emission systems as unsupported.

Just VCDS. Readiness check says "Passed" for all fields.


FWIW, I recently passed emissions like this.
Logged
DJGonzo
Guest
« Reply #13 on: May 22, 2011, 10:53:18 AM »

FWIW, I recently passed emissions like this.
What state?
Logged
Jason
Hero Member
*****

Karma: +38/-0
Offline Offline

Posts: 500


Breaks everything!


« Reply #14 on: May 22, 2011, 10:57:49 AM »

Arizona.
Logged
Pages: [1] 2 3 ... 9
  Print  
 
Jump to:  

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines Page created in 0.074 seconds with 17 queries. (Pretty URLs adds 0.001s, 0q)