Mostly used obd ii protocols

Published: Last Edited:

This essay has been submitted by a student. This is not an example of the work written by our professional essay writers.


There are five OBD-II protocols which are running in current era vehicles. Only one among five protocols runs in any specific vehicle. It depends on the metallic contacts in OBD connector which identify the current running protocol in the vehicle. ISO 9141-2 was the oldest protocol and the CAN (Controller Area Network) is the latest protocol present in modern day vehicles. All these protocols are used to extract data that can be freeze frame data, current running data or diagnostic trouble codes. By using OBD-II protocols it is now very easy to maintain and locate problems in vehicle. All these protocols have different characteristics. These protocols are explained below:-

ISO 9141-2

This protocol runs with the help of K line and L line in the OBD connector. It is the first protocol used in vehicles which communicates serially using K and L line. K line is bi-directional, used for communication in the car. L line is just used for initialization. K line is full duplex means it can send and receive commands at a same time but L line is half duplex means it can simply send data which is used for initialization or waking the system. K line can be use for initializing the system as well which then neglects the use of L line. OBD's 7th pin is composed of K line and 15th pin is composed of L line.

ISO-9141-2 bus system

It can transfer data up to 10,400 bits per second. Although this data rate is very slow but it was a good start to get data from the car using serial communication. This protocol runs on high and low level logic. 0 is represented by a low logic means zero volt and 1 is represented by high logic means 12 volts. Only 2 microseconds delay occurs in changing states i.e. from high logic to low logic or vice versa.

The message packet of this protocol is composed of header byte, some data bytes and error checking byte which is usually called as checksum byte. Message packet of this data cannot be greater than 12 bytes.

Protocol Initialization

Handshaking process initializes this protocol. Certain steps have to follow to initialize this protocol. Following are some steps used to establish communication using ISO 9141-2 protocol.

  • Find pin 7 in the OBD connector which is K line which is used for serial communication.
  • Set baud rate to 5 so that 5 bits per second can be transmitted.
  • Send 0x33 hex value on K line which takes it to OBD port for initializing the communication.
  • Once 0x33 hex value is transmitted, set the baud rate to 10.4 Kbaud means 10400 bits per seconds can be transmitted.
  • OBD port will return the 0x55 hex value on the K line and after this hex value OBD port transmits 0x08 hex value two times on the K line.
  • Once 0x08 is received on the K line, take its compliment and send it back to the OBD port which then returns 0xCC hex value which is the compliment of 0x33.

Above steps initialize the protocol. Once the protocol is initialized, request can be send to the OBD port for receiving data from the vehicle. This is a slow protocol to communicate with the vehicle and error checking is also not available in it but its structure make it reliable so user should wait after sending some command for data from the vehicle.

Controller Area Network (CAN)

Controller Area Network (CAN) is a vehicle wiring bus standard. It is a serial bus protocol. It was introduced by Robert Bosch GmbH in 1986 [3]. Prior to CAN there was a very complex wiring system in cars. The CAN bus has reduced this complexity in wiring and this in return has reduced the vehicle's weight a lot. CAN has now become a vehicle industry standard, because of its reliability and easy troubleshooting. It gives data rates up to 1 Mbps.

CAN have two protocols, CAN 2.0A and CAN 2.0B. CAN 2.0A uses 11 bits identifier with its frames while CAN2.0B uses 29 bits of identifier. The messages are sent on priority basis. The frame with highest priority is sent first while the others wait for their turn. The frames with the lowest integer value have the highest priority. Every frame sent back acknowledgement after reaching the destination.

The CAN protocol uses only two wires for communication. These are names as CAN-High and CAN-Low (CANH & CANL).

All modern day cars having the OBD-II system have CAN bus in them for the communication between different sensors. Although all these do not use CAN protocol for communication. The communication protocol may be any other then CAN, one of the five described above.

Working of CAN

Two types of CAN 2.0A controllers are available. One type of controller sends CAN2.0A messages and receives CAN2.0A message but whenever it receives CAN 2.0B message, it creates an error. Another CAN2.0A controller which is also known as passive CAN2.0B controller sends and receives CAN2.0A messages and if CAN2.0B message come it informs about it and then delete/discard it. CAN 2.0B controller can always identify the CAN 2.0A message.

