Editor's note: This post has been updated in March 2020 for accuracy and the latest information.
Diagnostic Trouble Codes or OBD2 Trouble Codes are codes that the car’s OBD system uses to notify you about an issue. Each code corresponds to a fault detected in the car. When the vehicle detects an issue, it will activate the corresponding trouble code.
A vehicle stores the trouble code in it’s memory when it detects a component or system that’s not operating within acceptable limits. The code will help you to identify and fix the issue within the car.
Each trouble code consists of one letter and four digits, such as P1234. This blog post will teach you how to interpret the meaning of the codes.
Format of the OBD2 Trouble Codes
System or Category
The OBD2 Trouble Codes are categorised into four different systems.
Body (B-codes) category covers functions that are, generally, inside of the passenger compartment. These functions provide the driver with assistance, comfort, convenience, and safety.
Chassis (C-codes) category covers functions that are, generally, outside of the passenger compartment. These functions typically include mechanical systems such as brakes, steering and suspension.
Powertrain (P-codes) category covers functions that include engine, transmission and associated drivetrain accessories.
Network & Vehicle Integration (U-codes) category covers functions that are shared among computers and systems on the vehicle.
The first letter of the code will mark the system related to the trouble code.
Generic and manufacturer specific codes
The first digit in the code will tell you if the code is a generic or manufacturer specific code.
Codes starting with 0 as the first digit are generic or global codes. It means that they are adopted by all cars that follow the OBD2 standard. These codes are common enough across most manufacturers so that a common code and fault message could be assigned.
Codes starting with 1 as the first digit are manufacturer specific or enhanced codes. It means that these codes are unique to a specific car make or model. These fault codes will not be used generally by a majority of the manufacturers.
The first digit might be also 2 or 3. In this case the type depends on the system. B2xxx and C2xxx codes are manufacturer controlled while B3xxx and C3xxx codes are reserved at the moment. P2xxx codes are generic codes while P3xxx codes are manufacturer controlled. U2xxx codes are manufacturer controller as well as U3xxx codes.
Subsystem or functional area
Previously, the second digit defined the sub-system of the codes. However, the latest document defining the diagnostic trouble codes (J2012 revised in 2016-12) had some changes to this.
According to the document, as the DTC usage has increased with the introduction of new technology to vehicle systems, it was necessary to remove the grouping of DTCs into functional areas.
The last two or nowadays three digits define the actual fault description. These numbers will tell the particular problem and each code is defined separately. There’s no formula to decode these codes automatically.
Luckily, OBD Auto Doctor software contains the fault description for over 18 000 diagnostic trouble codes.
There’s no need to memorize the format of the codes because you can read the codes with the free version of the OBD Auto Doctor car diagnostic software.
If your car has the Check Engine Light on, it means that the vehicle has one or more confirmed OBDII trouble codes active. To learn
OBD2 Trouble Codes or Diagnostic Trouble Codes are defined by SAE (Society of Automobile Engineers). SAE is the organization that specifies the OBD2 standards. These include the one that defines all the generic Diagnostic Trouble Codes (DTCs). Car manufacturers follow these definitions when they assign DTCs for detected errors.
J2012 is the document that defines the OBD2 Trouble Codes. The standard hasn’t been updated for a while but few months ago it got a new revision. The newest revision contained a bunch of new DTCs. These DTCs take new technology such as hybrid vehicles into better consideration, for example.
OBD Auto Doctor contains now all the possible generic OBD2 Trouble Codes that exists. We added total of 3899 new DTCs to the software.
The software contains total of 18193 Trouble Codes. The latest PC & Mac software as well as the Android and iOS apps have all these codes included.
The codes include:
Powertrain: 6631 codes
Network & Vehicle Integration: 1017 codes
Chassis: 363 codes
Body: 165 codes
Rest of the codes are manufacturer specific trouble codes
Multiple Freeze Frames
The latest desktop software version added support for multiple Freeze Frames too. Typically, only one freeze frame is saved. But with newer cars, it’s possible to store multiple freeze frames; one for each trouble code. The software will now read all available frames.
This is a great addition if the vehicle has more than one issue present. You get details from each issue, not only the first one.
We are glad to announce that OBD Auto Doctor supports now four new Bluetooth Low Energy OBD2 dongles. These are Carista, Vgate, LELink and Viecar.
This is especially great news for iPhone users. Because, for technical reasons, iPhones don’t support traditional Bluetooth dongles at all. Now, the latest iPhone app has support for these four new dongles. The app supported already the Kiwi 3 before. iPhone users have now five different Bluetooth dongles to pick from.
Carista, Vgate and Viecar all have a chip containing support for both traditional Bluetooth as well as Bluetooth Low Energy (BLE). This is nice if you want to use the same dongle with your computer too. Not all computers have support for BLE but instead they have traditional Bluetooth. In this case, your computer too can communicate with the dongle. No need for hardware upgrade.
LELink is pure BLE device in similar way to Kiwi 3. It doesn’t have support for traditional Bluetooth.
Carista dongle is a reliable and safe adapter. The dongle has solid quality and small form factor.
Our iPhone app communicates with the dongle using Bluetooth Low Energy. Other OBD Auto Doctor software products use basic Bluetooth connection with it.
Vgate is a small and performing dongle. Vgate has several BLE products that we support. These include iCar Pro, iCar2 and iCar1 among others.
Remember to pick the Bluetooth Low Energy version if you need the iOS support. Other OBD Auto Doctor software uses the normal Bluetooth connection with it. Just like with Carista.
LELink is pure Bluetooth Low Energy adapter.
At the time of publishing this blog post, OBD Auto Doctor has support for it only on iOS and Android. Support on other platforms might be added later.
Viecar has similar housing as Carista but the software stack is not the same.
The adapter works with all OBD Auto Doctor mobile apps. Depending on the platform either basic Bluetooth or Bluetooth Low Energy connection is used.
Where to get them?
We have listed these new and some other compatible dongles in the OBD Adapters & Dongles page. There you will find links to some stores that sell these dongles.
Editor's note: This post has been updated in April 2017: Added LELink and Viecar.
Editor's note: This post has been updated in March 2020 for accuracy and the latest information.
The Check Engine Light indicates that there is a problem with the car. Either the engine is having a problem or the emission control system has detected an issue. This malfunction is indicated by triggering the Check Engine Light (CEL).
The indicator light is sometimes also referred as Malfunction Indicator Light (MIL). This warning light is the main indicator to warn you about problems with the vehicle. Ignoring the warning can cause serious damage to the car.
There is always at least one OBD2 diagnostic trouble code associated with the check engine light. When the vehicle detects an issue, it will set an active trouble code and trigger the CEL. This tutorial will show you how to read the diagnostic trouble codes and reset the Check Engine Light yourself.
Read the Diagnostic Trouble Codes
Reading the diagnostic trouble codes (DTCs) is an important step to start with. The DTCs will tell you the reason for the fault. The codes help you identify the issue and determine the cause. Reading the codes is easy.
Prepare the vehicle for connection
Locate the OBD-II diagnostic connector in your car. Search for 16-pin D-shaped connector that will match the adapter. The connector should be located close to the steering wheel. Typical place for the socket is the compartment under the driver’s side dashboard.
Connect the OBD2 dongle to the connector. Make sure the adapter is tightly attached but don’t use too much force.
Turn ignition key to the ON position. Don’t start the engine because to reset the light, the engine shouldn’t be running. If the dongle has some LEDs, they should start blinking. If the dongle has on/off switch, make sure it is turned on.
Use OBD software to read the codes
Now, launch the OBD Auto Doctor car diagnostic software and connect to the dongle. The connection procedure is a bit different depending on the platform you are using. It also depends on the connection method (Bluetooth, WiFi or USB). Refer to the connection instructions of the platform and dongle.
If you are using the desktop version (PC, Mac or Linux), continue with the step A. Otherwise, proceed to the step B for mobile app (Android or iOS) usage.
A. Read the DTCs with the desktop software
To read the DTCs with the desktop software, navigate to Trouble Codes from the left navigation panel. The software will read and show the information.
Change the tab in the top to switch the view between confirmed, pending and permanent DTCs and freeze frame.
You can also export all the codes and the freeze frame to a text file to keep history of events. While in the Trouble Codes view, click Export and save the file to your computer.
B. Read the DTCs with the mobile app
Reading the DTCs is very simple with the mobile app, just navigate to Trouble Codes tab. The app will fetch the information for you.
To get detailed information, navigate to Diagnostic Trouble Codes and/or Freeze Frame
You can also export all the codes and the freeze frame. While in the Trouble Codes tab, tap the share button from the top header and select the preferred method. This way you can save the diagnostic information for later analysis.
Reset the Check Engine Light
Most of the time the diagnostic trouble codes appear for a good reason. You should investigate the codes and fix the issues causing the errors. Only after fixing, you should proceed to resetting the check engine light. If you haven’t fixed the issues, the same codes might come back immediately.
However, sometimes the error codes occur from a random failure and there’s nothing to fix. In this case, you can reset the check engine light and hope the issue doesn’t come back. If it wasn’t just a random failure, the error returns. Yet, you should ensure that there are no problems with the car every time before doing the reset.
Clear diagnostic information
Resetting the check engine light will clear the diagnostic trouble codes too. It will also clear all other diagnostic information such as stored freeze frame data and status of test results. After the reset, the car may run poorly while it performs re-calibration.
One important thing to note is that resetting the CEL will reset the readiness monitors. This means that your car will not pass emissions inspection immediately after the reset. Because the emissions data is deleted, the smog device will fail your car. Read more about the emissions or readiness monitors and how to get them ready from this tutorial.
After you have read the DTCs, you can continue to clearing the codes and the warning light. Depending whether you are using the desktop software or the mobile app, continue to either step A or step B accordingly.
A. Use Windows, Mac or Linux to reset the Check Engine Light
To reset the Check Engine Light with your computer:
Click the Clear the DTCs button in the Trouble Codes view. Read and acknowledge the information presented.
Now, the reset command is send to the car and the light is cleared. To see illustration of the process, check the short animation below.
B. Use Android or iPhone to reset the Check Engine Light
To reset the Check Engine Light with your mobile device:
Tap the Reset trouble codes and MIL button. Read and acknowledge the information presented.
Now, the reset command is send to the car and the light is cleared. To see short illustration of the process, check the animation below.
Resetting the Check Engine Light is very easy process. More work is required for analysing the root cause of the warning and fixing the possible issues. Luckily, the car itself helps you get started. It provides the Diagnostic Trouble Codes and other diagnostic information about the problem.
Avoid expensive dealer visits by reading the codes and resetting the warning light yourself. It’s a good idea to get the software and dongle right now. Waiting for the actual issues to appear might be too late. Getting yourself familiar with the tools when everything is working fine is a great start.
Avoid battery reset
Resetting the DTCs is sometimes also possible by disconnecting the battery for awhile. We do not recommend this method. New vehicles can have systems that need constant battery voltage. Disconnecting the battery can cause new issues with these systems. For example, the car theft system or infotainment system might be reset. Resetting the DTCs with a OBD tool is the recommend way. That's how the professional mechanics do it and you should too.
Our OBD car app for Android has been a great success this far. Over 600,000 installations and over 1,100 five star reviews prove this success. As the Android platform continues to improve itself, we keep improving the app as well. Just before Christmas we released new and improved OBD Auto Doctor car app.
The previous app version used side navigation as the navigation pattern. This was the recommended way to provide navigation in Android for a long time. It had some problems, though. Some users didn’t learn how to use the navigation and didn’t understand it’s usage. For the new version we redesigned the app navigation. We replaced the old navigation with much simpler and intuitive tab bar navigation. It’s now also one of the official navigation paradigms for Android. It makes the navigation faster because all the main sections are visible at the bottom of the screen.
It wasn’t always easy to find the menu option for resetting the check engine light. Different devices had different ways of opening the menus. Some devices had a physical button and some had an user interface element for opening the menu. Now, the reset button is always visible in the Trouble Codes view. You can’t miss it anymore.
As one of the new features, we replaced the old analog dashboard with with a digital one. The digital dashboard or so called status view of the app is now the starting view. With this view you can track the sensors you want in real-time and with large and easy to read fonts. The speed and RPM are the only fixed sensors in the screen. You can customise all other sensors. Long press any “sensor box” to replace a sensor with any sensor that your car supports.
On-Board Diagnostic Monitors (OBD Mode $06)
Another new feature that we added was the support for On-Board Diagnostic Monitors. These monitors are also know as the OBD mode 06. On-Board Diagnostic Monitors offer professional level diagnostic capabilities. These monitors can give detailed information about misfire counts, for example. They can also give reasons for readiness monitor failures or hints for emerging problems. Not all cars support this mode but luckily most cars do.
OBD Auto Doctor has users all over the world. We’ve analysed the most popular countries and the need for app localisation. As a result, we translated the app user interface to French, German, Russian and Finnish.
The new design and improvements were loved among the first users:
Love it – Great UI and very responsive. Tons of information.
What do you think? Download or update the car app from Google Play.
Then drop us an email or add comment below about how you find the new app. Thanks for your support!