Permanent DTCs are stored in mode 10 (ten) - MYTH
I have been hearing and reading this a lot lately. So much so I decided to make a myth post about it. The source is aftermarket training. I see it in books, online and in youtube training videos. Here's something I wrote to address the issue and explain hex and why we use it. But first, sing the alphabet song to yourself and then answer the question; did you start singing "A B C D E F G..." or did you start singing "Ten B C D E F G...." I thought so.:)
OBD language, HEX, Decimal, ASCII, Binary.
1 bit has two possible states, on/off, high/low or written as 0/1.
A group of 4 bits (nibble) represents 16 possible combinations:
The order is as written, left to right then top to bottom. Think of it like an odometer where the LSB increments from 0 to 1 then 0 but pushes the next bit to 1 etc.
As more bits are strung together it gets too complicated to write so we group 8 bits together to form a byte and that can be written in a hexadecimal format. 2 nibbles (1 byte) can now be written as 2 hex digits.
Hex represents 16 possible states starting with 0. Since we must use a single digit to represent those 16 states we can’t use “10” after “9”. In hex, we use “A” after “9” and continue to “F” so the 16 states are: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F which represent the 16 digits.
The next group is a byte that is 2 nibbles or 16 X 16 = 256 bits. How do we write 256 possible combinations?
After “F” we then can go to 2 digits by putting a “1” in front of each of the 16 digits so it becomes 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 1A, 1B, 1C, 1D, 1E, 1F and then repeats with a 2 in front etc, etc, etc. The right digit is bits 0 – 3 and the left digit is bits 4 – 7 of an 8 bit byte.
For OBD we use 8 bits (1 byte) and represent that with a 2 digit hex number. To denote that as hex a “$” is generally used preceding the hex, for example; $0A or $10.
$0A and $10 represent 2 totally different bytes. Can you see that?
$0A = …
$10 = …
We could convert hex to decimal and $0A is decimal 10 but $10 is decimal 16. Why not convert to ASCII?
I don’t think that makes much sense and neither does calling $0A “10” or the word “ten”.
In OBD we have what are called service modes. ISO/SAE reserves $00 - $0F for the generic side of the scan tool and service mode $0A is for permanent DTCs. $10 and up is used for Unified Diagnostic System (UDS) which is now used by all manufactures and since $10 is within the UDS structure, it too is defined within UDS so saying service mode 10 and associating that with permanent DTCs just doesn’t work. An engineer will associate service mode 10 to UDS. For more UDS information, see ISO 14229-1.
Finally, how do you say the J2012 DTC "P0AEF"? I hope no one said "P zero ten fourteen fifteen" :)
Good Morning Randy, Could you please post more info on the UDS? ISO 14229-1.? Thank you
Jaxon, I don’t have the background to do UDS justice. It’s much more complex than the legislative side of OBD Which is what I primarily work with. For instance, I could simply state mode $03 if for stored DTCs and mode $04 is for DTC clear on the legislated side (generic) whereas $19 is for DTCs and $14 is for DTC clear on the enhanced or UDS side. However, that leaves out a lot and when you
From a programming standpoint you are absolutely right. The whole reason for calling it mode 10 is because we as humans have been extensively trained to think in decimal, not hex. From a scientific standpoint it is logical and correct to call it mode $0A, but from a human, common person standpoint it more familiar to call it mode 10, just as mode $10 would likewise be commonly referred to as
Right, where does it start and stop? That's what confuses me when I have a technician call me up and in the course of the conversation he starts talking mode "ten". UDS is coming to the legislated side of OBD. What will the training industry do when that happens? The real mode $10 is an important service mode.
J1979 Service modes are all invoked using a one-byte identifier. That identifier is a hex value so $0A comes after $09. When we had to create a Service ID in J1979 for permanent DTCs, $0A was simply the next available number. If we have to add another service mode to J1979, it will be $0B which is the next number after $0A. I agree that most people don't think in hex and we worried about that
Thanks Paul. The issue with not understanding all this is the confusion it can create in I M programs. We already have issues with manufactures storing DTCs in the wrong mode, not clearing correctly, or even MIL commands set to on with no DTCs. Technicians don’t seem to understand how all this is supposed to work let alone when it doesn’t. Changing terminology doesn’t help, it hurts. I
Sir, this is a rather useless gripe, that you have called a "myth" here. How do YOU pronounce Hexidecimal A, if not "ten" ? I have been familiar with the idea of hex since the 80's, but have never heard of new names for the numbers. When the concept of different base numbers is taught in schools we still use the same English language. So it is, and will be pronounced "ten" and is certainly not
Having sat in training when the "Mode $10" was first being showed as coming soon, the rumor mill was flying as it was being discussed, it was often referred to as mode $10, so many refer to it as such. As John Bridgewater stated: it is human nature to follow thru in decimal format mentally when the reality is hexadecimal. Since the final rulings and specifications came after many people 1st
Hi Justin, I went back and dug up an old presentation and class from my hard drive dated 9/2008 and 12/2008 respectively that Jim and I did on mode $0A. I read the handout and I wouldn’t change a word 10 years later. Permanent DTCs were first required in the 2010 model year (phase in) and we used a 2009 Toyota Venza for screen shots because that was the first Toyota that supported mode $0A…
So, a little background may be in order. OBD-related Electronic Control Units (ECUs) are what are called “embedded controllers” which have no human usable interface method (keyboard/mouse/display). They use a more dedicated microcontroller as opposed to those used in Personal Computers. Embedded controllers have traditionally been designed and implemented by specialized hardware/software
So, originally, Bob Augustine asked that I add some about UDS Services here, as a member of ISO WG2. However, I felt the need to preface this discussion with the above background. So, onward… Unified Diagnostic Services (UDS) are defined in the ISO 14229-1 document the same way that Legislated OBD Services are in J1979. In an agreement between ISO and SAE, the Legislated OBD Services were given
Awesome, enjoying this thread. Bob, when you say " as a member of ISO WG2. " is this International Standards Organisation Work Group 2"? Thanks
yes - the "longname" is - TC22/SC31/WG2, Technical Committee 22/Steering Committee 31/Working Group 2 Road Vehicles - Vehicle Diagnostic Protocols. If anyone is interested, the ISO document can be purchased in the US through ANSI.
Nothing like having the big guns in here to support me. 😀 The only item I will bring to your and Paul’s attention is that scan tools do not label modes and pids the same and sometimes they label them incorrectly. So much so I just use the hex to describe what I need from someone. Mode $01 PID $41 is one, Mode $01 PID $1C is another and I use those quite often. So relying on the scan tool to
So not a "useless gripe" then. Thanks for the info Randy, I shall go forth and educate the masses.....
Totally true, I agree - Thanks Randy!!
Yes, unfortunately, scan tools have not been as well regulated as vehicles, as CARB has always stuck to their guns about only regulating the "point of emissions." SAE does have documents to "help" scan tool manufacturers do a better job: J1978 - roughly equivalent to J1979 and J1699-2 - equivalent to J1699-3. As you know, some of my I/M investigations have uncovered several tool anomalies…
G'day Bob, how can I obtain copies of these SAE documents: J1978 - roughly equivalent to J1979 and J1699-2 - equivalent to J1699-3. ? Thanks in advance
J1978 - sae.org/standards/cont… (yes, the latest version is from 2002 - why we desperately need to update). J1699-2 - sae.org/standards/cont… J1699-4 - sae.org/standards/cont… I hope this helps...