Sending and receiving messages or data is not based on addressing scheme. Each message which contains specific identifier in it, is broadcast means send to all nodes present in the vehicle. The specific node which acknowledge that identifier, accept that message and start processing and the other nodes discard that message.

There is a chance which can cause messages to collide means two messages sent at a same time. So CAN identifiers also stop the collision of messages as it sets priority of messages. Lower value of CAN message identifier transmits first shows higher priority and higher value of CAN message identifier transmits later and shows lower priority.

Types of Messages/Frames

Four types of messages/frames can be transmitted on CAN bus. Each message has different function and used for different purposes.

Data Frame/Message

Data message has following fields:-

  • Arbitration field
  • The Cyclic Redundancy Check field
  • The acknowledgement field
  • The data field

Arbitration field

It is used for identifying the priority of the message/frame. When two messages transmit at the same time, arbitration field prevents collision among them on the basis of message identifier. It consists of 11 bit identifier and RTR bit in CAN2.0A and has 29 bit identifier and RTR in CAN2.0B.

Cyclic Redundancy Check field

It is used for identifying error which occurs in frames during transmission. It contains 2 bytes of data message.

Acknowledgement field

It is used at the end of the message/frame. It acknowledges the reception of message. If CAN controller receives message accurately, it sends a dominant acknowledgement bit which replaces the recessive acknowledgement bit. It is then checked by transmitter that acknowledgement is dominant or recessive. If acknowledgement bit is dominant, frame is not retransmitted but if acknowledgement bit is recessive, frame is retransmitted.

Data field

It can contain maximum of 8 byte data which includes PID or mode which is used to request specific data.

The Error Frame/Message

It is transmitted when any error in frame is identified by node. This message cause all nodes to broadcast the message to transmitter which automatically request the original transmitter to retransmit the message

The Remote Frame/Message

It is used to extract any data from other node. It is same as data message. The only difference is that it does not contain any data.

The Overload Frame/Message

When transmitter sends commands very quickly to the node, it become busy and transmits the overload frame.

The Bit Fields of Standard CAN and Extended CAN:

Standard CAN

The meaning of the bit fields of Figure 2.3a are:

  1. SOF—the single dominant start of frame (SOF) bit marks the start of a message, and is used to synchronize the nodes on a bus after being idle.
  2. Identifier—The Standard CAN 11-bit identifier sets the priority of the message.
  3. RTR—the single remote transmission request (RTR) bit is dominant when information is required from another node. All nodes receive the request, but the identifier determines the desired node. The responding data is also received by all nodes and used by any nod interested. In this way all data being used in a system is uniform.
  4. IDE—a dominant single identifier extension (IDE) bit means that a standard CAN identifier with no extension is being transmitted.
  5. r0—Reserved bit (for possible use by future standard amendment).
  6. DLC—The 4-bit data length code (DLC) contains the number of bytes of data being transmitted. Data—Up to 64 bits of application data may be transmitted.
  7. CRC—The 16-bit cyclic redundancy check (CRC) contains the `checksum (number of bits transmitted) of the preceding application data for error detection.
  8. ACK—every node receiving an accurate message overwrites this recessive bit in the original message with a dominate bit, indicating an error-free message has been sent. Receiving node detects an error and leaves this bit recessive, it discards the message and the sending node repeats the message after re-arbitration.
  9. EOF—this end-of-frame (EOF) 7-bit field marks the end of a CAN frame (message) and disables bit-stuffing, indicating a stuffing error when dominant. When 5 bits of the same logic level occur in succession during normal operation, a bit of the opposite logic level is stuffed into the data.
  10. IFS—This 7-bit inter-frame space (IFS) contains the amount of time required by the controller to move a correctly received frame to its proper position in a message buffer area.

Extended CAN:

Extended CAN

As shown in Figure 2.3b, the Extended CAN message is the same as the Standard message with the addition of:-

  1. SRR—the substitute remote request (SRR) bit replaces the RTR bit in the standard message location as a placeholder in the extended format.
  2. IDE—a recessive bit in the identifier extension (IDE) indicates that there are more identifier bits to follow. The 18-bit extension follows IDE.
  3. r1—Following the RTR and r0 bits, an additional reserve bit has been included ahead of the
  4. DLC bit.