| Header 1 | Header 2 | Header 3 | Data 1 | Data 2 | Data 3 | Data 4 | Data 5 | Data 6 | Data 7 | CRC |
Note: This is the basic OBDII message frame format required by SAE J1979, and it does not include additional bytes which are neccesary to control the interface. In particular, most messages will have a control byte sent before the OBDII message frame, and for the case of VPW or PWM request messages, an additional byte (the frame number) is sent after the OBDII message frame. These additional bytes vary depending on protocol used, and whether the message is a request sent to the vehicle, or a response from it. For information on these bytes, please study the pdf data sheet carefully.
| Byte 1 (priority/type) | Byte 2 (Tgt address) | Byte 3 (Source address) | |
| Scantool Request | 104 (68 hex) | 106 (6A hex) | 241 (F1 hex) Scantool address |
| Vehicle response | 72 (48 hex) | 107 (6B hex) | ECU address byte |
| Byte 1 (priority/type) | Byte 2 (Tgt address) | Byte 3 (Source address) | |
| Scantool Request | 97 (61 hex) | 106 (6A hex) | 241 (F1 hex) Scantool address |
| Vehicle response | 65 (41 hex) | 107 (6B hex) | ECU address byte |
| Byte 1 (Length byte) | Byte 2 (Tgt address) | Byte 3 (Source address) | |
| Scantool Request | 11LL LLLL binary | 51 (33 hex) | 241 (F1 hex) Scantool address |
| Vehicle response | 10LL LLLL (binary) | 241 (F1 hex) Scantool address | ECU address byte |
MODE 1: This mode is used to obtain current diagnostic data, and is probably the most useful: Number of Trouble codes set, status of on-board tests,vehicle data such as engine RPM, temperatures, ignition advance, speed, air flow rates, whether or not the fuel system is in closed loop operation.
MODE 2: This mode is very similar to mode one, except it pertains to freeze frame data. This is basically the same data as in mode 1, but it was captured and stored at some point in time when a malfunction occurred and a trouble code was set. Many of the PIDs for mode one are not implemented in this mode.
MODE 3: This mode has no associated PIDs. It simply requests all diagnostic trouble codes from the vehicle. There may be more than one response message if there are more trouble codes than will fit in the data bytes of the response message, or if there are more than one ECU computer responding.
MODE4: Mode 4 is also a very simple mode, with no PID bytes. It simply instructs the vehicle to clear all diagnostic trouble codes that may be set.
MODE 5: This is an optional mode which requests results of oxygen sensor test results. There are a number of Test IDs (similar in function to PIDs) which may be used to obtain the results of various tests. Some vehicles do not use this mode, but report the data under mode 6.
MODE 6: This mode is for obtaining test results for non continuously monitored systems. This data is optional, and it is defined by a given vehicle maker if its used.
MODE 7: This mode is an optional mode. If implemented, it is similar to mode 3, which returns trouble codes, but these are codes which may be set after a single driving cycle (also known as "pending" trouble codes). They can be useful for checking the results after repair work.
MODE 8: This mode can be used to request control of an on board system, and is manufacturer defined.
MODE 9: This optional mode is used to report vehicle information such as the VIN number, and possibly calibration information stored in the vehicle ECU.
Other bytes: The remaining data bytes, if used, are for further specification of what data is requested, or if it is a response message, they are the actual data returned from the vehicle. The latter is the usual case.