ISO15031 - OBD Protocol
OBD Overview
OBD-II is a diagnostic communication protocol used in automotive electronics for vehicle diagnostics and monitoring, specified in ISO 15031 and other related standards. It is designed to interface with various electronic control units (ECUs) in vehicles through standardized physical and data link layers.
Embien’s OBD-II stack covers all the services defined as part of the ISO 15031 standard specification, enabling diagnostic communication between ECUs and tester/programmer devices. Our OBD_II stack is implemented on top of the DoCAN network layer - defined as ISO 15765 specification.
Some of the salient features of RAPIDSEA OBD_II protocol stack are
Support for both server mode and client mode
ISO-TP layer with up to 4095 bytes transfer support
MISRA-C compliant ANSI C source code
Can be used with or without RTOS
Can support 8, 16, 32, 64-bit CPUs
The implementation is fully configurable and are offered for both server and client mode of operation.

OBD Stack
Supported Services
Following services are supported in the OBD Stack
Service ID |
Service |
Description |
---|---|---|
01h |
Request Current Diagnostic Data |
Retrieve real-time data from the vehicle’s sensors and ECUs. |
02h |
Request Freeze Frame Data |
Access a snapshot of vehicle data at the time a fault was detected. |
03h |
Request Diagnostic Trouble Codes |
Retrieve Diagnostic Trouble Codes (DTCs) that have been stored by the ECU. |
04h |
Clear/Reset Diagnostic Trouble Codes and information |
Clear stored Diagnostic Trouble Codes (DTCs) from the ECU. |
05h |
Request Oxygen Sensor Monitoring Test Results |
Retrieve Diagnostic Trouble Codes (DTCs) that are pending and may not yet be stored. |
06h |
Request On-Board Monitoring Test Results for Specific Monitored Systems |
Retrieve the results of on-board diagnostic tests for various components. |
07h |
Request Emission-Related Diagnostic Trouble Codes Detected During Current or Last Completed Driving Cycle |
Retrieve Diagnostic Trouble Codes (DTCs) that are permanent and cannot be cleared by normal means. |
08h |
Request Control of On-Board System, Test or Component |
Control specific on-board systems or components directly through the diagnostic interface. |
09h |
Request vehicle information |
Request various pieces of vehicle information such as VIN, calibration IDs, etc. |
The implementation is fully configurable and are offered for both server and client mode of operation.
OBD-II Server
OBD-II server is typically implemented in the ECUs so that the client (Tester) can connect to it and perform various diagnostics operations on the same. RAPIDSEA implements the OBD-II server with the following features.
Support for all the services
Modular and extensible design
Portable across architectures
The OBD-II Server stack implementation is covered in detail in the OBD-II Server Stack page.
OBD-II Client
RAPIDSEA implements OBD-II client where different types of services can be performed on the ECUs. APIs are provided to perform services on the server with high level of control and performance. RAPIDSEA implements the OBD-II client with the following features.
Support for all the services
Modular and extensible design
Portable across architectures
The OBD-II client stack implementation is covered in detail in the OBD-II Client Stack page.