Diagnostic Services
Diagnostic services are functions offered by Servers (ECUs) to a Client via the UDS protocol. Each service is identified by a Service Identifier (SID) value.
Service Identifier
The Service Identifier (SID) is the first byte of the payload (Application Data, A_Data) in each diagnostic message.
The SID value determines whether the message is a request message or a diagnostic response. It also defines the general purpose and format of the diagnostic message.
List of all Service Identifier (SID) values and their application:
0x00 - not applicable, reserved by ISO 14229-1
0x01-0x0F - ISO 15031-5/SAE J1979 specific services
0x10 - DiagnosticSessionControl service request
0x11 - ECUReset service request
0x12-0x13 - reserved by ISO 14229-1
0x14 - ClearDiagnosticInformation service request
0x15-0x18 - reserved by ISO 14229-1
0x19 - ReadDTCInformation service request
0x1A-0x21 - reserved by ISO 14229-1
0x22 - ReadDataByIdentifier service request
0x23 - ReadMemoryByAddress service request
0x24 - ReadScalingDataByIdentifier service request
0x25-0x26 - reserved by ISO 14229-1
0x27 - SecurityAccess service request
0x28 - CommunicationControl service request
0x29 - Authentication service request
0x2A - ReadDataByPeriodicIdentifier service request
0x2B - reserved by ISO 14229-1
0x2C - DynamicallyDefineDataIdentifier service request
0x2D - reserved by ISO 14229-1
0x2E - WriteDataByIdentifier service request
0x2F - InputOutputControlByIdentifier service request
0x30 - reserved by ISO 14229-1
0x31 - RoutineControl service request
0x32-0x33 - reserved by ISO 14229-1
0x34 - RequestDownload service request
0x35 - RequestUpload service request
0x36 - TransferData service request
0x37 - RequestTransferExit service request
0x38 - RequestFileTransfer service request
0x39-0x3C - reserved by ISO 14229-1
0x3D - WriteMemoryByAddress service request
0x3E - TesterPresent service request
0x3F - not applicable, reserved by ISO 14229-1
0x40 - not applicable, reserved by ISO 14229-1
0x41-0x4F - ISO 15031-5/SAE J1979 specific services
0x50 - positive response to DiagnosticSessionControl service
0x51 - positive response to ECUReset service
0x52-0x53 - reserved by ISO 14229-1
0x54 - positive response to ClearDiagnosticInformation service
0x55-0x58 - reserved by ISO 14229-1
0x59 - positive response to ReadDTCInformation service
0x5A-0x61 - reserved by ISO 14229-1
0x62 - positive response to ReadDataByIdentifier service
0x63 - positive response to ReadMemoryByAddress service
0x64 - positive response to ReadScalingDataByIdentifier service
0x65-0x66 - reserved by ISO 14229-1
0x67 - positive response to SecurityAccess service
0x68 - positive response to CommunicationControl service
0x69 - positive response to Authentication service
0x6A - positive response to ReadDataByPeriodicIdentifier service
0x6B - reserved by ISO 14229-1
0x6C - positive response to DynamicallyDefineDataIdentifier service
0x6D - reserved by ISO 14229-1
0x6E - positive response to WriteDataByIdentifier service
0x6F - positive response to InputOutputControlByIdentifier service
0x70 - reserved by ISO 14229-1
0x71 - positive response to RoutineControl service
0x72-0x73 - reserved by ISO 14229-1
0x74 - positive response to RequestDownload service
0x75 - positive response to RequestUpload service
0x76 - positive response to TransferData service
0x77 - positive response to RequestTransferExit service
0x78 - positive response to RequestFileTransfer service
0x79-0x7C - reserved by ISO 14229-1
0x7D - positive response to WriteMemoryByAddress service
0x7E - positive response to TesterPresent service
0x7F - negative response service identifier
0x80-0x82 - not applicable, reserved by ISO 14229-1
0x83 - AccessTimingParameter service request (withdrawn in ISO 14229-1:2020)
0x84 - SecuredDataTransmission service request
0x85 - ControlDTCSetting service request
0x86 - ResponseOnEvent service request
0x87 - LinkControl service request
0x88 - reserved by ISO 14229-1
0x89-0xB9 - not applicable, reserved by ISO 14229-1
0xBA-0xBE - system supplier specific service requests
0xBF-0xC2 - not applicable, reserved by ISO 14229-1
0xC3 - positive response to AccessTimingParameter service (withdrawn in ISO 14229-1:2020)
0xC4 - positive response to SecuredDataTransmission service
0xC5 - positive response to ControlDTCSetting service
0xC6 - positive response to ResponseOnEvent service
0xC7 - positive response to LinkControl service
0xC8 - reserved by ISO 14229-1
0xC9-0xF9 - not applicable, reserved by ISO 14229-1
0xFA-0xFE - positive responses to system supplier specific requests
0xFF - not applicable, reserved by ISO 14229-1
Request Service Identifier
Request Service Identifier is a subtype of SID. It is the first byte of each request message and identifies the diagnostic service for which the message is relevant.
Note
The 2nd most significant bit (bit 6) of all Request Service Identifiers is 0.
Response Service Identifier
Response Service Identifier (RSID) is a subtype of SID. It is the first byte of each response message and identifies the diagnostic service for which the message is relevant.
Note
The 2nd most significant bit (bit 6) of all Response Service Identifiers is 1.
DiagnosticSessionControl (0x10)
DiagnosticSessionControl service is used to change diagnostic sessions in the server(s). In each diagnostic session a different set of diagnostic services (and/or functionalities) is enabled in the server. Server shall always be in exactly one diagnostic session.
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x10 |
DiagnosticSessionControl |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
diagnosticSessionType |
7 (b[6-0]) |
0x00-0x7F |
Diagnostic Session to enter 0x00: reserved 0x01: defaultSession 0x02: programmingSession 0x03: extendedDiagnosticSession 0x04: safetySystemDiagnosticSession 0x05-0x3F: reserved 0x40-0x5F: vehicle manufacturer specific 0x60-0x7E: system supplier specific 0x7F: reserved |
|||
Positive Response Format
P2Server_max field is provided directly in milliseconds.
P2*Server_max field is encoded in units of 10 ms, so it must be multiplied by 10 to obtain the value in milliseconds.
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x50 |
DiagnosticSessionControl |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
diagnosticSessionType |
7 (b[6-0]) |
0x00-0x7F |
Echo of diagnosticSessionType value from the request |
|||
sessionParameterRecord |
P2Server_max |
32 |
16 (b[31-16]) |
0x0000-0xFFFF |
Maximum P2 value used by the server in this session formula: y = x [ms] |
Always |
P2*Server_max |
16 (b[15-0]) |
0x0000-0xFFFF |
Maximum P2* value used by the server in this session formula: y = 10 * x [ms] |
|||
ECUReset (0x11)
ECUReset service is used by the client to request that the server perform a reset. The server, after receiving this request, performs the specified type of reset (either before or after transmitting the positive response).
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x11 |
ECUReset |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
resetType |
7 (b[6-0]) |
0x00-0x7F |
Type of reset to perform 0x00: reserved 0x01: hardReset 0x02: keyOffOnReset 0x03: softReset 0x04: enableRapidPowerShutDown 0x05: disableRapidPowerShutDown 0x06-0x3F: reserved 0x40-0x5F: vehicle manufacturer specific 0x60-0x7E: system supplier specific 0x7F: reserved |
|||
Positive Response Format
The powerDownTime field defines the minimum time (in seconds) that the server requires to remain powered down before
it can be safely restarted.
A value of 0xFF indicates that either the time requirement is not available or a failure occurred.
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x51 |
ECUReset |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
resetType |
7 (b[6-0]) |
0x00-0x7F |
Echo of resetType value from the request |
|||
powerDownTime |
8 |
0x00-0xFF |
Time required by the server to complete the reset sequence 0x00-0xFE: down time in seconds (0-254) 0xFF: failure or time unavailable formula: y = x [s] |
If resetType equals 0x04 (enableRapidPowerShutDown) |
||
ClearDiagnosticInformation (0x14)
ClearDiagnosticInformation service is used by the client to clear Diagnostic Trouble Codes (DTCs) and related data stored in one or more server memories.
Request Format
ISO 14229-1:2020
The optional MemorySelection field is introduced to allow clearing diagnostic information from a specific DTC memory (e.g. one of the sub-systems).
Name |
Bit Length |
Value |
Description |
Present |
|---|---|---|---|---|
SID |
8 |
0x14 |
ClearDiagnosticInformation |
Always |
groupOfDTC |
24 |
0x000000-0xFFFFFF |
Group of DTCs to be cleared 0xFFFF33: Emissions-system group 0xFFFFD0: Safety-system group 0xFFFFFE: VOBD system group 0xFFFFFF: all |
Always |
MemorySelection |
8 |
0x00-0xFF |
Specifies DTC memory to clear |
Optional |
ISO 14229-1:2013
Name |
Bit Length |
Value |
Description |
Present |
|---|---|---|---|---|
SID |
8 |
0x14 |
ClearDiagnosticInformation |
Always |
groupOfDTC |
24 |
0x000000-0xFFFFFF |
Group of DTCs to be cleared 0xFFFF33: Emissions-system group 0xFFFFD0: Safety-system group 0xFFFFFE: VOBD system group 0xFFFFFF: all |
Always |
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
|---|---|---|---|---|
RSID |
8 |
0x54 |
ClearDiagnosticInformation |
Always |
ReadDTCInformation (0x19)
ReadDTCInformation service allows the client to request current Diagnostic Trouble Code (DTC) information from one or more servers within the vehicle.
ISO 14229-1 defines the following DTC report types (values of the reportType parameter):
0x02: reportDTCByStatusMask
0x0A: reportSupportedDTC
0x0B: reportFirstTestFailedDTC
0x0C: reportFirstConfirmedDTC
0x0F: reportMirrorMemoryDTCByStatusMask (withdrawn in ISO 14229-1:2020)
0x10: reportMirrorMemoryDTCExtDataRecordByDTCNumber (withdrawn in ISO 14229-1:2020)
0x11: reportNumberOfMirrorMemoryDTCByStatusMask (withdrawn in ISO 14229-1:2020)
0x12: reportNumberOfEmissionsOBDDTCByStatusMask (withdrawn in ISO 14229-1:2020)
0x13: reportEmissionsOBDDTCByStatusMask (withdrawn in ISO 14229-1:2020)
0x1A: reportSupportedDTCExtDataRecord (introduced in ISO 14229-1:2020)
0x56: reportDTCInformationByDTCReadinessGroupIdentifier (introduced in ISO 14229-1:2020)
reportNumberOfDTCByStatusMask (0x01)
This sub-function allows the client to request the number of stored DTCs that match a specific status mask (DTCStatusMask). It is typically used as a lightweight mechanism to determine how many DTCs fulfill a given diagnostic condition without retrieving the DTC values themselves.
Request Format
The DTCStatusMask parameter specifies which DTC Status bits should be used as a filter when matching DTCs. A value of 0x00 means that no status bits are selected. Since no DTC can match this by definition, the result will always be a count of 0.
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x19 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
reportType |
7 (b[6-0]) |
0x01 |
reportNumberOfDTCByStatusMask |
|||
DTCStatusMask |
8 |
0x00-0xFF |
DTC status mask to use for DTCs matching |
Always |
||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x59 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
reportType |
7 (b[6-0]) |
0x01 |
reportNumberOfDTCByStatusMask |
|||
DTCStatusAvailabilityMask |
8 |
0x00-0xFF |
DTC Status bits supported by the server |
Always |
||
DTCFormatIdentifier |
8 |
0x00-0xFF |
DTC Format used by the server 0x00: SAE J2012-DA DTC Format 00 0x01: ISO 14229-1 DTC Format 0x02: SAE J1939-73 DTC Format 0x03: ISO 11992-4 DTC Format 0x04: SAE J2012-DA DTC Format 04 |
Always |
||
DTCCount |
16 |
0x0000-0xFFFF |
Number of DTCs that match the criteria |
Always |
||
reportDTCByStatusMask (0x02)
This sub-function can be used by the client to request a list of all DTCs stored in
the server’s memory that match a specific status mask (DTCStatusMask).
A DTC is included in the response if (DTC Status & DTCStatusMask) != 0.
This sub-function provides the client with both the DTC values and their corresponding status information for
all DTCs that satisfy the given mask.
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x19 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
reportType |
7 (b[6-0]) |
0x02 |
reportDTCByStatusMask |
|||
DTCStatusMask |
8 |
0x00-0xFF |
DTC status mask to use for DTCs matching |
Always |
||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x59 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
reportType |
7 (b[6-0]) |
0x02 |
reportDTCByStatusMask |
|||
DTCStatusAvailabilityMask |
8 |
0x00-0xFF |
DTC Status bits supported by the ECU |
Always |
||
DTC and DTCStatus |
DTC |
32 * n |
24 |
0x000000-0xFFFFFF |
DTC#1 |
If at least one DTC matches the criteria |
DTCStatus |
8 |
0x00-0xFF |
Status of DTC#1 |
|||
… |
… |
|||||
DTC |
24 |
0x000000-0xFFFFFF |
DTC#n |
If at least n DTCs matches the criteria |
||
DTCStatus |
8 |
0x00-0xFF |
Status of DTC#n |
|||
reportDTCSnapshotIdentification (0x03)
This sub-function can be used by the client to request identification numbers of all stored DTC snapshot records.
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x19 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
reportType |
7 (b[6-0]) |
0x03 |
reportDTCSnapshotIdentification |
Always |
||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x59 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
reportType |
7 (b[6-0]) |
0x03 |
reportDTCSnapshotIdentification |
|||
DTC and DTCSnapshotRecordNumber |
DTC |
32 * n |
24 |
0x000000-0xFFFFFF |
DTC#1 |
If at least one DTC Snapshot Record is available |
DTCSnapshotRecordNumber |
8 |
0x00-0xFF |
Number of DTC Snapshot Record reported for DTC#1 |
|||
… |
… |
|||||
DTC |
24 |
0x000000-0xFFFFFF |
DTC#n |
If at least n DTC Snapshot Records are available |
||
DTCSnapshotRecordNumber |
8 |
0x00-0xFF |
Number of DTC Snapshot Record reported for DTC#n |
|||
reportDTCSnapshotRecordByDTCNumber (0x04)
This sub-function can be used by the client to request snapshot data for a specific DTC (DTC) and snapshot record number (DTCSnapshotRecordNumber).
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x19 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
reportType |
7 (b[6-0]) |
0x04 |
reportDTCSnapshotRecordByDTCNumber |
|||
DTC |
24 |
0x000000-0xFFFFFF |
DTC number |
Always |
||
DTCSnapshotRecordNumber |
8 |
0x00-0xFF |
Number of requested DTC Snapshot Record(s) 0x00: reserved (legislated purposes) 0x01-0xFE: specific snapshot record 0xFF: all snapshot records |
Always |
||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x59 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
reportType |
7 (b[6-0]) |
0x04 |
reportDTCSnapshotRecordByDTCNumber |
|||
DTC and DTCStatus |
DTC |
32 |
24 (b[31-8]) |
0x000000-0xFFFFFF |
Considered DTC |
Always |
DTCStatus |
8 (b[7-0]) |
0x00-0xFF |
Current status of the DTC |
|||
DTCSnapshotRecordNumber#1 |
8 |
0x00-0xFF |
Number of DTCSnapshotRecord#1 |
If at least one DTCSnapshotRecord is available for the DTC |
||
DIDCount#1 |
8 |
0x00-0xFF |
Number of DIDs stored in DTCSnapshotRecord#1 (equals m) |
|||
DID#1_1 |
16 |
0x0000-0xFFFF |
DID#1 that is part of DTCSnapshotRecord#1 |
|||
DID#1_1 data |
multiple of 8 |
Data stored under DID#1_1 |
||||
… |
||||||
DID#1_m |
16 |
0x0000-0xFFFF |
DID#m that is part of DTCSnapshotRecord#1 |
|||
DID#1_m data |
multiple of 8 |
Data stored under DID#1_m |
||||
… |
||||||
DTCSnapshotRecordNumber#n |
8 |
0x00-0xFF |
Number of DTCSnapshotRecord#n |
If requested for multiple DTCSnapshotRecords AND at least n DTCSnapshotRecords are available for the DTC |
||
DIDCount#n |
8 |
0x00-0xFF |
Number of DIDs stored in DTCSnapshotRecord#n (equals k) |
|||
DID#n_1 |
16 |
0x0000-0xFFFF |
DID#1 that is part of DTCSnapshotRecord#n |
|||
DID#n_1 data |
multiple of 8 |
Data stored under DID#n_1 |
||||
… |
||||||
DID#n_k |
16 |
0x0000-0xFFFF |
DID#k that is part of DTCSnapshotRecord#n |
|||
DID#n_k data |
multiple of 8 |
Data stored under DID#n_k |
||||
reportDTCStoredDataByRecordNumber (0x05)
This sub-function can be used by the client to request stored data for a specific record (DTCStoredDataRecordNumber).
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x19 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
reportType |
7 (b[6-0]) |
0x05 |
reportDTCStoredDataByRecordNumber |
|||
DTCStoredDataRecordNumber |
8 |
0x00-0xFF |
Number of requested DTC Stored Data Record(s) 0x00: reserved (legislated purposes) 0x01-0xFE: specific stored data record 0xFF: all records |
Always |
||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x59 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
reportType |
7 (b[6-0]) |
0x05 |
reportDTCStoredDataByRecordNumber |
|||
DTCStoredDataRecordNumber#1 |
8 |
0x00-0xFF |
Number of DTCStoredDataRecord#1 |
Always |
||
DTC and DTCStatus#1 |
DTC |
32 |
24 (b[31-8]) |
0x000000-0xFFFFFF |
DTC for which DTCStoredDataRecord#1 was reported |
If at least one DTCStoredDataRecord is available |
DTCStatus |
8 (b[7-0]) |
0x00-0xFF |
Current status of the DTC |
|||
DIDCount#1 |
8 |
0x00-0xFF |
Number of DIDs stored in DTCStoredDataRecord#1 (equals m) |
|||
DID#1_1 |
16 |
0x0000-0xFFFF |
DID#1 that is part of DTCStoredDataRecord#1 |
|||
DID#1_1 data |
multiple of 8 |
Data stored under DID#1_1 |
||||
… |
||||||
DID#1_m |
16 |
0x0000-0xFFFF |
DID#m that is part of DTCStoredDataRecord#1 |
|||
DID#1_m data |
multiple of 8 |
Data stored under DID#1_m |
||||
… |
||||||
DTCStoredDataRecordNumber#n |
8 |
0x00-0xFF |
Number of DTCStoredDataRecord#n |
If requested for multiple DTCStoredDataRecords AND at least n DTCStoredDataRecords are available |
||
DTC and DTCStatus#n |
DTC |
32 |
24 (b[31-8]) |
0x000000-0xFFFFFF |
DTC for which DTCStoredDataRecord#n was reported |
|
DTCStatus |
8 (b[7-0]) |
0x00-0xFF |
Current status of the DTC |
|||
DIDCount#n |
8 |
0x00-0xFF |
Number of DIDs stored in DTCStoredDataRecord#n (equals k) |
|||
DID#n_1 |
16 |
0x0000-0xFFFF |
DID#1 that is part of DTCStoredDataRecord#n |
|||
DID#n_1 data |
multiple of 8 |
Data stored under DID#n_1 |
||||
… |
||||||
DID#n_k |
16 |
0x0000-0xFFFF |
DID#n that is part of DTCStoredDataRecord#n |
|||
DID#n_k data |
multiple of 8 |
Data stored under DID#n_k |
||||
reportDTCExtDataRecordByDTCNumber (0x06)
This sub-function can be used by the client to request extended data records for a specific DTC (DTC) and record number (DTCExtDataRecordNumber).
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x19 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
reportType |
7 (b[6-0]) |
0x06 |
reportDTCExtDataRecordByDTCNumber |
|||
DTC |
24 |
0x000000-0xFFFFFF |
DTC for which extended data are requested |
Always |
||
DTCExtDataRecordNumber |
8 |
0x00-0xFF |
Number of requested DTC Extended Data Record(s) 0x00: reserved 0x01-0x8F: vehicle manufacturer specific record 0x90-0x9F: regulated emissions OBD record 0xA0-0xEF: regulated record 0xF0-0xFD: reserved 0xFE: all regulated emissions OBD records 0xFF: all extended data records |
Always |
||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x59 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
reportType |
7 (b[6-0]) |
0x06 |
reportDTCExtDataRecordByDTCNumber |
|||
DTC and DTCStatus |
DTC |
32 |
24 (b[31-8]) |
0x000000-0xFFFFFF |
Considered DTC |
Always |
DTCStatus |
8 (b[7-0]) |
0x00-0xFF |
Current status of the DTC |
|||
DTCExtDataRecordNumber#1 |
8 |
0x00-0xFF |
Number of DTCExtDataRecord#1 |
If at least one DTCExtDataRecord is available for the DTC |
||
DTCExtDataRecord#1 |
multiple of 8 |
Data stored in DTCExtDataRecord#1 |
||||
… |
||||||
DTCExtDataRecordNumber#n |
8 |
0x00-0xFF |
Number of DTCExtDataRecord#n |
If requested for multiple DTCExtDataRecords AND at least n DTCExtDataRecords are available for the DTC |
||
DTCExtDataRecord#n |
multiple of 8 |
Data stored in DTCExtDataRecord#n |
||||
reportNumberOfDTCBySeverityMaskRecord (0x07)
This sub-function can be used by the client to request the number of DTCs that match a given severity mask (DTCSeverityMask) and status mask (DTCStatusMask).
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x19 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
reportType |
7 (b[6-0]) |
0x07 |
reportNumberOfDTCBySeverityMaskRecord |
|||
DTCSeverityMask |
8 |
0x00-0xFF |
Severity mask to use for DTC matching |
Always |
||
DTCStatusMask |
8 |
0x00-0xFF |
DTC status mask to use for DTC matching |
Always |
||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x59 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
reportType |
7 (b[6-0]) |
0x07 |
reportNumberOfDTCBySeverityMaskRecord |
|||
DTCStatusAvailabilityMask |
8 |
0x00-0xFF |
DTC Status bits supported by the ECU |
Always |
||
DTCFormatIdentifier |
8 |
0x00-0xFF |
DTC Format used by the server 0x00: SAE J2012-DA DTC Format 00 0x01: ISO 14229-1 DTC Format 0x02: SAE J1939-73 DTC Format 0x03: ISO 11992-4 DTC Format 0x04: SAE J2012-DA DTC Format 04 |
Always |
||
DTCCount |
16 |
0x0000-0xFFFF |
Number of DTCs that match criteria |
Always |
||
reportDTCBySeverityMaskRecord (0x08)
This sub-function can be used by the client to request all DTCs that match a given severity mask (DTCSeverityMask) and status mask (DTCStatusMask).
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x19 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
reportType |
7 (b[6-0]) |
0x08 |
reportDTCBySeverityMaskRecord |
|||
DTCSeverityMask |
8 |
0x00-0xFF |
Severity mask to use for DTC matching |
Always |
||
DTCStatusMask |
8 |
0x00-0xFF |
DTC status mask to use for DTC matching |
Always |
||
Positive Response Format
See also
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x59 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
reportType |
7 (b[6-0]) |
0x08 |
reportDTCBySeverityMaskRecord |
|||
DTCStatusAvailabilityMask |
8 |
0x00-0xFF |
DTC Status bits supported by the ECU |
Always |
||
DTCSeverity, DTCFunctionalUnit, DTC and DTCStatus |
DTCSeverity |
48 * n |
8 |
0x00-0xFF |
Severity of DTC#1 |
If at least one DTC matches the criteria |
DTCFunctionalUnit |
8 |
0x00-0xFF |
Functional Unit of DTC#1 |
|||
DTC |
24 |
0x000000-0xFFFFFF |
DTC#1 |
|||
DTCStatus |
8 |
0x00-0xFF |
Status of DTC#1 |
|||
… |
… |
|||||
DTCSeverity |
8 |
0x00-0xFF |
Severity of DTC#n |
If at least n DTCs matches the criteria |
||
DTCFunctionalUnit |
8 |
0x00-0xFF |
Functional Unit of DTC#n |
|||
DTC |
24 |
0x000000-0xFFFFFF |
DTC#n |
|||
DTCStatus |
8 |
0x00-0xFF |
Status of DTC#n |
|||
reportSeverityInformationOfDTC (0x09)
This sub-function can be used by the client to request severity and functional unit information for a specific DTC (DTC).
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x19 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
reportType |
7 (b[6-0]) |
0x09 |
reportSeverityInformationOfDTC |
|||
DTC |
24 |
0x000000-0xFFFFFF |
DTC number |
Always |
||
Positive Response Format
See also
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x59 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
reportType |
7 (b[6-0]) |
0x09 |
reportSeverityInformationOfDTC |
|||
DTCStatusAvailabilityMask |
8 |
0x00-0xFF |
DTC Status bits supported by the ECU |
Always |
||
DTCSeverity, DTCFunctionalUnit, DTC and DTCStatus |
DTCSeverity |
48 |
8 (b[47-40]) |
0x00-0xFF |
Severity of the DTC |
If provided DTC is supported |
DTCFunctionalUnit |
8 (b[39-32]) |
0x00-0xFF |
Functional Unit of the DTC |
|||
DTC |
24 (b[31-8]) |
0x000000-0xFFFFFF |
DTC number |
|||
DTCStatus |
8 (b[7-0]) |
0x00-0xFF |
Current status of the DTC |
|||
reportSupportedDTC (0x0A)
This sub-function can be used by the client to request a list of all DTCs supported by the server.
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x19 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
reportType |
7 (b[6-0]) |
0x0A |
reportSupportedDTC |
|||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x59 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
reportType |
7 (b[6-0]) |
0x0A |
reportSupportedDTC |
|||
DTCStatusAvailabilityMask |
8 |
0x00-0xFF |
DTC Status bits supported by the ECU |
Always |
||
DTC and DTCStatus |
DTC |
32 * n |
24 |
0x000000-0xFFFFFF |
DTC#1 |
If at least one DTC is supported |
DTCStatus |
8 |
0x00-0xFF |
Status of DTC#1 |
|||
… |
… |
|||||
DTC |
24 |
0x000000-0xFFFFFF |
DTC#n |
If at least n DTCs are supported |
||
DTCStatus |
8 |
0x00-0xFF |
Status of DTC#n |
|||
reportFirstTestFailedDTC (0x0B)
This sub-function can be used by the client to request the first DTC that failed a test (had testFailed DTC Status bit set) since the last Clearing Diagnostic Information.
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x19 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
reportType |
7 (b[6-0]) |
0x0B |
reportFirstTestFailedDTC |
|||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x59 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
reportType |
7 (b[6-0]) |
0x0B |
reportFirstTestFailedDTC |
|||
DTCStatusAvailabilityMask |
8 |
0x00-0xFF |
DTC Status bits supported by the ECU |
Always |
||
DTC and DTCStatus |
DTC |
32 |
24 (b[31-8]) |
0x000000-0xFFFFFF |
DTC number |
If testFailed was set for at least one DTC |
DTCStatus |
8 (b[7-0]) |
0x00-0xFF |
Current status of the DTC |
|||
reportFirstConfirmedDTC (0x0C)
This sub-function can be used by the client to request the first confirmed DTC (had confirmedDTC DTC Status bit set) since the last Clearing Diagnostic Information.
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x19 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
reportType |
7 (b[6-0]) |
0x0C |
reportFirstConfirmedDTC |
|||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x59 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
reportType |
7 (b[6-0]) |
0x0C |
reportFirstConfirmedDTC |
|||
DTCStatusAvailabilityMask |
8 |
0x00-0xFF |
DTC Status bits supported by the ECU |
Always |
||
DTC and DTCStatus |
DTC |
32 |
24 (b[31-8]) |
0x000000-0xFFFFFF |
DTC number |
If confirmedDTC was set for at least one DTC |
DTCStatus |
8 (b[7-0]) |
0x00-0xFF |
Current status of the DTC |
|||
reportMostRecentTestFailedDTC (0x0D)
This sub-function can be used by the client to request the most recent DTC that failed a test (had testFailed DTC Status bit set) since the last Clearing Diagnostic Information.
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x19 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
reportType |
7 (b[6-0]) |
0x0D |
reportMostRecentTestFailedDTC |
|||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x59 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
reportType |
7 (b[6-0]) |
0x0D |
reportMostRecentTestFailedDTC |
|||
DTCStatusAvailabilityMask |
8 |
0x00-0xFF |
DTC Status bits supported by the ECU |
Always |
||
DTC and DTCStatus |
DTC |
32 |
24 (b[31-8]) |
0x000000-0xFFFFFF |
DTC number |
If testFailed was set for at least one DTC |
DTCStatus |
8 (b[7-0]) |
0x00-0xFF |
Current status of the DTC |
|||
reportMostRecentConfirmedDTC (0x0E)
This sub-function can be used by the client to request the most recent confirmed DTC (had confirmedDTC DTC Status bit set) since the last Clearing Diagnostic Information.
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x19 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
reportType |
7 (b[6-0]) |
0x0E |
reportMostRecentConfirmedDTC |
|||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x59 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
reportType |
7 (b[6-0]) |
0x0E |
reportMostRecentConfirmedDTC |
|||
DTCStatusAvailabilityMask |
8 |
0x00-0xFF |
DTC Status bits supported by the ECU |
Always |
||
DTC and DTCStatus |
DTC |
32 |
24 (b[31-8]) |
0x000000-0xFFFFFF |
DTC number |
If confirmedDTC was set for at least one DTC |
DTCStatus |
8 (b[7-0]) |
0x00-0xFF |
Current status of the DTC |
|||
reportMirrorMemoryDTCByStatusMask (0x0F)
This sub-function can be used by the client to request all DTCs in the DTC mirror memory that match a given status mask (DTCStatusMask).
Warning
Withdrawn in ISO 14229-1:2020
Note
The DTC mirror memory is an optional error memory that is not affected by ClearDiagnosticInformation (0x14) service.
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x19 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
reportType |
7 (b[6-0]) |
0x0F |
reportMirrorMemoryDTCByStatusMask |
|||
DTCStatusMask |
8 |
0x00-0xFF |
DTC status mask to use for DTC matching |
Always |
||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x59 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
reportType |
7 (b[6-0]) |
0x0F |
reportMirrorMemoryDTCByStatusMask |
|||
DTCStatusAvailabilityMask |
8 |
0x00-0xFF |
DTC Status bits supported by the ECU |
Always |
||
DTC and DTCStatus |
DTC |
32 * n |
24 |
0x000000-0xFFFFFF |
DTC#1 |
If at least one DTC matches the criteria |
DTCStatus |
8 |
0x00-0xFF |
Status of DTC#1 |
|||
… |
… |
|||||
DTC |
24 |
0x000000-0xFFFFFF |
DTC#n |
If at least n DTCs matches the criteria |
||
DTCStatus |
8 |
0x00-0xFF |
Status of DTC#n |
|||
reportMirrorMemoryDTCExtDataRecordByDTCNumber (0x10)
This sub-function can be used by the client to request extended data records (DTCExtDataRecordNumber) for a specific DTC (DTC) from the DTC mirror memory.
Warning
Withdrawn in ISO 14229-1:2020
Note
The DTC mirror memory is an optional error memory that is not affected by ClearDiagnosticInformation (0x14) service.
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x19 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
reportType |
7 (b[6-0]) |
0x10 |
reportMirrorMemoryDTCExtDataRecordByDTCNumber |
|||
DTC |
24 |
0x000000-0xFFFFFF |
DTC for which extended data are requested |
Always |
||
DTCExtDataRecordNumber |
8 |
0x00-0xFF |
Number of requested DTC Extended Data Record(s) 0x00: reserved 0x01-0x8F: vehicle manufacturer specific record 0x90-0x9F: regulated emissions OBD record 0xA0-0xEF: regulated record 0xF0-0xFD: reserved 0xFE: all regulated emissions OBD records 0xFF: all extended data records |
Always |
||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x59 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
reportType |
7 (b[6-0]) |
0x10 |
reportMirrorMemoryDTCExtDataRecordByDTCNumber |
|||
DTC and DTCStatus |
DTC |
32 |
24 (b[31-8]) |
0x000000-0xFFFFFF |
Considered DTC |
Always |
DTCStatus |
8 (b[7-0]) |
0x00-0xFF |
Current status of the DTC |
|||
DTCExtDataRecordNumber#1 |
8 |
0x00-0xFF |
Number of DTCExtDataRecord#1 |
If at least one DTCExtDataRecord is available for the DTC |
||
DTCExtDataRecord#1 |
multiple of 8 |
Data stored in DTCExtDataRecord#1 |
||||
… |
||||||
DTCExtDataRecordNumber#n |
8 |
0x00-0xFF |
Number of DTCExtDataRecord#n |
If requested for multiple DTCExtDataRecords AND at least n DTCExtDataRecords are available for the DTC |
||
DTCExtDataRecord#n |
multiple of 8 |
Data stored in DTCExtDataRecord#n |
||||
reportNumberOfMirrorMemoryDTCByStatusMask (0x11)
This sub-function can be used by the client to request the number of DTCs in the DTC mirror memory that match a given status mask (DTCStatusMask).
Warning
Withdrawn in ISO 14229-1:2020
Note
The DTC mirror memory is an optional error memory that is not affected by ClearDiagnosticInformation (0x14) service.
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x19 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
reportType |
7 (b[6-0]) |
0x11 |
reportNumberOfMirrorMemoryDTCByStatusMask |
|||
DTCStatusMask |
8 |
0x00-0xFF |
DTC status mask to use for DTCs matching |
Always |
||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x59 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
reportType |
7 (b[6-0]) |
0x11 |
reportNumberOfMirrorMemoryDTCByStatusMask |
|||
DTCStatusAvailabilityMask |
8 |
0x00-0xFF |
DTC Status bits supported by the server |
Always |
||
DTCFormatIdentifier |
8 |
0x00-0xFF |
DTC Format used by the server 0x00: SAE J2012-DA DTC Format 00 0x01: ISO 14229-1 DTC Format 0x02: SAE J1939-73 DTC Format 0x03: ISO 11992-4 DTC Format 0x04: SAE J2012-DA DTC Format 04 |
Always |
||
DTCCount |
16 |
0x0000-0xFFFF |
Number of DTCs that match the criteria |
Always |
||
reportNumberOfEmissionsOBDDTCByStatusMask (0x12)
This sub-function can be used by the client to request the number of emissions-related OBD DTCs that match a given status mask (DTCStatusMask).
Warning
Withdrawn in ISO 14229-1:2020
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x19 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
reportType |
7 (b[6-0]) |
0x12 |
reportNumberOfEmissionsOBDDTCByStatusMask |
|||
DTCStatusMask |
8 |
0x00-0xFF |
DTC status mask to use for DTC matching |
Always |
||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x59 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
reportType |
7 (b[6-0]) |
0x12 |
reportNumberOfEmissionsOBDDTCByStatusMask |
|||
DTCStatusAvailabilityMask |
8 |
0x00-0xFF |
DTC Status bits supported by the server |
Always |
||
DTCFormatIdentifier |
8 |
0x00-0xFF |
DTC Format used by the server 0x00: SAE J2012-DA DTC Format 00 0x01: ISO 14229-1 DTC Format 0x02: SAE J1939-73 DTC Format 0x03: ISO 11992-4 DTC Format 0x04: SAE J2012-DA DTC Format 04 |
Always |
||
DTCCount |
16 |
0x0000-0xFFFF |
Number of DTCs that match the criteria |
Always |
||
reportEmissionsOBDDTCByStatusMask (0x13)
This sub-function can be used by the client to request a list of emissions-related OBD DTCs that match a given status mask (DTCStatusMask).
Warning
Withdrawn in ISO 14229-1:2020
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x19 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
reportType |
7 (b[6-0]) |
0x13 |
reportEmissionsOBDDTCByStatusMask |
|||
DTCStatusMask |
8 |
0x00-0xFF |
DTC status mask to use for DTCs matching |
Always |
||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x59 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
reportType |
7 (b[6-0]) |
0x13 |
reportEmissionsOBDDTCByStatusMask |
|||
DTCStatusAvailabilityMask |
8 |
0x00-0xFF |
DTC Status bits supported by the ECU |
Always |
||
DTC and DTCStatus |
DTC |
32 * n |
24 |
0x000000-0xFFFFFF |
DTC#1 |
If at least one DTC matches the criteria |
DTCStatus |
8 |
0x00-0xFF |
Status of DTC#1 |
|||
… |
… |
|||||
DTC |
24 |
0x000000-0xFFFFFF |
DTC#n |
If at least n DTCs matches the criteria |
||
DTCStatus |
8 |
0x00-0xFF |
Status of DTC#n |
|||
reportDTCFaultDetectionCounter (0x14)
This sub-function can be used by the client to request fault detection counters for DTCs that have not been reported or confirmed (no DTC Status bits set).
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x19 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
reportType |
7 (b[6-0]) |
0x14 |
reportDTCFaultDetectionCounter |
|||
Positive Response Format
See also
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x59 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
reportType |
7 (b[6-0]) |
0x14 |
reportDTCFaultDetectionCounter |
|||
DTC and DTCFaultDetectionCounter |
DTC |
32 * n |
24 |
0x000000-0xFFFFFF |
DTC#1 |
If at least one DTC has positive value of DTCFaultDetectionCounter |
DTCFaultDetectionCounter |
8 |
0x00-0xFF |
Value of fault detection counter for DTC#1 |
|||
… |
… |
|||||
DTC |
24 |
0x000000-0xFFFFFF |
DTC#n |
If at least n DTCs has positive value of DTCFaultDetectionCounter |
||
DTCFaultDetectionCounter |
8 |
0x00-0xFF |
Value of fault detection counter for DTC#n |
|||
reportDTCWithPermanentStatus (0x15)
This sub-function can be used by the client to request a list of DTCs with permanent status (once reported, never cleared or healed).
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x19 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
reportType |
7 (b[6-0]) |
0x15 |
reportDTCWithPermanentStatus |
|||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x59 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
reportType |
7 (b[6-0]) |
0x15 |
reportDTCWithPermanentStatus |
|||
DTCStatusAvailabilityMask |
8 |
0x00-0xFF |
DTC Status bits supported by the ECU |
Always |
||
DTC and DTCStatus |
DTC |
32 * n |
24 |
0x000000-0xFFFFFF |
DTC#1 |
If at least one DTC is supported |
DTCStatus |
8 |
0x00-0xFF |
Status of DTC#1 |
|||
… |
… |
|||||
DTC |
24 |
0x000000-0xFFFFFF |
DTC#n |
If at least n DTCs are supported |
||
DTCStatus |
8 |
0x00-0xFF |
Status of DTC#n |
|||
reportDTCExtDataRecordByRecordNumber (0x16)
This sub-function can be used by the client to request extended data records (DTCExtDataRecordNumber) regardless of the DTC number.
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x19 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
reportType |
7 (b[6-0]) |
0x16 |
reportDTCExtDataRecordByRecordNumber |
|||
DTCExtDataRecordNumber |
8 |
0x00-0xFF |
Number of requested DTC Extended Data Record(s) 0x00: reserved 0x01-0x8F: vehicle manufacturer specific record 0x90-0x9F: regulated emissions OBD record 0xA0-0xEF: regulated record 0xF0-0xFD: reserved 0xFE: all regulated emissions OBD records 0xFF: all extended data records |
Always |
||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x59 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
reportType |
7 (b[6-0]) |
0x16 |
reportDTCExtDataRecordByRecordNumber |
|||
DTCExtDataRecordNumber |
8 |
0x00-0xEF |
Identification number of DTCExtDataRecord |
Always |
||
DTC and DTCStatus#1 |
DTC |
32 |
24 (b[31-8]) |
0x000000-0xFFFFFF |
DTC#1 |
If at least one DTCExtDataRecord is available |
DTCStatus |
8 (b[7-0]) |
0x00-0xFF |
Status of DTC#1 |
|||
DTCExtDataRecord#1 |
multiple of 8 |
Extended Data #1 |
||||
… |
||||||
DTC and DTCStatus#n |
DTC |
32 |
24 (b[31-8]) |
0x000000-0xFFFFFF |
DTC#n |
If at least n DTCExtDataRecords are available |
DTCStatus |
8 (b[7-0]) |
0x00-0xFF |
Status of DTC#n |
|||
DTCExtDataRecord#n |
multiple of 8 |
Extended Data #n |
||||
reportUserDefMemoryDTCByStatusMask (0x17)
This sub-function can be used by the client to request the number of DTCs that match a given status mask (DTCStatusMask) in a selected memory (MemorySelection).
MemorySelection allows reading DTC related information from a specific DTC memory (e.g. one of the sub-systems).
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x19 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
reportType |
7 (b[6-0]) |
0x17 |
reportUserDefMemoryDTCByStatusMask |
|||
DTCStatusMask |
8 |
0x00-0xFF |
DTC status mask to use for DTCs matching |
Always |
||
MemorySelection |
8 |
0x00-0xFF |
Specifies DTC memory |
Always |
||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x59 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
reportType |
7 (b[6-0]) |
0x17 |
reportUserDefMemoryDTCByStatusMask |
|||
MemorySelection |
8 |
0x00-0xFF |
Echo of MemorySelection value from the request |
Always |
||
DTCStatusAvailabilityMask |
8 |
0x00-0xFF |
DTC Status bits supported by the ECU |
Always |
||
DTC and DTCStatus |
DTC |
32 * n |
24 |
0x000000-0xFFFFFF |
DTC#1 |
If at least one DTC matches the criteria |
DTCStatus |
8 |
0x00-0xFF |
Status of DTC#1 |
|||
… |
… |
|||||
DTC |
24 |
0x000000-0xFFFFFF |
DTC#n |
If at least n DTCs matches the criteria |
||
DTCStatus |
8 |
0x00-0xFF |
Status of DTC#n |
|||
reportUserDefMemoryDTCSnapshotRecordByDTCNumber (0x18)
This sub-function can be used by the client to request snapshot records (DTCSnapshotRecordNumber) for a specific DTC (DTC) in a selected memory (MemorySelection).
MemorySelection allows reading DTC related information from a specific DTC memory (e.g. one of the sub-systems).
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x19 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
reportType |
7 (b[6-0]) |
0x18 |
reportUserDefMemoryDTCSnapshotRecordByDTCNumber |
|||
DTC |
24 |
0x000000-0xFFFFFF |
DTC number |
Always |
||
DTCSnapshotRecordNumber |
8 |
0x00-0xFF |
Number of requested DTC Snapshot Record(s) 0x00: reserved (legislated purposes) 0x01-0xFE: specific snapshot record 0xFF: all snapshot records |
Always |
||
MemorySelection |
8 |
0x00-0xFF |
Specifies DTC memory |
Always |
||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x59 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
reportType |
7 (b[6-0]) |
0x18 |
reportUserDefMemoryDTCSnapshotRecordByDTCNumber |
|||
MemorySelection |
8 |
0x00-0xFF |
Echo of MemorySelection value from the request |
Always |
||
DTC and DTCStatus |
DTC |
32 |
24 (b[31-8]) |
0x000000-0xFFFFFF |
Considered DTC |
Always |
DTCStatus |
8 (b[7-0]) |
0x00-0xFF |
Current status of the DTC |
Always |
||
DTCSnapshotRecordNumber#1 |
8 |
0x00-0xFF |
Number of DTCSnapshotRecord#1 |
If at least one DTCSnapshotRecord is available for the DTC |
||
DIDCount#1 |
8 |
0x00-0xFF |
Number of DIDs stored in DTCSnapshotRecord#1 (equals m) |
|||
DID#1_1 |
16 |
0x0000-0xFFFF |
DID#1 that is part of DTCSnapshotRecord#1 |
|||
DID#1_1 data |
multiple of 8 |
Data stored under DID#1_1 |
||||
… |
||||||
DID#1_m |
16 |
0x0000-0xFFFF |
DID#m that is part of DTCSnapshotRecord#1 |
|||
DID#1_m data |
multiple of 8 |
Data stored under DID#1_m |
||||
… |
||||||
DTCSnapshotRecordNumber#n |
8 |
0x00-0xFF |
Number of DTCSnapshotRecord#n |
If requested for multiple DTCSnapshotRecords AND at least n DTCSnapshotRecords are available for the DTC |
||
DIDCount#n |
8 |
0x00-0xFF |
Number of DIDs stored in DTCSnapshotRecord#n (equals k) |
|||
DID#n_1 |
16 |
0x0000-0xFFFF |
DID#1 that is part of DTCSnapshotRecord#n |
|||
DID#n_1 data |
multiple of 8 |
Data stored under DID#n_1 |
||||
… |
||||||
DID#n_k |
16 |
0x0000-0xFFFF |
DID#k that is part of DTCSnapshotRecord#n |
|||
DID#n_k data |
multiple of 8 |
Data stored under DID#n_k |
||||
reportUserDefMemoryDTCExtDataRecordByDTCNumber (0x19)
This sub-function can be used by the client to request extended data records (DTCExtDataRecordNumber) for a specific DTC (DTC) in a selected memory (MemorySelection).
MemorySelection allows reading DTC related information from a specific DTC memory (e.g. one of the sub-systems).
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x19 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
reportType |
7 (b[6-0]) |
0x19 |
reportUserDefMemoryDTCExtDataRecordByDTCNumber |
|||
DTC |
24 |
0x000000-0xFFFFFF |
DTC for which extended data are requested |
Always |
||
DTCExtDataRecordNumber |
8 |
0x00-0xFF |
Number of requested DTC Extended Data Record(s) 0x00: reserved 0x01-0x8F: vehicle manufacturer specific record 0x90-0x9F: regulated emissions OBD record 0xA0-0xEF: regulated record 0xF0-0xFD: reserved 0xFE: all regulated emissions OBD records 0xFF: all extended data records |
Always |
||
MemorySelection |
8 |
0x00-0xFF |
Specifies DTC memory |
Always |
||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x59 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
reportType |
7 (b[6-0]) |
0x19 |
reportUserDefMemoryDTCExtDataRecordByDTCNumber |
|||
MemorySelection |
8 |
0x00-0xFF |
Echo of MemorySelection value from the request |
Always |
||
DTC and DTCStatus |
DTC |
32 |
24 (b[31-8]) |
0x000000-0xFFFFFF |
Considered DTC |
Always |
DTCStatus |
8 (b[7-0]) |
0x00-0xFF |
Current status of the DTC |
Always |
||
DTCExtDataRecordNumber#1 |
8 |
0x00-0xFF |
Number of DTCExtDataRecord#1 |
If at least one DTCExtDataRecord is available for the DTC |
||
DTCExtDataRecord#1 |
multiple of 8 |
Data stored in DTCExtDataRecord#1 |
||||
… |
||||||
DTCExtDataRecordNumber#n |
8 |
0x00-0xFF |
Number of DTCExtDataRecord#n |
If requested for multiple DTCExtDataRecords AND at least n DTCExtDataRecords are available for the DTC |
||
DTCExtDataRecord#n |
multiple of 8 |
Data stored in DTCExtDataRecord#n |
||||
reportSupportedDTCExtDataRecord (0x1A)
This sub-function can be used by the client to request the list of DTCs that support a given extended data record number (DTCExtDataRecordNumber).
Warning
Introduced in ISO 14229-1:2020
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x19 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
reportType |
7 (b[6-0]) |
0x1A |
reportSupportedDTCExtDataRecord |
|||
DTCExtDataRecordNumber |
8 |
0x00-0xFD |
Number of requested DTC Extended Data Record 0x00: reserved 0x01-0x8F: vehicle manufacturer specific record 0x90-0x9F: regulated emissions OBD record 0xA0-0xEF: regulated record 0xF0-0xFD: reserved |
Always |
||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x59 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
reportType |
7 (b[6-0]) |
0x1A |
reportSupportedDTCExtDataRecord |
|||
DTCStatusAvailabilityMask |
8 |
0x00-0xFF |
DTC Status bits supported by the ECU |
Always |
||
DTCExtDataRecordNumber |
8 |
0x00-0xFD |
Echo of DTCExtDataRecordNumber value from the request |
Always |
||
DTC and DTCStatus |
DTC |
32 * n |
24 |
0x000000-0xFFFFFF |
DTC#1 |
If at least one DTC supports ExtDataRecord |
DTCStatus |
8 |
0x00-0xFF |
Status of DTC#1 |
|||
… |
… |
|||||
DTC |
24 |
0x000000-0xFFFFFF |
DTC#n |
If at least n DTCs supports ExtDataRecord |
||
DTCStatus |
8 |
0x00-0xFF |
Status of DTC#n |
|||
reportWWHOBDDTCByMaskRecord (0x42)
This sub-function can be used by the client to request WWH-OBD DTCs and their associated status and severity information, filtered by a status mask (DTCStatusMask) and a severity mask (DTCSeverityMaskRecord).
See also
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x19 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
reportType |
7 (b[6-0]) |
0x42 |
reportWWHOBDDTCByMaskRecord |
|||
FunctionalGroupIdentifier |
8 |
0x00-0xFF |
Functional group to use for DTC matching 0x00-0x32: reserved 0x33: emissions-system group 0x34-0xCF: reserved 0xD0: safety-system group 0xD1-0xDF: legislative system group 0xE0-0xFD: reserved 0xFE: VOBD system 0xFF: reserved |
Always |
||
DTCSeverityMaskRecord |
8 |
0x00-0xFF |
DTC severity mask to use for DTC matching |
Always |
||
DTCStatusMask |
8 |
0x00-0xFF |
DTC status mask to use for DTC matching |
Always |
||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x59 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
reportType |
7 (b[6-0]) |
0x42 |
reportWWHOBDDTCByMaskRecord |
|||
FunctionalGroupIdentifier |
8 |
0x00-0xFF |
Echo of FunctionalGroupIdentifier value from the request |
Always |
||
DTCStatusAvailabilityMask |
8 |
0x00-0xFF |
DTC Status bits supported by the ECU |
Always |
||
DTCSeverityAvailabilityMask |
8 |
0x00-0xFF |
DTC Severity bits supported by the ECU |
Always |
||
DTCFormatIdentifier |
8 |
0x00-0xFF |
DTC Format used by the server 0x00: SAE J2012-DA DTC Format 00 0x01: ISO 14229-1 DTC Format 0x02: SAE J1939-73 DTC Format 0x03: ISO 11992-4 DTC Format 0x04: SAE J2012-DA DTC Format 04 |
Always |
||
DTCSeverity, DTC and DTCStatus |
DTCSeverity |
40 * n |
8 |
0x00-0xFF |
Severity of DTC#1 |
If at least one DTC matches the criteria |
DTC |
24 |
0x000000-0xFFFFFF |
DTC#1 |
|||
DTCStatus |
8 |
0x00-0xFF |
Status of DTC#1 |
|||
… |
… |
|||||
DTCSeverity |
8 |
0x00-0xFF |
Severity of DTC#n |
If at least n DTCs matches the criteria |
||
DTC |
24 |
0x000000-0xFFFFFF |
DTC#n |
|||
DTCStatus |
8 |
0x00-0xFF |
Status of DTC#n |
|||
reportWWHOBDDTCWithPermanentStatus (0x55)
This sub-function can be used by the client to request WWH-OBD DTCs with permanent status.
See also
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x19 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
reportType |
7 (b[6-0]) |
0x55 |
reportWWHOBDDTCWithPermanentStatus |
|||
FunctionalGroupIdentifier |
8 |
0x00-0xFF |
Functional group to use for DTC matching 0x00-0x32: reserved 0x33: emissions-system group 0x34-0xCF: reserved 0xD0: safety-system group 0xD1-0xDF: legislative system group 0xE0-0xFD: reserved 0xFE: VOBD system 0xFF: reserved |
Always |
||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x59 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
reportType |
7 (b[6-0]) |
0x55 |
reportWWHOBDDTCWithPermanentStatus |
|||
FunctionalGroupIdentifier |
8 |
0x00-0xFF |
Echo of FunctionalGroupIdentifier value from the request |
Always |
||
DTCStatusAvailabilityMask |
8 |
0x00-0xFF |
DTC Status bits supported by the ECU |
Always |
||
DTCFormatIdentifier |
8 |
0x00-0xFF |
DTC Format used by the server 0x00: SAE J2012-DA DTC Format 00 0x01: ISO 14229-1 DTC Format 0x02: SAE J1939-73 DTC Format 0x03: ISO 11992-4 DTC Format 0x04: SAE J2012-DA DTC Format 04 |
Always |
||
DTC and DTCStatus |
DTC |
32 * n |
24 |
0x000000-0xFFFFFF |
DTC#1 |
If at least one DTC matches the criteria |
DTCStatus |
8 |
0x00-0xFF |
Status of DTC#1 |
|||
… |
… |
|||||
DTC |
24 |
0x000000-0xFFFFFF |
DTC#n |
If at least n DTCs matches the criteria |
||
DTCStatus |
8 |
0x00-0xFF |
Status of DTC#n |
|||
reportDTCInformationByDTCReadinessGroupIdentifier (0x56)
This sub-function can be used by the client to request OBD DTCs that belong to a given readiness group (DTCReadinessGroupIdentifier).
Warning
Introduced in ISO 14229-1:2020
See also
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x19 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
reportType |
7 (b[6-0]) |
0x56 |
reportDTCInformationByDTCReadinessGroupIdentifier |
|||
FunctionalGroupIdentifier |
8 |
0x00-0xFF |
Functional group to use for DTC matching 0x00-0x32: reserved 0x33: emissions-system group 0x34-0xCF: reserved 0xD0: safety-system group 0xD1-0xDF: legislative system group 0xE0-0xFD: reserved 0xFE: VOBD system 0xFF: reserved |
Always |
||
DTCReadinessGroupIdentifier |
8 |
0x00-0xFF |
Specifies DTC readiness group |
Always |
||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x59 |
ReadDTCInformation |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
reportType |
7 (b[6-0]) |
0x56 |
reportDTCInformationByDTCReadinessGroupIdentifier |
|||
FunctionalGroupIdentifier |
8 |
0x00-0xFF |
Echo of FunctionalGroupIdentifier value from the request |
Always |
||
DTCStatusAvailabilityMask |
8 |
0x00-0xFF |
DTC Status bits supported by the ECU |
Always |
||
DTCFormatIdentifier |
8 |
0x00-0xFF |
DTC Format used by the server 0x00: SAE J2012-DA DTC Format 00 0x01: ISO 14229-1 DTC Format 0x02: SAE J1939-73 DTC Format 0x03: ISO 11992-4 DTC Format 0x04: SAE J2012-DA DTC Format 04 |
Always |
||
DTCReadinessGroupIdentifier |
8 |
0x00-0xFF |
Echo of DTCReadinessGroupIdentifier value from the request |
Always |
||
DTC and DTCStatus |
DTC |
32 * n |
24 |
0x000000-0xFFFFFF |
DTC#1 |
If at least one DTC matches the criteria |
DTCStatus |
8 |
0x00-0xFF |
Status of DTC#1 |
|||
… |
… |
|||||
DTC |
24 |
0x000000-0xFFFFFF |
DTC#n |
If at least n DTCs matches the criteria |
||
DTCStatus |
8 |
0x00-0xFF |
Status of DTC#n |
|||
ReadDataByIdentifier (0x22)
ReadDataByIdentifier service allows the client to request data record values from the server identified by one or more DataIdentifiers (DIDs).
Request Format
Request contains at least one DataIdentifier (DID).
Name |
Bit Length |
Value |
Description |
Present |
|
|---|---|---|---|---|---|
SID |
8 |
0x22 |
ReadDataByIdentifier |
Always |
|
DID |
16 * n |
16 |
0x0000-0xFFFF |
DID#1 |
Always |
… |
|||||
16 |
0x0000-0xFFFF |
DID#n |
Optional |
||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
|---|---|---|---|---|
RSID |
8 |
0x62 |
ReadDataByIdentifier |
Always |
DID#1 |
16 |
0x0000-0xFFFF |
DID#1 from the request message |
Always |
DID#1 data |
multiple of 8 |
Data stored under DID#1 |
||
… |
||||
DID#n |
16 |
0x0000-0xFFFF |
DID#n from the request message |
If at least n DIDs were requested |
DID#n data |
multiple of 8 |
Data stored under DID#n |
||
ReadMemoryByAddress (0x23)
ReadMemoryByAddress service allows the client to request server’s memory data stored under provided memory address.
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x23 |
ReadMemoryByAddress |
Always |
||
addressAndLengthFormatIdentifier |
memorySizeLength |
8 |
4 (b[7-4]) |
0x1-0xF |
Number of bytes to use for memorySize |
Always |
memoryAddressLength |
4 (b[3-0]) |
0x1-0xF |
Number of bytes to use for memoryAddress |
|||
memoryAddress |
8 * memoryAddressLength |
Starting address in the server’s memory |
Always |
|||
memorySize |
8 * memorySizeLength |
Number of bytes to read |
Always |
|||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
|---|---|---|---|---|
RSID |
8 |
0x63 |
ReadMemoryByAddress |
Always |
data |
8 * memorySize |
Data read from server’s memory |
Always |
ReadScalingDataByIdentifier (0x24)
ReadScalingDataByIdentifier service allows the client to request the scaling information associated with a Data Identifier (DID). Scaling data provides information required to correctly interpret the actual data value, such as: - data encoding type (e.g. integer, floating-point, ASCII), - units and formats, - conversion formulas and coefficients, - bit mappings, and other interpretation details.
Request Format
Name |
Bit Length |
Value |
Description |
Present |
|---|---|---|---|---|
SID |
8 |
0x24 |
ReadScalingDataByIdentifier |
Always |
DID |
16 |
0x0000-0xFFFF |
Data Identifier |
Always |
Positive Response Format
Due to the complexity and variability of the scalingByteExtension, multiple formats are defined based on the scalingByte value. Only the format applicable to the returned scalingByte value will be included in the response.
Warning
In ISO 14229-1 the coefficients C0..Cm “follow” formulaIdentifier and are part of scalingByteExtension. In the translator (due to code design limitations), scalingByteExtension contains only formulaIdentifier Data Record. Each coefficient is represented as a separate, subsequent Data Record named Ci#n (where i = 0..m), each encoded as:
Exponent: 4 bits (signed) Mantissa: 12 bits (signed)
Practically, you will see:
scalingByte#n → type*=0x9 (formula), *numberOfBytesOfParameter scalingByteExtension#n → formulaIdentifier C0#n → Exponent, Mantissa C1#n → Exponent, Mantissa
This layout is equivalent to the ISO definition and is used to simplify conditional rendering and parsing. Coefficients are not nested under scalingByteExtension in the decoded tree; they follow it as sibling fields.
Note
Parameter numberOfBytesOfParameter shall equal 0 when the scalingByte type equals 0x9 [formula] or 0xA [unit/format].
Name |
Bit Length |
Value |
Description |
Present |
|||
|---|---|---|---|---|---|---|---|
RSID |
8 |
0x64 |
ReadScalingDataByIdentifier |
Always |
|||
DID |
16 |
0x0000-0xFFFF |
Echo of DID value from the request |
Always |
|||
scalingByte#1 |
type |
8 |
4 (b[7-4]) |
0x0-0xF |
Type of parameter#1 0x0: unSignedNumeric 0x1: signedNumeric 0x2: bitMappedReportedWithOutMask 0x3: bitMappedReportedWithMask 0x4: BinaryCodedDecimal 0x5: stateEncodedVariable 0x6: ASCII 0x7: signedFloatingPoint 0x8: packet 0x9: formula 0xA: unit/format 0xB: stateAndConnectionType 0xC-0xF: reserved |
Always |
|
numberOfBytesOfParameter |
4 (b[3-0]) |
0x0-0xF |
Number of parameter#1’s bytes |
||||
scalingByteExtension#1 |
validityMask |
8 * scalingByte#1*[*numberOfBytesOfParameter] |
Bits supported by the server’s application. |
If scalingByte#1*[*type] equals 0x2 (bitMappedReportedWithOutMask) |
|||
scalingByteExtension#1 |
formulaIdentifier |
8 |
0x00-0xFF |
Formula used for parameter#1’s value calculation 0x00: y = C0 * x + C1 0x01: y = C0 * (x + C1) 0x02: y = C0 / (x + C1) + C2 0x03: y = x / C0 + C1 0x04: y = (x + C0) / C1 0x05: y = (x + C0) / C1 + C2 0x06: y = C0 * x 0x07: y = x / C0 0x08: y = x + C0 0x09: y = x * C0 / C1 0x0A-0x7F: ISO/SAE reserved 0x80-0xFF: Vehicle manufacturer specific |
If scalingByte#1*[*type] equals 0x9 (formula) |
||
C0#1 |
Exponent |
16 |
4 (b[15-12]) |
0x0-0xF |
C0’s parameter exponent value encoded as signed integer value |
||
Mantissa |
12 (b[11-0]) |
0x000-0xFFF |
C0’s parameter mantissa value encoded as signed integer value |
||||
… |
|||||||
Cm#1 |
Exponent |
16 |
4 (b[15-12]) |
0x0-0xF |
Cm’s parameter exponent value encoded as signed integer value |
If scalingByteExtension#1*[*formulaIdentifier] uses at least m constants |
|
Mantissa |
12 (b[11-0]) |
0x000-0xFFF |
Cm’s parameter mantissa value encoded as signed integer value |
||||
scalingByteExtension#1 |
unit/format |
8 |
0x00-0xFF |
Unit or prefix used by parameter#1 0x00: No unit, no prefix 0x01: Meter [m] - length 0x02: Foot [ft] - length 0x03: Inch [in] - length 0x04: Yard [yd] - length 0x05: Mile (English) [mi] - length 0x06: Gram [g] - mass 0x07: Ton (metric) [t] - mass 0x08: Second [s] - time 0x09: Minute [min] - time 0x0A: Hour [h] - time 0x0B: Day [d] - time 0x0C: Year [y] - time 0x0D: Ampere [A] - current 0x0E: Volt [V] - voltage 0x0F: Coulomb [C] - electric charge 0x10: Ohm [Ω] - resistance 0x11: Farad [F] - capacitance 0x12: Henry [H] - inductance 0x13: Siemens [S] - electric conductance 0x14: Weber [Wb] - magnetic flux 0x15: Tesla [T] - magnetic flux density 0x16: Kelvin [K] - thermodynamic temperature 0x17: Celsius [°C] - thermodynamic temperature 0x18: Fahrenheit [°F] - thermodynamic temperature 0x19: Candela [cd] - luminous intensity 0x1A: Radian [rad] - plane angle 0x1B: Degree [°] - plane angle 0x1C: Hertz [Hz] - frequency 0x1D: Joule [J] - energy 0x1E: Newton [N] - force 0x1F: Kilopond [kp] - force 0x20: Pound force [lbf] - force 0x21: Watt [W] - power 0x22: Horse power (metric) [hk] - power 0x23: Horse power (UK and US) [hp] - power 0x24: Pascal [Pa] - pressure 0x25: Bar [bar] - pressure 0x26: Atmosphere [atm] - pressure 0x27: Pound force per square inch [psi] - pressure 0x28: Becquerel [Bq] - radioactivity 0x29: Lumen [Lm] - light flux 0x2A: Lux [lx] - illuminance 0x2B: Litre [l] - volume 0x2C: Gallon (British) - volume 0x2D: Gallon (US liq) - volume 0x2E: Cubic inch [cu in] - volume 0x2F: Meter per second [m/s] - speed 0x30: Kilometer per hour [km/h] - speed 0x31: Mile per hour [mph] - speed 0x32: Revolutions per second [rps] - angular velocity 0x33: Revolutions per minute [rpm] - angular velocity 0x34: Counts 0x35: Percent [%] 0x36: Milligram per stroke [mg/stroke] - mass per engine stroke 0x37: Meter per square second [m/s2] - acceleration 0x38: Newton meter [Nm] - moment (e.g. torsion moment) 0x39: Litre per minute [l/min] - flow 0x3A: Watt per square meter [W/m2] - intensity 0x3B: Bar per second [bar/s] - pressure change 0x3C: Radians per second [rad/s] - angular velocity 0x3D: Radians per square second [rad/s2] - angular acceleration 0x3E: Kilogram per square meter [kg/m2] 0x40: Exa (prefix) [E] - 10 18 0x41: Peta (prefix) [P] - 10 15 0x42: Tera (prefix) [T] - 10 12 0x43: Giga (prefix) [G] - 10 9 0x44: Mega (prefix) [M] - 10 6 0x45: Kilo (prefix) [k] - 10 3 0x46: Hecto (prefix) [h] - 10 2 0x47: Deca (prefix) [da] - 10 0x48: Deci (prefix) [d] - 10 -1 0x49: Centi (prefix) [c] - 10 -2 0x4A: Milli (prefix) [m] - 10 -3 0x4B: Micro (prefix) [μ] - 10 -6 0x4C: Nano (prefix) [n] - 10 -9 0x4D: Pico (prefix) [p] - 10 -12 0x4E: Femto (prefix) [f] - 10 -15 0x4F: Atto (prefix) [a] - 10 -18 0x50: Year/Month/Day - date 0x51: Day/Month/Year - date 0x52: Month/Day/Year - date 0x53: Week - calendar week 0x54: UTC Hour/Minute/Second - time 0x55: Hour/Minute/Second - time 0x56: Second/Minute/Hour/Day/Month/Year - date and time 0x57: Second/Minute/Hour/Day/Month/Year/Local minute offset/Local hour offset - date and time 0x58: Second/Minute/Hour/Month/Day/Year - date and time 0x59: Second/Minute/Hour/Month/Day/Year/Local minute offset/Local hour offset - date and time |
If scalingByte#1*[*type] equals 0xA (unit/format) |
||
scalingByteExtension#1 |
stateAndConnectionType |
type |
8 |
2 (b[7-6]) |
0x0-0x3 |
Type of parameter#1 signal 0: Internal signal 1: 2 states (low by default) 2: 2 states (high by default) 3: 3 states |
If scalingByte#1[type] equals 0xB (stateAndConnectionType) |
direction |
1 (b[5]) |
0x0-0x1 |
Whether parameter#1 is input or output signal 0: Input signal 1: Output signal |
||||
level |
2 (b[4-3]) |
0x0-0x3 |
Voltage level of parameter#1’s signal 0: Signal at low level (ground) 1: Signal at middle level (between ground and +) 2: Signal at high level (+) 3: Reserved |
||||
state |
3 (b[2-0]) |
0x0-0x7 |
State of the parameter#1’s signal 0: Not Active 1: Active, function 1 2: Error detected 3: Not available 4: Active, function 2 5-7: Reserved |
||||
… |
|||||||
scalingByte#n |
type |
8 |
4 (b[7-4]) |
0x0-0xF |
Type of parameter#n 0x0: unSignedNumeric 0x1: signedNumeric 0x2: bitMappedReportedWithOutMask 0x3: bitMappedReportedWithMask 0x4: BinaryCodedDecimal 0x5: stateEncodedVariable 0x6: ASCII 0x7: signedFloatingPoint 0x8: packet 0x9: formula 0xA: unit/format 0xB: stateAndConnectionType 0xC-0xF: reserved |
If DID contains at least n parameters |
|
numberOfBytesOfParameter |
4 (b[3-0]) |
0x0-0xF |
Number of parameter#n’s bytes |
||||
scalingByteExtension#n |
validityMask |
8 * scalingByte#n*[*numberOfBytesOfParameter] |
Bits supported by the server’s application |
If scalingByte#n*[*type] equals 0x2 (bitMappedReportedWithOutMask) |
|||
scalingByteExtension#n |
formulaIdentifier |
8 |
0x00-0xFF |
Formula used for parameter#n’s value calculation 0x00: y = C0 * x + C1 0x01: y = C0 * (x + C1) 0x02: y = C0 / (x + C1) + C2 0x03: y = x / C0 + C1 0x04: y = (x + C0) / C1 0x05: y = (x + C0) / C1 + C2 0x06: y = C0 * x 0x07: y = x / C0 0x08: y = x + C0 0x09: y = x * C0 / C1 0x0A-0x7F: ISO/SAE reserved 0x80-0xFF: Vehicle manufacturer specific |
If scalingByte#n*[*type] equals 0x9 (formula) |
||
C0#n |
Exponent |
16 |
4 (b[15-12]) |
0x0-0xF |
C0’s parameter exponent value encoded as signed integer value |
||
Mantissa |
12 (b[11-0]) |
0x000-0xFFF |
C0’s parameter mantissa value encoded as signed integer value |
||||
… |
|||||||
Cm#n |
Exponent |
16 |
4 (b[15-12]) |
0x0-0xF |
Cm’s parameter exponent value encoded as signed integer value |
If scalingByteExtension#n*[*formulaIdentifier] uses at least m constants |
|
Mantissa |
12 (b[11-0]) |
0x000-0xFFF |
Cm’s parameter mantissa value encoded as signed integer value |
||||
scalingByteExtension#n |
unit/format |
8 |
0x00-0xFF |
Unit or prefix used by parameter#n 0x00: No unit, no prefix 0x01: Meter [m] - length 0x02: Foot [ft] - length 0x03: Inch [in] - length 0x04: Yard [yd] - length 0x05: Mile (English) [mi] - length 0x06: Gram [g] - mass 0x07: Ton (metric) [t] - mass 0x08: Second [s] - time 0x09: Minute [min] - time 0x0A: Hour [h] - time 0x0B: Day [d] - time 0x0C: Year [y] - time 0x0D: Ampere [A] - current 0x0E: Volt [V] - voltage 0x0F: Coulomb [C] - electric charge 0x10: Ohm [Ω] - resistance 0x11: Farad [F] - capacitance 0x12: Henry [H] - inductance 0x13: Siemens [S] - electric conductance 0x14: Weber [Wb] - magnetic flux 0x15: Tesla [T] - magnetic flux density 0x16: Kelvin [K] - thermodynamic temperature 0x17: Celsius [°C] - thermodynamic temperature 0x18: Fahrenheit [°F] - thermodynamic temperature 0x19: Candela [cd] - luminous intensity 0x1A: Radian [rad] - plane angle 0x1B: Degree [°] - plane angle 0x1C: Hertz [Hz] - frequency 0x1D: Joule [J] - energy 0x1E: Newton [N] - force 0x1F: Kilopond [kp] - force 0x20: Pound force [lbf] - force 0x21: Watt [W] - power 0x22: Horse power (metric) [hk] - power 0x23: Horse power (UK and US) [hp] - power 0x24: Pascal [Pa] - pressure 0x25: Bar [bar] - pressure 0x26: Atmosphere [atm] - pressure 0x27: Pound force per square inch [psi] - pressure 0x28: Becquerel [Bq] - radioactivity 0x29: Lumen [Lm] - light flux 0x2A: Lux [lx] - illuminance 0x2B: Litre [l] - volume 0x2C: Gallon (British) - volume 0x2D: Gallon (US liq) - volume 0x2E: Cubic inch [cu in] - volume 0x2F: Meter per second [m/s] - speed 0x30: Kilometer per hour [km/h] - speed 0x31: Mile per hour [mph] - speed 0x32: Revolutions per second [rps] - angular velocity 0x33: Revolutions per minute [rpm] - angular velocity 0x34: Counts 0x35: Percent [%] 0x36: Milligram per stroke [mg/stroke] - mass per engine stroke 0x37: Meter per square second [m/s2] - acceleration 0x38: Newton meter [Nm] - moment (e.g. torsion moment) 0x39: Litre per minute [l/min] - flow 0x3A: Watt per square meter [W/m2] - intensity 0x3B: Bar per second [bar/s] - pressure change 0x3C: Radians per second [rad/s] - angular velocity 0x3D: Radians per square second [rad/s2] - angular acceleration 0x3E: Kilogram per square meter [kg/m2] 0x40: Exa (prefix) [E] - 10 18 0x41: Peta (prefix) [P] - 10 15 0x42: Tera (prefix) [T] - 10 12 0x43: Giga (prefix) [G] - 10 9 0x44: Mega (prefix) [M] - 10 6 0x45: Kilo (prefix) [k] - 10 3 0x46: Hecto (prefix) [h] - 10 2 0x47: Deca (prefix) [da] - 10 0x48: Deci (prefix) [d] - 10 -1 0x49: Centi (prefix) [c] - 10 -2 0x4A: Milli (prefix) [m] - 10 -3 0x4B: Micro (prefix) [μ] - 10 -6 0x4C: Nano (prefix) [n] - 10 -9 0x4D: Pico (prefix) [p] - 10 -12 0x4E: Femto (prefix) [f] - 10 -15 0x4F: Atto (prefix) [a] - 10 -18 0x50: Year/Month/Day - date 0x51: Day/Month/Year - date 0x52: Month/Day/Year - date 0x53: Week - calendar week 0x54: UTC Hour/Minute/Second - time 0x55: Hour/Minute/Second - time 0x56: Second/Minute/Hour/Day/Month/Year - date and time 0x57: Second/Minute/Hour/Day/Month/Year/Local minute offset/Local hour offset - date and time 0x58: Second/Minute/Hour/Month/Day/Year - date and time 0x59: Second/Minute/Hour/Month/Day/Year/Local minute offset/Local hour offset - date and time |
If scalingByte#n*[*type] equals 0xA (unit/format) |
||
scalingByteExtension#n |
stateAndConnectionType |
type |
8 |
2 (b[7-6]) |
0x0-0x3 |
Type of parameter#n signal 0: Internal signal 1: 2 states (low by default) 2: 2 states (high by default) 3: 3 states |
If scalingByte#n*[*type] equals 0xB (stateAndConnectionType) |
direction |
1 (b[5]) |
0x0-0x1 |
Whether parameter#n is input or output signal 0: Input signal 1: Output signal |
||||
level |
2 (b[4-3]) |
0x0-0x3 |
Voltage level of parameter#n’s signal 0: Signal at low level (ground) 1: Signal at middle level (between ground and +) 2: Signal at high level (+) 3: Reserved |
||||
state |
3 (b[2-0]) |
0x0-0x7 |
State of the parameter#n’s signal 0: Not Active 1: Active, function 1 2: Error detected 3: Not available 4: Active, function 2 5-7: Reserved |
||||
SecurityAccess (0x27)
SecurityAccess service allows the client to unlock functions/services with restricted access.
Unlocking sequence:
The client requests a seed from the server.
The server responds with a positive response that includes a randomly generated seed value.
Both the client and server compute a key value based on the seed (using a secret algorithm).
The client sends the computed key to the server.
The server validates the client by comparing the received key with its own calculated key. If they match, the client is granted access to the protected functionality for the corresponding security level.
RequestSeed
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x27 |
SecurityAccess |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
securityAccessType |
7 (b[6-0]) |
0x01-0x7D |
Security Access level for which seed is requested 0x01, 0x03, …, 0x41: request seed for security level defined by the vehicle manufacturer 0x43, 0x45, …, 0x5D: reserved 0x5F: request seed for end of life activation of on-board pyrotechnic devices (defined by ISO 26021-2) 0x61, 0x63, …, 0x7D: request seed for security level defined by the system supplier 0x7F: reserved |
|||
securityAccessData |
multiple of 8 |
Additional vehicle manufacturer specific information about the client (e.g. type of device) |
Optional |
|||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x67 |
SecurityAccess |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
securityAccessType |
7 (b[6-0]) |
0x01-0x7D |
Echo of securityAccessType value from the request |
|||
securitySeed |
multiple of 8 |
Random seed value generated by the server |
Always |
|||
SendKey
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x27 |
SecurityAccess |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
securityAccessType |
7 (b[6-0]) |
0x02-0x7E |
Security Access level for which key is sent (requested seed value increased by 1) 0x00: reserved 0x02, 0x04, …, 0x42: send key for security level defined by the vehicle manufacturer 0x44, 0x46, …, 0x58: reserved 0x60: send key for end of life activation of on-board pyrotechnic devices (defined by ISO 26021-2) 0x62, 0x64, …, 0x7E: send key for security level defined by the system supplier |
|||
securityKey |
multiple of 8 |
Security key calculated for the seed value provided earlier by the server. |
Always |
|||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x67 |
SecurityAccess |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
securityAccessType |
7 (b[6-0]) |
0x02-0x7E |
Echo of securityAccessType value from the request |
|||
CommunicationControl (0x28)
CommunicationControl service allows the client to switch on/off the transmission and/or the reception of certain messages on the server(s).
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x28 |
CommunicationControl |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
controlType |
7 (b[6-0]) |
0x00-0x7F |
Type of requested control 0x00: enableRxAndTx 0x01: enableRxAndDisableTx 0x02: disableRxAndEnableTx 0x03: disableRxAndTx 0x04: enableRxAndDisableTxWithEnhancedAddressInformation 0x05: enableRxAndTxWithEnhancedAddressInformation 0x06-0x3F: reserved 0x40-0x5F: vehicle manufacturer specific 0x60-0x7E: system supplier specific 0x7F: reserved |
|||
communicationType |
messagesType |
8 |
2 (b[7-6]) |
0x0-0x3 |
Type of affected messages 0x0: reserved 0x1: normalCommunicationMessages 0x2: networkManagementCommunicationMessages 0x3: networkManagementCommunicationMessages and normalCommunicationMessages |
Always |
reserved |
2 (b[5-4]) |
0x0-0x3 |
Unused |
|||
networks |
4 (b[3-0]) |
0x0-0xF |
Type of affected networks 0x0: all connected networks 0x1-0xE: subnet defined by this subnet number 0xF: network on which this request is received |
|||
nodeIdentificationNumber |
16 |
0x0000-0xFFFF |
0x0000: reserved |
If controlType equals 0x04 (enableRxAndDisableTxWithEnhancedAddressInformation) OR 0x05 (enableRxAndTxWithEnhancedAddressInformation) |
||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
|
|---|---|---|---|---|---|
RSID |
8 |
0x68 |
CommunicationControl |
Always |
|
SubFunction |
suppressPosRspMsgIndicationBit |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
controlType |
7 (b[6-0]) |
0x00-0x7F |
Echo of controlType value from the request |
||
Authentication (0x29)
Authentication service provides a mechanism for the client to prove its identity, allowing access to data and/or diagnostic services that have restricted access due to security, emissions, or safety requirements.
Note
Service Authentication was introduced in version ISO 14229-1:2020.
ISO 14229-1 defines the following authenticationTask sub-function values:
0x00: deAuthenticate
0x03: proofOfOwnership
0x04: transmitCertificate
deAuthenticate (0x00)
This sub-function can be used by the client to inform the server that the communication session is being closed and to exit the authenticated state.
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x29 |
Authentication |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
authenticationTask |
7 (b[6-0]) |
0x00 |
deAuthenticate |
|||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x69 |
Authentication |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
authenticationTask |
7 (b[6-0]) |
0x00 |
deAuthenticate |
|||
authenticationReturnParameter |
8 |
0x00-0xFF |
The status of authentication task 0x00: RequestAccepted 0x01: GeneralReject 0x02: AuthenticationConfiguration 0x03: AuthenticationConfiguration ACR with asymmetric cryptography 0x04: AuthenticationConfiguration ACR with symmetric cryptography 0x05-0x0F: reserved 0x10: DeAuthentication successful 0x11: CertificateVerified, OwnershipVerificationNecessary 0x12: OwnershipVerified, AuthenticationComplete 0x13: CertificateVerified 0x14-0x9F: reserved 0xA0-0xCF: vehicle manufacturer specific 0xD0-0xFE: system supplier specific 0xFF: reserved |
Always |
||
verifyCertificateUnidirectional (0x01)
This sub-function can be used by the client to initiate its own authentication process using Certificate.
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x29 |
Authentication |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
authenticationTask |
7 (b[6-0]) |
0x01 |
verifyCertificateUnidirectional |
|||
communicationConfiguration |
8 |
0x00-0xFF |
Information about how to proceed with security in further diagnostic communication after the Authentication. Values meanings are vehicle manufacturer specific. |
0x00-0xFF |
||
lengthOfCertificateClient |
16 |
0x0001-0xFFFF |
Number of bytes to use for certificateClient |
Always |
||
certificateClient |
8 * lengthOfCertificateClient |
Certificate to verify |
Always |
|||
lengthOfChallengeClient |
16 |
0x0000-0xFFFF |
Number of bytes to use for challengeClient |
Always |
||
challengeClient |
8 * lengthOfChallengeClient |
Challenge generated by the client for the server |
If lengthOfChallengeClient unequals 0 |
|||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x69 |
Authentication |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
authenticationTask |
7 (b[6-0]) |
0x01 |
verifyCertificateUnidirectional |
|||
authenticationReturnParameter |
8 |
0x00-0xFF |
The status of authentication task 0x00: RequestAccepted 0x01: GeneralReject 0x02: AuthenticationConfiguration 0x03: AuthenticationConfiguration ACR with asymmetric cryptography 0x04: AuthenticationConfiguration ACR with symmetric cryptography 0x05-0x0F: reserved 0x10: DeAuthentication successful 0x11: CertificateVerified, OwnershipVerificationNecessary 0x12: OwnershipVerified, AuthenticationComplete 0x13: CertificateVerified 0x14-0x9F: reserved 0xA0-0xCF: vehicle manufacturer specific 0xD0-0xFE: system supplier specific 0xFF: reserved |
Always |
||
lengthOfChallengeServer |
16 |
0x0001-0xFFFF |
Number of bytes to use for challengeServer |
Always |
||
challengeServer |
8 * lengthOfChallengeServer |
Challenge generated by the server for the client |
Always |
|||
lengthOfEphemeralPublicKeyServer |
16 |
0x0000-0xFFFF |
Number of bytes to use for ephemeralPublicKeyServer |
Always |
||
ephemeralPublicKeyServer |
8 * lengthOfEphemeralPublicKeyServer |
Ephemeral public key generated by the server for Diffie-Hellman key agreement |
If lengthOfEphemeralPublicKeyServer unequals 0 |
|||
verifyCertificateBidirectional (0x02)
This sub-function can be used by the client to initiate a mutual (bidirectional) authentication process between the client and the server using Certificates.
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x29 |
Authentication |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
authenticationTask |
7 (b[6-0]) |
0x02 |
verifyCertificateBidirectional |
|||
communicationConfiguration |
8 |
0x00-0xFF |
Information about how to proceed with security in further diagnostic communication after the Authentication. Values meanings are vehicle manufacturer specific. |
Always |
||
lengthOfCertificateClient |
16 |
0x0001-0xFFFF |
Number of bytes to use for certificateClient |
Always |
||
certificateClient |
8 * lengthOfCertificateClient |
Certificate to verify |
Always |
|||
lengthOfChallengeClient |
16 |
0x0001-0xFFFF |
Number of bytes to use for challengeClient |
Always |
||
challengeClient |
8 * lengthOfChallengeClient |
Challenge generated by the client for the server |
Always |
|||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x69 |
Authentication |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
authenticationTask |
7 (b[6-0]) |
0x02 |
verifyCertificateBidirectional |
|||
authenticationReturnParameter |
8 |
0x00-0xFF |
The status of authentication task 0x00: RequestAccepted 0x01: GeneralReject 0x02: AuthenticationConfiguration 0x03: AuthenticationConfiguration ACR with asymmetric cryptography 0x04: AuthenticationConfiguration ACR with symmetric cryptography 0x05-0x0F: reserved 0x10: DeAuthentication successful 0x11: CertificateVerified, OwnershipVerificationNecessary 0x12: OwnershipVerified, AuthenticationComplete 0x13: CertificateVerified 0x14-0x9F: reserved 0xA0-0xCF: vehicle manufacturer specific 0xD0-0xFE: system supplier specific 0xFF: reserved |
Always |
||
lengthOfChallengeServer |
16 |
0x0001-0xFFFF |
Number of bytes to use for challengeServer |
Always |
||
challengeServer |
8 * lengthOfChallengeServer |
Challenge generated by the server for the client |
Always |
|||
lengthOfCertificateServer |
16 |
0x0001-0xFFFF |
Number of bytes to use for certificateServer |
Always |
||
certificateServer |
8 * lengthOfCertificateServer |
Certificate to verify |
Always |
|||
lengthOfProofOfOwnershipServer |
16 |
0x0001-0xFFFF |
Number of bytes to use for proofOfOwnershipServer |
Always |
||
proofOfOwnershipServer |
8 * lengthOfProofOfOwnershipServer |
Proof of Ownership to be verified by the client |
Always |
|||
lengthOfEphemeralPublicKeyServer |
16 |
0x0000-0xFFFF |
Number of bytes to use for ephemeralPublicKeyServer |
Always |
||
ephemeralPublicKeyServer |
8 * lengthOfEphemeralPublicKeyServer |
Ephemeral public key generated by the server for Diffie-Hellman key agreement |
If lengthOfEphemeralPublicKeyServer unequals 0 |
|||
proofOfOwnership (0x03)
This sub-function can be used by the client to verify Proof of Ownership on the client side.
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x29 |
Authentication |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
authenticationTask |
7 (b[6-0]) |
0x03 |
proofOfOwnership |
|||
lengthOfProofOfOwnershipClient |
16 |
0x0001-0xFFFF |
Number of bytes to use for proofOfOwnershipClient |
Always |
||
proofOfOwnershipClient |
8 * lengthOfProofOfOwnershipClient |
Client’s Proof of Ownership for the challenge value given by the server |
Always |
|||
lengthOfEphemeralPublicKeyClient |
16 |
0x0000-0xFFFF |
Number of bytes to use for ephemeralPublicKeyClient |
Always |
||
ephemeralPublicKeyClient |
8 * lengthOfEphemeralPublicKeyClient |
Ephemeral public key generated by the client for Diffie-Hellman key agreement |
If lengthOfEphemeralPublicKeyClient unequals 0 |
|||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x69 |
Authentication |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
authenticationTask |
7 (b[6-0]) |
0x03 |
proofOfOwnership |
|||
authenticationReturnParameter |
8 |
0x00-0xFF |
The status of authentication task 0x00: RequestAccepted 0x01: GeneralReject 0x02: AuthenticationConfiguration 0x03: AuthenticationConfiguration ACR with asymmetric cryptography 0x04: AuthenticationConfiguration ACR with symmetric cryptography 0x05-0x0F: reserved 0x10: DeAuthentication successful 0x11: CertificateVerified, OwnershipVerificationNecessary 0x12: OwnershipVerified, AuthenticationComplete 0x13: CertificateVerified 0x14-0x9F: reserved 0xA0-0xCF: vehicle manufacturer specific 0xD0-0xFE: system supplier specific 0xFF: reserved |
Always |
||
lengthOfSessionKeyInfo |
16 |
0x0000-0xFFFF |
Number of bytes to use for sessionKeyInfo |
Always |
||
sessionKeyInfo |
8 * lengthOfSessionKeyInfo |
Session key information (e.g. encrypted session keys). |
If lengthOfSessionKeyInfo unequals 0 |
|||
transmitCertificate (0x04)
This sub-function can be used by the client to transmit its Certificate to the server.
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x29 |
Authentication |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
authenticationTask |
7 (b[6-0]) |
0x04 |
transmitCertificate |
|||
certificateEvaluationId |
16 |
0x0000-0xFFFF |
Identifier of evaluation type of the transmitted certificate |
Always |
||
lengthOfCertificateData |
16 |
0x0001-0xFFFF |
Number of bytes to use for certificateData |
Always |
||
certificateData |
8 * lengthOfCertificateData |
Certificate to verify |
Always |
|||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x69 |
Authentication |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
authenticationTask |
7 (b[6-0]) |
0x04 |
transmitCertificate |
|||
authenticationReturnParameter |
8 |
0x00-0xFF |
The status of authentication task 0x00: RequestAccepted 0x01: GeneralReject 0x02: AuthenticationConfiguration 0x03: AuthenticationConfiguration ACR with asymmetric cryptography 0x04: AuthenticationConfiguration ACR with symmetric cryptography 0x05-0x0F: reserved 0x10: DeAuthentication successful 0x11: CertificateVerified, OwnershipVerificationNecessary 0x12: OwnershipVerified, AuthenticationComplete 0x13: CertificateVerified 0x14-0x9F: reserved 0xA0-0xCF: vehicle manufacturer specific 0xD0-0xFE: system supplier specific 0xFF: reserved |
Always |
||
requestChallengeForAuthentication (0x05)
This sub-function can be used by the client to initiate own authentication process by requesting Challenge from the server.
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x29 |
Authentication |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
authenticationTask |
7 (b[6-0]) |
0x05 |
requestChallengeForAuthentication |
|||
communicationConfiguration |
8 |
0x00-0xFF |
Information about how to proceed with security in further diagnostic communication after the Authentication. Values meanings are vehicle manufacturer specific. |
Always |
||
algorithmIndicator |
128 |
Indicates the algorithm used in the generating and verifying Proof of Ownership. This field is a 16 byte value containing the BER encoded OID value of the algorithm used. The value is left aligned and right padded with zero up to 16 bytes. |
Always |
|||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x69 |
Authentication |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
authenticationTask |
7 (b[6-0]) |
0x05 |
requestChallengeForAuthentication |
|||
authenticationReturnParameter |
8 |
0x00-0xFF |
The status of authentication task 0x00: RequestAccepted 0x01: GeneralReject 0x02: AuthenticationConfiguration 0x03: AuthenticationConfiguration ACR with asymmetric cryptography 0x04: AuthenticationConfiguration ACR with symmetric cryptography 0x05-0x0F: reserved 0x10: DeAuthentication successful 0x11: CertificateVerified, OwnershipVerificationNecessary 0x12: OwnershipVerified, AuthenticationComplete 0x13: CertificateVerified 0x14-0x9F: reserved 0xA0-0xCF: vehicle manufacturer specific 0xD0-0xFE: system supplier specific 0xFF: reserved |
Always |
||
algorithmIndicator |
128 |
Indicates the algorithm used in the generating and verifying Proof of Ownership. This field is a 16 byte value containing the BER encoded OID value of the algorithm used. The value is left aligned and right padded with zero up to 16 bytes. |
Always |
|||
lengthOfChallengeServer |
16 |
0x0001-0xFFFF |
Number of bytes to use for challengeServer |
Always |
||
challengeServer |
8 * lengthOfChallengeServer |
Challenge generated by the server for the client |
Always |
|||
lengthOfNeededAdditionalParameter |
16 |
0x0000-0xFFFF |
Number of bytes to use for neededAdditionalParameter |
Always |
||
neededAdditionalParameter |
8 * lengthOfNeededAdditionalParameter |
Indicate what additional parameters, if needed, are expected by the server |
If lengthOfNeededAdditionalParameter unequals 0 |
|||
verifyProofOfOwnershipUnidirectional (0x06)
This sub-function can be used by the client to verify Proof of Ownership on the client side.
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x29 |
Authentication |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
authenticationTask |
7 (b[6-0]) |
0x06 |
verifyProofOfOwnershipUnidirectional |
|||
algorithmIndicator |
128 |
Indicates the algorithm used in the generating and verifying Proof of Ownership. This field is a 16 byte value containing the BER encoded OID value of the algorithm used. The value is left aligned and right padded with zero up to 16 bytes. |
Always |
|||
lengthOfProofOfOwnershipClient |
16 |
0x0001-0xFFFF |
Number of bytes to use for proofOfOwnershipClient |
Always |
||
proofOfOwnershipClient |
8 * lengthOfProofOfOwnershipClient |
Client’s Proof of Ownership for the challenge value given by the server |
Always |
|||
lengthOfChallengeClient |
16 |
0x0000-0xFFFF |
Number of bytes to use for challengeClient |
Always |
||
challengeClient |
8 * lengthOfChallengeClient |
Challenge generated by the client for the server |
If lengthOfChallengeClient unequals 0 |
|||
lengthOfAdditionalParameter |
16 |
0x0000-0xFFFF |
Number of bytes to use for additionalParameter |
Always |
||
additionalParameter |
8 * lengthOfAdditionalParameter |
The value of additional parameter that was indicated by the server via neededAdditionalParameter |
If lengthOfAdditionalParameter unequals 0 |
|||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x69 |
Authentication |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
authenticationTask |
7 (b[6-0]) |
0x06 |
verifyProofOfOwnershipUnidirectional |
|||
authenticationReturnParameter |
8 |
0x00-0xFF |
The status of authentication task 0x00: RequestAccepted 0x01: GeneralReject 0x02: AuthenticationConfiguration 0x03: AuthenticationConfiguration ACR with asymmetric cryptography 0x04: AuthenticationConfiguration ACR with symmetric cryptography 0x05-0x0F: reserved 0x10: DeAuthentication successful 0x11: CertificateVerified, OwnershipVerificationNecessary 0x12: OwnershipVerified, AuthenticationComplete 0x13: CertificateVerified 0x14-0x9F: reserved 0xA0-0xCF: vehicle manufacturer specific 0xD0-0xFE: system supplier specific 0xFF: reserved |
Always |
||
algorithmIndicator |
128 |
Indicates the algorithm used in the generating and verifying Proof of Ownership. This field is a 16 byte value containing the BER encoded OID value of the algorithm used. The value is left aligned and right padded with zero up to 16 bytes. |
Always |
|||
lengthOfSessionKeyInfo |
16 |
0x0000-0xFFFF |
Number of bytes to use for sessionKeyInfo |
Always |
||
sessionKeyInfo |
8 * lengthOfSessionKeyInfo |
Session key information (e.g. encrypted session keys). |
If lengthOfSessionKeyInfo unequals 0 |
|||
verifyProofOfOwnershipBidirectional (0x07)
This sub-function can be used by the client to verify Proof of Ownership on both client’s and server’s side.
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x29 |
Authentication |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
authenticationTask |
7 (b[6-0]) |
0x07 |
verifyProofOfOwnershipBidirectional |
|||
algorithmIndicator |
128 |
Indicates the algorithm used in the generating and verifying Proof of Ownership. This field is a 16 byte value containing the BER encoded OID value of the algorithm used. The value is left aligned and right padded with zero up to 16 bytes. |
Always |
|||
lengthOfProofOfOwnershipClient |
16 |
0x0001-0xFFFF |
Number of bytes to use for proofOfOwnershipClient |
Always |
||
proofOfOwnershipClient |
8 * lengthOfProofOfOwnershipClient |
Client’s Proof of Ownership for the challenge value given by the server |
Always |
|||
lengthOfChallengeClient |
16 |
0x0001-0xFFFF |
Number of bytes to use for challengeClient |
Always |
||
challengeClient |
8 * lengthOfChallengeClient |
Challenge generated by the client for the server |
Always |
|||
lengthOfAdditionalParameter |
16 |
0x0000-0xFFFF |
Number of bytes to use for additionalParameter |
Always |
||
additionalParameter |
8 * lengthOfAdditionalParameter |
The value of additional parameter that was indicated by the server via neededAdditionalParameter |
If lengthOfAdditionalParameter unequals 0 |
|||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x69 |
Authentication |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
authenticationTask |
7 (b[6-0]) |
0x07 |
verifyProofOfOwnershipBidirectional |
|||
authenticationReturnParameter |
8 |
0x00-0xFF |
The status of authentication task 0x00: RequestAccepted 0x01: GeneralReject 0x02: AuthenticationConfiguration 0x03: AuthenticationConfiguration ACR with asymmetric cryptography 0x04: AuthenticationConfiguration ACR with symmetric cryptography 0x05-0x0F: reserved 0x10: DeAuthentication successful 0x11: CertificateVerified, OwnershipVerificationNecessary 0x12: OwnershipVerified, AuthenticationComplete 0x13: CertificateVerified 0x14-0x9F: reserved 0xA0-0xCF: vehicle manufacturer specific 0xD0-0xFE: system supplier specific 0xFF: reserved |
Always |
||
algorithmIndicator |
128 |
Indicates the algorithm used in the generating and verifying Proof of Ownership. This field is a 16 byte value containing the BER encoded OID value of the algorithm used. The value is left aligned and right padded with zero up to 16 bytes. |
Always |
|||
lengthOfProofOfOwnershipServer |
16 |
0x0001-0xFFFF |
Number of bytes to use for proofOfOwnershipServer |
Always |
||
proofOfOwnershipServer |
8 * lengthOfProofOfOwnershipServer |
Proof of Ownership to be verified by the client |
Always |
|||
lengthOfSessionKeyInfo |
16 |
0x0000-0xFFFF |
Number of bytes to use for sessionKeyInfo |
Always |
||
sessionKeyInfo |
8 * lengthOfSessionKeyInfo |
Session key information (e.g. encrypted session keys). |
If lengthOfSessionKeyInfo unequals 0 |
|||
authenticationConfiguration (0x08)
This sub-function can be used by the client to retrieve information about the current authentication configuration and status.
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x29 |
Authentication |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
authenticationTask |
7 (b[6-0]) |
0x08 |
authenticationConfiguration |
|||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x69 |
Authentication |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
authenticationTask |
7 (b[6-0]) |
0x08 |
authenticationConfiguration |
|||
authenticationReturnParameter |
8 |
0x00-0xFF |
The status of authentication task 0x00: RequestAccepted 0x01: GeneralReject 0x02: AuthenticationConfiguration 0x03: AuthenticationConfiguration ACR with asymmetric cryptography 0x04: AuthenticationConfiguration ACR with symmetric cryptography 0x05-0x0F: reserved 0x10: DeAuthentication successful 0x11: CertificateVerified, OwnershipVerificationNecessary 0x12: OwnershipVerified, AuthenticationComplete 0x13: CertificateVerified 0x14-0x9F: reserved 0xA0-0xCF: vehicle manufacturer specific 0xD0-0xFE: system supplier specific 0xFF: reserved |
Always |
||
ReadDataByPeriodicIdentifier (0x2A)
ReadDataByPeriodicIdentifier service allows the client to request periodic transmission of data record values from the server.
Data are identified by Periodic DID (the second byte of a DID with a fixed first byte 0xF2).
Request Format
Name |
Bit Length |
Value |
Description |
Present |
|
|---|---|---|---|---|---|
SID |
8 |
0x2A |
ReadDataByPeriodicIdentifier |
Always |
|
transmissionMode |
8 |
0x00-0xFF |
Type of control over periodic transmission 0x00: reserved 0x01: sendAtSlowRate 0x02: sendAtMediumRate 0x03: sendAtFastRate 0x04: stopSending 0x05-0xFF: reserved |
Always |
|
Periodic DID |
8 * n |
8 |
0x00-0xFF |
Second byte of DID#1 (first byte equals 0xF2) |
Optional if transmissionMode equals 0x04 (stopSending) Mandatory if transmissionMode unequals 0x04 (stopSending) |
… |
|||||
8 |
0x00-0xFF |
Second byte of DID#n (first byte equals 0xF2) |
Optional |
||
Positive Response Format
This service behaves differently from most diagnostic services because it produces two types of positive responses:
Initial confirmation response — sent immediately after the request
Ongoing periodic data messages — sent repeatedly according to the requested rate
Initial
The first response (sent directly after the request):
Name |
Bit Length |
Value |
Description |
Present |
|---|---|---|---|---|
RSID |
8 |
0x6A |
ReadDataByPeriodicIdentifier |
Always |
Following
The following responses with data for Periodic Data Identifiers. Format according to ISO 14229:
Name |
Bit Length |
Value |
Description |
Present |
|---|---|---|---|---|
Periodic DID |
8 |
0x00-0xFF |
Second byte of DID (first byte equals 0xF2) |
Always |
data |
multiple of 8 |
Data stored under periodic DID |
Always |
Warning
The ISO-defined data message format introduces ambiguity because it does not begin with RSID. This makes it impossible to reliably distinguish periodic data messages from other diagnostic messages.
In my opinion this is a design flaw, and I have submitted feedback to the ISO committee recommending that future revisions add RSID at the start of each periodic data message.
This package uses an extended, unambiguous periodic message format that always includes RSID 0x6A:
Name |
Bit Length |
Value |
Description |
Present |
|---|---|---|---|---|
RSID |
8 |
0x6A |
ReadDataByPeriodicIdentifier |
Always |
Periodic DID |
8 |
0x00-0xFF |
Second byte of DID (first byte equals 0xF2) |
Always |
data |
multiple of 8 |
Data stored under periodic DID |
Always |
DynamicallyDefineDataIdentifier (0x2C)
DynamicallyDefineDataIdentifier service allows the client to define a Data Identifier (DID) dynamically within the server. Once defined, the newly created DID can later be read using ReadDataByIdentifier or ReadDataByPeriodicIdentifier services.
ISO 14229-1 defines the following DID definition types (definitionType parameter values):
0x01 - defineByIdentifier
0x02 - defineByMemoryAddress
Request Format
defineByIdentifier (0x01)
This sub-function allows the client to define a new DID by concatenating data slices taken from existing DIDs.
The request may contain one or more Data from DID segments, each consisting of (sourceDataIdentifier, positionInSourceDataRecord, memorySize). Each segment selects a portion of an existing DID’s data record:
sourceDataIdentifier identifies the DID whose data is referenced
positionInSourceDataRecord specifies the starting byte position within that DID’s data record (index of the first byte = 1)
memorySize defines the number of bytes to extract from that position
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x2C |
DynamicallyDefineDataIdentifier |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
definitionType |
7 (b[6-0]) |
0x01 |
defineByIdentifier |
|||
dynamicallyDefinedDataIdentifier |
16 |
0xF200-0xF3FF |
DID to define |
Always |
||
Data from DID |
sourceDataIdentifier |
32 * n |
16 |
0x0000-0xFFFF |
Source DID#1 |
Always |
positionInSourceDataRecord |
8 |
0x01-0xFF |
Data position in DID#1 |
|||
memorySize |
8 |
0x01-0xFF |
Number of bytes from DID#1 |
|||
… |
… |
|||||
sourceDataIdentifier |
16 |
0x0000-0xFFFF |
Source DID#n |
Optional |
||
positionInSourceDataRecord |
8 |
0x01-0xFF |
Data position in DID#n |
|||
memorySize |
8 |
0x01-0xFF |
Number of bytes from DID#n |
|||
defineByMemoryAddress (0x02)
This sub-function allows the client to define a new DID by referencing data directly from the server’s memory.
The addressAndLengthFormatIdentifier parameter specifies the number of bytes used to encode both memoryAddress and memorySize within each memory segment.
The request may include one or more Data from Memory segments, with each segments consisting of (memoryAddress, memorySize) and selecting a continuous region of memory to be included in the dynamically defined DID:
memoryAddress specifies the starting address of the memory block
memorySize specifies the number of bytes to include from that address
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x2C |
DynamicallyDefineDataIdentifier |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
definitionType |
7 (b[6-0]) |
0x02 |
defineByMemoryAddress |
|||
dynamicallyDefinedDataIdentifier |
16 |
0xF200-0xF3FF |
DID to define |
Always |
||
addressAndLengthFormatIdentifier |
memorySizeLength |
8 |
4 (b[7-4]) |
0x1-0xF |
Number of bytes to use for memorySize |
Always |
memoryAddressLength |
4 (b[3-0]) |
0x1-0xF |
Number of bytes to use for memoryAddress |
|||
Data from Memory |
memoryAddress |
8 * (memoryAddressLength + memorySizeLength) * n |
8 * memoryAddressLength |
memoryAddress#1 |
Always |
|
memorySize |
8 * memorySizeLength |
Number of bytes from memoryAddress#1 |
||||
… |
… |
|||||
memoryAddress |
8 * memoryAddressLength |
memoryAddress#n |
Optional |
|||
memorySize |
8 * memorySizeLength |
Number of bytes from memoryAddress#n |
||||
clearDynamicallyDefinedDataIdentifier (0x03)
This sub-function clears previously defined dynamic DIDs.
If dynamicallyDefinedDataIdentifier parameter is present, only the specified dynamic DID is cleared. If not provided, all dynamically defined DIDs stored in the server are cleared.
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x2C |
DynamicallyDefineDataIdentifier |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
definitionType |
7 (b[6-0]) |
0x03 |
clearDynamicallyDefinedDataIdentifier |
|||
dynamicallyDefinedDataIdentifier |
16 |
0xF200-0xF3FF |
DID to clear |
Optional |
||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
|
|---|---|---|---|---|---|
RSID |
8 |
0x6C |
DynamicallyDefineDataIdentifier |
Always |
|
SubFunction |
suppressPosRspMsgIndicationBit |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
definitionType |
7 (b[6-0]) |
0x00-0x7F |
Echo of definitionType value from the request |
||
dynamicallyDefinedDataIdentifier |
16 |
0xF200-0xF3FF |
Echo of dynamicallyDefinedDataIdentifier value from the request |
If dynamicallyDefinedDataIdentifier was present in the request |
|
WriteDataByIdentifier (0x2E)
WriteDataByIdentifier service allows the client to write information into the server at an internal location specified by the provided DataIdentifier (DID).
Request Format
Name |
Bit Length |
Value |
Description |
Present |
|---|---|---|---|---|
SID |
8 |
0x2E |
WriteDataByIdentifier |
Always |
DID |
16 |
0x0000-0xFFFF |
DID to update |
Always |
DID data |
multiple of 8 |
Data to write |
Always |
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
|---|---|---|---|---|
RSID |
8 |
0x6E |
WriteDataByIdentifier |
Always |
DID |
16 |
0x0000-0xFFFF |
Echo of DID value from the request |
Always |
InputOutputControlByIdentifier (0x2F)
InputOutputControlByIdentifier service allows the client to override an input value, internal server function value, or force a specific output (actuator) value within the server.
Request Format
The inputOutputControlParameter determines the type of control to apply:
0x00 - returnControlToECU The server restores normal control of all values associated with the DID.
0x01 - resetToDefault The server resets the controlled values to their default state.
0x02 - freezeCurrentState The server freezes the current values (prevents them from changing).
0x03 - shortTermAdjustment The server temporarily applies the value(s) provided by the client.
If the controlEnableMask Data Record is present, it specifies which parts of the DID’s data are subject to control. Each bit corresponds to the respective field in the DID structure:
1 - take control of this value
0 - leave this value under server control
If the controlState Data Record is present, it contains the value(s) to be set to the corresponding fields of the DID.
Note
The structure and length of controlState and controlEnableMask follow the structure of the DID’s data.
Name |
Bit Length |
Value |
Description |
Present |
|---|---|---|---|---|
SID |
8 |
0x2F |
InputOutputControlByIdentifier |
Always |
DID |
16 |
0x0000-0xFFFF |
DID to control |
Always |
inputOutputControlParameter |
8 |
0x00-0xFF |
Type of control on input/output parameters 0x00: returnControlToECU 0x01: resetToDefault 0x02: freezeCurrentState 0x03: shortTermAdjustment 0x04-0xFF: reserved |
Always |
controlState |
multiple of 8 |
Values to set in the DID |
If inputOutputControlParameter equals 0x03 (shortTermAdjustment) |
|
controlEnableMask |
same as controlState |
Mask of the values to control in the DID |
Optional if controlState is present |
Positive Response Format
The server responds with the DID and the inputOutputControlParameter echoed, followed by the current values stored under the DID. The controlState in the response is identical to what would be returned by ReadDataByIdentifier service for the same DID.
Name |
Bit Length |
Value |
Description |
Present |
|---|---|---|---|---|
RSID |
8 |
0x6F |
InputOutputControlByIdentifier |
Always |
DID |
16 |
0x0000-0xFFFF |
DID |
Always |
inputOutputControlParameter |
8 |
0x00-0xFF |
Echo of inputOutputControlParameter value from the request |
Always |
controlState |
multiple of 8 |
Currently stored data under the DID |
Always |
RoutineControl (0x31)
RoutineControl service allows the client to start, stop, or request the results of a routine identified by a RoutineIdentifier (RID). A routine is an ECU-implemented function that performs a defined sequence of actions to achieve a specific outcome.
Typical use cases include functions such as memory erasure, resetting or learning adaptive data, initiating self-tests, or temporarily overriding the normal control strategy of the server.
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x31 |
RoutineControl |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
routineControlType |
7 (b[6-0]) |
0x00-0x7F |
Type of control 0x00: reserved 0x01: startRoutine 0x02: stopRoutine 0x03: requestRoutineResults 0x04-0x7F: reserved |
|||
RID |
16 |
0x0000-0xFFFF |
Routine Identifier |
Always |
||
routineControlOption |
multiple of 8 |
Additional routine specific parameters |
Optional if routineControlType equals 0x01 (startRoutine) or 0x02 (stopRoutine) |
|||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x71 |
RoutineControl |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
routineControlType |
7 (b[6-0]) |
0x00-0x7F |
Echo of routineControlType value from the request |
|||
RID |
16 |
0x0000-0xFFFF |
Echo of RID value from the request |
Always |
||
routineStatus |
multiple of 8 |
Routine specific status information |
Mandatory if routineControlType equals 0x03 (requestRoutineResults) Optional if routineControlType unequals 0x03 (requestRoutineResults) |
|||
Warning
ISO 14229-1 distinguishes two optional parameters in the positive response: routineInfo and routineStatus. However, ISO does not define the content, format, or conditions of use for either field for any standardised RID. Because both fields are entirely vehicle-manufacturer-specific, this documentation simplifies the model by combining them into a single parameter named routineStatus.
This has no functional impact and avoids implying that ISO provides a fixed structure for either field.
RequestDownload (0x34)
RequestDownload service allows the client to initiate a download sequence, where data is transferred from the client to the server.
Note
Download means that the server is the receiver and the client is the sender.
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x34 |
RequestDownload |
Always |
||
dataFormatIdentifier |
compressionMethod |
8 |
4 (b[7-4]) |
0x0-0xF |
Compression method to use for data 0x0 - no compression 0x1-0xF - vehicle manufacturer specific compression |
Always |
encryptingMethod |
4 (b[3-0]) |
0x0-0xF |
Encryption method to use for transfer 0x0 - no encryption 0x1-0xF - vehicle manufacturer specific encryption |
|||
addressAndLengthFormatIdentifier |
memorySizeLength |
8 |
4 (b[7-4]) |
0x1-0xF |
Number of bytes to use for memorySize |
Always |
memoryAddressLength |
4 (b[3-0]) |
0x1-0xF |
Number of bytes to use for memoryAddress |
|||
memoryAddress |
8 * memoryAddressLength |
Starting address in the server’s memory |
Always |
|||
memorySize |
8 * memorySizeLength |
Number of bytes to download |
Always |
|||
Positive Response Format
The maxNumberOfBlockLength value specifies the maximum permitted size of the complete TransferData request that the server supports (including SID and blockSequenceCounter).
Warning
The reserved value shall be equal to 0.
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x74 |
RequestDownload |
Always |
||
lengthFormatIdentifier |
maxNumberOfBlockLengthBytesNumber |
8 |
4 (b[7-4]) |
0x1-0xF |
Number of bytes to use for maxNumberOfBlockLength |
Always |
reserved |
4 (b[3-0]) |
0x0 |
Reserved by ISO 14229 for future definition |
|||
maxNumberOfBlockLength |
8 * maxNumberOfBlockLengthBytesNumber |
Maximal TransferData message length that this server is capable of handling |
Always |
|||
RequestUpload (0x35)
RequestUpload service allows the client to initiate an upload sequence, where data is transferred from the server to the client.
Note
Upload means that the server is the sender and the client is the receiver.
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x35 |
RequestUpload |
Always |
||
dataFormatIdentifier |
compressionMethod |
8 |
4 (b[7-4]) |
0x0-0xF |
Compression method to use for data 0x0 - no compression 0x1-0xF - vehicle manufacturer specific compression |
Always |
encryptingMethod |
4 (b[3-0]) |
0x0-0xF |
Encryption method to use for transfer 0x0 - no encryption 0x1-0xF - vehicle manufacturer specific encryption |
|||
addressAndLengthFormatIdentifier |
memorySizeLength |
8 |
4 (b[7-4]) |
0x1-0xF |
Number of bytes to use for memorySize |
Always |
memoryAddressLength |
4 (b[3-0]) |
0x1-0xF |
Number of bytes to use for memoryAddress |
|||
memoryAddress |
8 * memoryAddressLength |
Starting address in the server’s memory |
Always |
|||
memorySize |
8 * memorySizeLength |
Number of bytes to download |
Always |
|||
Positive Response Format
The maxNumberOfBlockLength value specifies the maximum permitted size of the complete TransferData response that the server supports, including RSID and blockSequenceCounter Data Records.
Warning
The reserved value shall be equal to 0.
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x75 |
RequestUpload |
Always |
||
lengthFormatIdentifier |
maxNumberOfBlockLengthBytesNumber |
8 |
4 (b[7-4]) |
0x1-0xF |
Number of bytes to use for maxNumberOfBlockLength |
Always |
reserved |
4 (b[3-0]) |
0x0 |
Reserved by ISO 14229 for future definition |
|||
maxNumberOfBlockLength |
8 * maxNumberOfBlockLengthBytesNumber |
Maximal TransferData message length that this server is capable of handling |
Always |
|||
TransferData (0x36)
TransferData service is used during both download and upload sequences to transfer blocks of data.
The blockSequenceCounter is used by the server to detect message repetition or loss. Its initial value is 1, and it is incremented with each subsequent message. After reaching 0xFF, it rolls over to 0x00.
Request Format
Name |
Bit Length |
Value |
Description |
Present |
|---|---|---|---|---|
SID |
8 |
0x36 |
TransferData |
Always |
blockSequenceCounter |
8 |
0x00-0xFF |
Message counter |
Always |
transferRequestParameter |
multiple of 8 |
Data sent by the client |
If a download is in progress |
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
|---|---|---|---|---|
RSID |
8 |
0x76 |
TransferData |
Always |
blockSequenceCounter |
8 |
0x00-0xFF |
Echo of blockSequenceCounter value from the request |
Always |
transferResponseParameter |
multiple of 8 |
Data sent by the server |
If an upload is in progress |
RequestTransferExit (0x37)
RequestTransferExit service is used by the client to terminate a data transfer between the client and server.
Request Format
Name |
Bit Length |
Value |
Description |
Present |
|---|---|---|---|---|
SID |
8 |
0x37 |
RequestTransferExit |
Always |
transferRequestParameter |
multiple of 8 |
Additional vehicle manufacturer specific values |
Optional |
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
|---|---|---|---|---|
RSID |
8 |
0x77 |
RequestTransferExit |
Always |
transferResponseParameter |
multiple of 8 |
Additional vehicle manufacturer specific values |
Optional |
RequestFileTransfer (0x38)
RequestFileTransfer service provides an alternative to RequestDownload and RequestUpload services. Unlike RequestDownload and RequestUpload, which operate on memory addresses, RequestFileTransfer operates on files identified by their paths and names.
It allows the client to request a range of file-related operations, such as adding, deleting, replacing, reading, or resuming access to files, as well as retrieving directory information.
Warning
Value 0x06 [ResumeFile] of modeOfOperation was introduced in ISO 14229-1:2020 and it was absent in ISO 14229-1:2013.
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x38 |
RequestFileTransfer |
Always |
||
modeOfOperation |
8 |
0x00-0xFF |
Type of operation to perform on files 0x00: reserved 0x01: AddFile 0x02: DeleteFile 0x03: ReplaceFile 0x04: ReadFile 0x05: ReadDir 0x06: ResumeFile 0x07-0xFF: reserved |
Always |
||
filePathAndNameLength |
16 |
0x0001-0xFFFF |
Number of bytes to use for filePathAndName |
Always |
||
filePathAndName |
8 * filePathAndNameLength |
Path to the file/directory |
Always |
|||
dataFormatIdentifier |
compressionMethod |
8 |
4 (b[7-4]) |
0x0-0xF |
Compression method to use for data 0x0 - no compression 0x1-0xF - vehicle manufacturer specific compression |
If modeOfOperation equals 0x01 (AddFile), 0x03 (ReplaceFile), 0x04 (ReadFile) or 0x06 (ResumeFile) |
encryptingMethod |
4 (b[3-0]) |
0x0-0xF |
Encryption method to use for transfer 0x0 - no encryption 0x1-0xF - vehicle manufacturer specific encryption |
|||
fileSizeParameterLength |
8 |
0x01-0xFF |
Number of bytes to use for fileSizeUnCompressed and fileSizeCompressed |
If modeOfOperation equals 0x01 (AddFile), 0x03 (ReplaceFile) or 0x06 (ResumeFile) |
||
fileSizeUnCompressed |
8 * fileSizeParameterLength |
The size of the uncompressed file in bytes |
||||
fileSizeCompressed |
8 * fileSizeParameterLength |
The size of the compressed file in bytes |
||||
Positive Response Format
Parameter dataFormatIdentifier shall equal 0x00 (no compression, no encryption) if modeOfOperation equals 0x05 (ReadDir).
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x78 |
RequestFileTransfer |
Always |
||
modeOfOperation |
8 |
0x00-0xFF |
Echo of modeOfOperation value from the request |
Always |
||
lengthFormatIdentifier |
8 |
0x01-0xFF |
Number of bytes to use for maxNumberOfBlockLength |
If modeOfOperation unequals 0x02 (DeleteFile) |
||
maxNumberOfBlockLength |
8 * maxNumberOfBlockLengthBytesNumber |
Maximal TransferData message length that this server is capable of handling |
||||
dataFormatIdentifier |
compressionMethod |
8 |
4 (b[7-4]) |
0x0-0xF |
Compression method to use for data 0x0 - no compression 0x1-0xF - vehicle manufacturer specific compression |
If modeOfOperation unequals 0x02 (DeleteFile) |
encryptingMethod |
4 (b[3-0]) |
0x0-0xF |
Encryption method to use for transfer 0x0 - no encryption 0x1-0xF - vehicle manufacturer specific encryption |
|||
fileSizeOrDirInfoParameterLength |
16 |
0x0001-0xFFFF |
Number of bytes to use for fileSizeUncompressedOrDirInfoLength and fileSizeCompressed |
If modeOfOperation equals 0x04 (ReadFile) or 0x05 (ReadDir) |
||
fileSizeUncompressedOrDirInfoLength |
8 * fileSizeOrDirInfoParameterLength |
The size of the uncompressed file (or directory) in bytes |
If modeOfOperation equals 0x04 (ReadFile) or 0x05 (ReadDir) |
|||
fileSizeCompressed |
8 * fileSizeOrDirInfoParameterLength |
The size of the compressed file in bytes |
If modeOfOperation equals 0x04 (ReadFile) |
|||
filePosition |
64 |
The byte position to resume downloading after initial download was suspended |
If modeOfOperation equals 0x06 (ResumeFile) |
|||
WriteMemoryByAddress (0x3D)
WriteMemoryByAddress service allows the client to write information into server’s memory data under provided memory address.
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x3D |
WriteMemoryByAddress |
Always |
||
addressAndLengthFormatIdentifier |
memorySizeLength |
8 |
4 (b[7-4]) |
0x1-0xF |
Number of bytes to use for memorySize |
Always |
memoryAddressLength |
4 (b[3-0]) |
0x1-0xF |
Number of bytes to use for memoryAddress |
|||
memoryAddress |
8 * memoryAddressLength |
Starting address in the server’s memory |
Always |
|||
memorySize |
8 * memorySizeLength |
Number of bytes to use for data |
Always |
|||
data |
8 * memorySize |
Data to write to server’s memory |
Always |
|||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x7D |
WriteMemoryByAddress |
Always |
||
addressAndLengthFormatIdentifier |
memorySizeLength |
8 |
4 (b[7-4]) |
0x1-0xF |
Echo of memorySizeLength value from the request |
Always |
memoryAddressLength |
4 (b[3-0]) |
0x1-0xF |
Echo of memoryAddressLength value from the request |
|||
memoryAddress |
8 * memoryAddressLength |
Echo of memoryAddress value from the request |
Always |
|||
memorySize |
8 * memorySizeLength |
Echo of memorySize value from the request |
Always |
|||
TesterPresent (0x3E)
TesterPresent service is used by the client to indicate to the server that the diagnostic tester is still present on the communication bus. Reception of this service prevents the server’s S3Server timer from expiring, thereby extending the active diagnostic session.
Note
From the server’s implementation perspective, TesterPresent does not perform any diagnostic action. Reception of any diagnostic request (TesterPresent or otherwise) resets/extends the S3Server timer.
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x3E |
TesterPresent |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
zeroSubFunction |
7 (b[6-0]) |
0x00-0x7F |
Currently carries no information 0x00: zeroSubFunction 0x01-0x7F: reserved |
|||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0x7E |
TesterPresent |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
zeroSubFunction |
7 (b[6-0]) |
0x00-0x7F |
Echo of zeroSubFunction value from the request |
|||
AccessTimingParameter (0x83)
AccessTimingParameter service is used by the client to read or modify the timing parameters of the diagnostic communication link.
Warning
Withdrawn in ISO 14229-1:2020
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x83 |
AccessTimingParameter |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
timingParameterAccessType |
7 (b[6-0]) |
0x00-0x7F |
Type of interaction with timing parameters 0x00: reserved 0x01: readExtendedTimingParameterSet 0x02: setTimingParametersToDefaultValues 0x03: readCurrentlyActiveTimingParameters 0x04: setTimingParametersToGivenValues 0x05-0x7F: reserved |
|||
TimingParameterRequestRecord |
multiple of 8 |
Values of the timing parameter to set |
If timingParameterAccessType equals 0x04 (setTimingParametersToGivenValues) |
|||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0xC3 |
AccessTimingParameter |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
timingParameterAccessType |
7 (b[6-0]) |
0x00-0x7F |
Echo of timingParameterAccessType value from the request |
|||
TimingParameterResponseRecord |
multiple of 8 |
Value(s) of the read timing parameter(s) |
If timingParameterAccessType equals 0x01 (readExtendedTimingParameterSet) or 0x03 (readCurrentlyActiveTimingParameters) |
|||
SecuredDataTransmission (0x84)
SecuredDataTransmission service is applicable if a client intends to use diagnostic services defined in this document in a secured mode. It may also be used to transmit external data, which conform to some other application protocol, in a secured mode between a client and a server. A secured mode in this context means that the data transmitted is protected by cryptographic methods.
Request Format
ISO 14229-1:2020
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x84 |
SecuredDataTransmission |
Always |
||
Administrative Parameter |
reserved |
16 |
9 (b[15-7]) |
0x000 |
Reserved by ISO 14229 |
Always |
Signature on the response is requested. |
1 (b[6]) |
0x0-0x1 |
Whether Signature/MAC shall be presented in the response message 1: yes 0: no |
|||
Message is signed. |
1 (b[5]) |
0x0-0x1 |
Whether Signature/MAC is presented in the request message 1: yes 0: no |
|||
Message is encrypted. |
1 (b[4]) |
0x0-0x1 |
Whether Internal Message Service Request ID and Service Specific Parameters contain encrypted message 1: yes 0: no |
|||
A pre-established key is used. |
1 (b[3]) |
0x0-0x1 |
Whether previously established encryption key is in use 1: yes 0: no |
|||
reserved |
2 (b[2-1]) |
0x0 |
Reserved by ISO 14229 |
|||
Message is request message. |
1 (b[0]) |
0x1 |
Whether this is request message 1: yes |
|||
Signature/Encryption Calculation |
8 |
0x00-0xFF |
Indicates types of encryption algorithms used 0x00-0x7F: vehicle manufacturer specific 0x80-0x8F: system supplier specific 0x90-0xFF: reserved |
Always |
||
Signature Length |
16 |
0x0000-0xFFFF |
Number of bytes to use for Signature/MAC |
Always |
||
Anti-replay Counter |
16 |
0x0000-0xFFFF |
An incrementing counter to prevent a replay attack |
Always |
||
Internal Message Service Request ID |
8 |
0x00-0xFF |
Request SID value (might be encrypted) |
Always |
||
Service Specific Parameters |
multiple of 8 |
The following request message bytes (might be encrypted) |
Optional |
|||
Signature/MAC |
8 * Signature Length |
Message signature |
If Signature Length unequals 0 |
|||
ISO 14229-1:2013
Name |
Bit Length |
Value |
Description |
Present |
|---|---|---|---|---|
SID |
8 |
0x84 |
SecuredDataTransmission |
Always |
securityDataRequestRecord |
multiple of 8 |
Encrypted request message |
Always |
Positive Response Format
ISO 14229-1:2020
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0xC4 |
SecuredDataTransmission |
Always |
||
Administrative Parameter |
reserved |
16 |
9 (b[15-7]) |
0x000 |
Reserved by ISO 14229 |
Always |
Signature on the response is requested. |
1 (b[6]) |
0x0-0x1 |
Echo of Signature on the response is requested. value from the request |
|||
Message is signed. |
1 (b[5]) |
0x0-0x1 |
Whether Signature/MAC is presented in the response message 1: yes 0: no |
|||
Message is encrypted. |
1 (b[4]) |
0x0-0x1 |
Whether Internal Message Service Response ID and Response Specific Parameters contain encrypted message 1: yes 0: no |
|||
A pre-established key is used. |
1 (b[3]) |
0x0-0x1 |
Whether previously established encryption key is in use 1: yes 0: no |
|||
reserved |
2 (b[2-1]) |
0x0 |
Reserved by ISO 14229 |
|||
Message is request message. |
1 (b[0]) |
0x0 |
Whether this is request message 0: no |
|||
Signature/Encryption Calculation |
8 |
0x00-0xFF |
Indicates types of encryption algorithms used 0x00-0x7F: vehicle manufacturer specific 0x80-0x8F: system supplier specific 0x90-0xFF: reserved |
Always |
||
Signature Length |
16 |
0x0000-0xFFFF |
Number of bytes to use for Signature/MAC |
Always |
||
Anti-replay Counter |
16 |
0x0000-0xFFFF |
An incrementing counter to prevent a replay attack |
Always |
||
Internal Message Service Response ID |
8 |
0x00-0xFF |
Response SID value (might be encrypted) |
Always |
||
Response Specific Parameters |
multiple of 8 |
The following response message bytes (might be encrypted) |
Optional |
|||
Signature/MAC |
8 * Signature Length |
Message signature |
If Signature Length unequals 0 |
|||
ISO 14229-1:2013
Name |
Bit Length |
Value |
Description |
Present |
|---|---|---|---|---|
RSID |
8 |
0xC4 |
SecuredDataTransmission |
Always |
securityDataResponseRecord |
multiple of 8 |
Encrypted response message |
Always |
ControlDTCSetting (0x85)
ControlDTCSetting service allows the client to stop or resume the updating of DTC status bits in the server(s) memory.
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x85 |
ControlDTCSetting |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
DTCSettingType |
7 (b[6-0]) |
0x00-0x7F |
Type of control over DTC 0x00: reserved 0x01: on 0x02: off 0x03-0x3F: reserved 0x40-0x5F: vehicle manufacturer specific 0x60-0x7E: system supplier specific 0x7F: reserved |
|||
DTCSettingControlOptionRecord |
multiple of 8 |
Additional information (e.g. list of DTCs to be affected) |
Optional |
|||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0xC5 |
ControlDTCSetting |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
DTCSettingType |
7 (b[6-0]) |
0x00-0x7F |
Echo of DTCSettingType value from the request |
|||
ResponseOnEvent (0x86)
ResponseOnEvent service allows the client to request from the server to start or stop transmission of responses on a specified event.
Warning
In ISO 14229-1 DTCSnapshotRecordNumber, DTCExtDataRecordNumber and MemorySelection “follow” ReadDTCInformation SubFunction and are part of eventTypeRecord (if event equals 9). In the translator (due to code design limitations), eventTypeRecord contains only DTCStatusMask and ReadDTCInformation SubFunction Data Records. DTCSnapshotRecordNumber, DTCExtDataRecordNumber and MemorySelection are represented as separate Data Records that follows eventTypeRecord (for event equals 9).
Request Format
ISO 14229-1:2020
Name |
Bit Length |
Value |
Description |
Present |
|||
|---|---|---|---|---|---|---|---|
SID |
8 |
0x86 |
ResponseOnEvent |
Always |
|||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
|
eventType |
storageState |
1 (b[6]) |
0x0-0x1 |
Whether the event shall be stored after a reset 0x00: doNotStoreEvent 0x01: storeEvent |
|||
event |
6 (b[5-0]) |
0x00-0x3F |
Event type 0x00: stopResponseOnEvent 0x01: onDTCStatusChange 0x02: reserved 0x03: onChangeOfDataIdentifier 0x04: reportActivatedEvents 0x05: startResponseOnEvent 0x06: clearResponseOnEvent 0x07: onComparisonOfValues 0x08: reportMostRecentDtcOnStatusChange 0x09: reportDTCRecordInformationOnDtcStatusChange 0x0A-0x3F: reserved |
||||
eventWindowTime |
8 |
0x00-0xFF |
Time for the event to be active 0x00-0x01: reserved 0x02: infiniteTimeToResponse 0x03: shortEventWindowTime 0x04: mediumEventWindowTime 0x05: longEventWindowTime 0x06: powerWindowTime 0x07: ignitionWindowTime 0x08: manufacturerTriggerEventWindowTime 0x09-0xFF: reserved |
Always |
|||
eventTypeRecord |
DTCStatusMask |
8 |
0x00-0xFF |
DTC Status bits to trigger event |
If event equals 0x01 (onDTCStatusChange) |
||
eventTypeRecord |
DID |
16 |
0x0000-0xFFFF |
DID change to trigger event |
If event equals 0x03 (onChangeOfDataIdentifier) |
||
eventTypeRecord |
DID |
80 |
16 (b[79-64]) |
0x0000-0xFFFF |
DID that contains Data Record to compare |
If event equals 0x07 (onComparisonOfValues) |
|
Comparison logic |
8 (b[63-56]) |
0x00-0xFF |
Comparison type 0x00: reserved 0x01: < 0x02: > 0x03: = 0x04: <> 0x05-0xFF: reserved |
||||
Compare Value |
32 (b[55-24]) |
0x00000000-0xFFFFFFFF |
Constant value to compare |
||||
Hysteresis Value |
8 (b[23-16]) |
0x00-0xFF |
Value of hysteresis in % of Compare Value: 0x00: 0% … 0x64: 100% If “Compare Value” is equal 0, then hysteresis an absolute value. |
||||
Localization |
Compare Sign |
1 (b[15]) |
0x0-0x1 |
Whether comparison is performed on signed or unsigned values 0: Comparison without sign 1: Comparison with sign |
|||
Bits Number |
5 (b[14-10]) |
0x00-0x1F |
Number of bits to compare 0x00: 32 0x01: 1 0x02: 2 … 0x1F: 31 |
||||
Bit Offset |
10 (b[9-0]) |
0x000-0x3FF |
Value position offset in DID |
||||
eventTypeRecord |
reserved |
8 |
1 (b[7]) |
0x0-0x1 |
Unused |
If event equals 0x08 (reportMostRecentDtcOnStatusChange) |
|
reportType |
7 (b[6-0]) |
0x0D-0x0E |
ReadDTCInfromation SubFunction response to be triggered on event 0x0D: reportMostRecentTestFailedDTC 0x0E: reportMostRecentConfirmedDTC |
||||
eventTypeRecord |
DTCStatusMask |
24 or 32 |
8 (b[31-24] or b[23-16]) |
0x00-0xFF |
DTC Status bits to trigger event |
If event equals 0x09 (reportDTCRecordInformationOnDtcStatusChange) |
|
reserved |
1 (b[23] or b[15]) |
0x0-0x1 |
Unused |
||||
reportType |
8 (b[22-16] or b[14-8]) |
0x04-0x19 |
ReadDTCInformation SubFunction response to be triggered on event 0x04: reportDTCSnapshotRecordByDTCNumber 0x06: reportDTCExtDataRecordByDTCNumber 0x18: reportUserDefMemoryDTCSnapshotRecordByDTCNumber 0x19: reportUserDefMemoryDTCExtDataRecordByDTCNumber |
||||
DTCSnapshotRecordNumber |
8 (b[15-8] or b[7-0]) |
0x00-0xFF |
Number of requested DTC Snapshot Record(s) 0x00: reserved (legislated purposes) 0x01-0xFE: specific snapshot record 0xFF: all snapshot records |
If event equals 0x09 (reportDTCRecordInformationOnDtcStatusChange) AND reportType equals 0x04 (reportDTCSnapshotRecordByDTCNumber) or 0x18 (reportUserDefMemoryDTCSnapshotRecordByDTCNumber) |
|||
DTCExtDataRecordNumber |
8 (b[15-8] or b[7-0]) |
0x00-0xFF |
Number of requested DTC Extended Data Record(s) 0x00: reserved 0x01-0x8F: vehicle manufacturer specific record 0x90-0x9F: regulated emissions OBD record 0xA0-0xEF: regulated record 0xF0-0xFD: reserved 0xFE: all regulated emissions OBD records 0xFF: all extended data records |
If event equals 0x09 (reportDTCRecordInformationOnDtcStatusChange) AND reportType equals 0x06 (reportDTCExtDataRecordByDTCNumber) or 0x19 (reportUserDefMemoryDTCExtDataRecordByDTCNumber) |
|||
MemorySelection |
8 (b[7-0]) |
0x00-0xFF |
Specifies DTC memory |
If event equals 0x09 (reportDTCRecordInformationOnDtcStatusChange) AND reportType equals 0x18 (reportUserDefMemoryDTCSnapshotRecordByDTCNumber) or 0x19 (reportUserDefMemoryDTCExtDataRecordByDTCNumber) |
|||
serviceToRespondToRecord |
SID |
multiple of 8 |
8 |
0x00-0xFF |
SID value of Service to respond on Event |
If event equals 0x01 (onDTCStatusChange), 0x02 (onTimerInterrupt), 0x03 (onChangeOfDataIdentifier) or 0x07 (onComparisonOfValues) |
|
Service Specific Parameters |
multiple of 8 |
The following request message bytes |
Optional if event equals 0x01 (onDTCStatusChange), 0x02 (onTimerInterrupt), 0x03 (onChangeOfDataIdentifier) or 0x07 (onComparisonOfValues) |
||||
ISO 14229-1:2013
Name |
Bit Length |
Value |
Description |
Present |
|||
|---|---|---|---|---|---|---|---|
SID |
8 |
0x86 |
ResponseOnEvent |
Always |
|||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
|
eventType |
storageState |
1 (b[6]) |
0x0-0x1 |
Whether the event shall be stored after a reset 0x00: doNotStoreEvent 0x01: storeEvent |
|||
event |
6 (b[5-0]) |
0x00-0x3F |
Event type 0x00: stopResponseOnEvent 0x01: onDTCStatusChange 0x02: onTimerInterrupt 0x03: onChangeOfDataIdentifier 0x04: reportActivatedEvents 0x05: startResponseOnEvent 0x06: clearResponseOnEvent 0x07: onComparisonOfValues 0x08-0x1F: reserved 0x20-0x2F: vehicle manufacturer specific 0x30-0x3E: system supplier specific 0x3F: reserved |
||||
eventWindowTime |
8 |
0x00-0xFF |
Time for the event to be active 0x00-0x01: reserved 0x02: infiniteTimeToResponse 0x03-0x7F: vehicle manufacturer specific 0x80-0xFF: reserved |
Always |
|||
eventTypeRecord |
DTCStatusMask |
8 |
0x00-0xFF |
DTC Status bits to trigger event |
If event equals 0x01 (onDTCStatusChange) |
||
eventTypeRecord |
Timer schedule |
8 |
0x00-0xFF |
0x01: Slow rate 0x02: Medium rate 0x03: Fast rate |
If event equals 0x02 (onTimerInterrupt) |
||
eventTypeRecord |
DID |
16 |
0x0000-0xFFFF |
DID change to trigger event |
If event equals 0x03 (onChangeOfDataIdentifier) |
||
eventTypeRecord |
DID |
80 |
16 (b[79-64]) |
0x0000-0xFFFF |
DID that contains Data Record to compare |
If event equals 0x07 (onComparisonOfValues) |
|
Comparison logic |
8 (b[63-56]) |
0x00-0xFF |
Comparison type 0x00: reserved 0x01: < 0x02: > 0x03: = 0x04: <> 0x05-0xFF: reserved |
||||
Compare Value |
32 (b[55-24]) |
0x00000000-0xFFFFFFFF |
Constant value to compare |
||||
Hysteresis Value |
8 (b[23-16]) |
0x00-0xFF |
Value of hysteresis in % of Compare Value: 0x00: 0% … 0x64: 100% If “Compare Value” is equal 0, then hysteresis an absolute value. |
||||
Localization |
Compare Sign |
1 (b[15]) |
0x0-0x1 |
Whether comparison is performed on signed or unsigned values 0: Comparison without sign 1: Comparison with sign |
|||
Bits Number |
5 (b[14-10]) |
0x00-0x1F |
Number of bits to compare 0x00: 32 0x01: 1 0x02: 2 … 0x1F: 31 |
||||
Bit Offset |
10 (b[9-0]) |
0x000-0x3FF |
Value position offset in DID |
||||
serviceToRespondToRecord |
SID |
multiple of 8 |
8 |
0x00-0xFF |
SID value of Service to respond on Event |
If event equals 0x01 (onDTCStatusChange), 0x02 (onTimerInterrupt), 0x03 (onChangeOfDataIdentifier) or 0x07 (onComparisonOfValues) |
|
Service Specific Parameters |
multiple of 8 |
The following request message bytes |
Optional if event equals 0x01 (onDTCStatusChange), 0x02 (onTimerInterrupt), 0x03 (onChangeOfDataIdentifier) or 0x07 (onComparisonOfValues) |
||||
Positive Response Format
reportActivatedEvents (0x04)
Name |
Bit Length |
Value |
Description |
Present |
|||
|---|---|---|---|---|---|---|---|
RSID |
8 |
0xC6 |
ResponseOnEvent |
Always |
|||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
|
eventType |
storageState |
1 (b[6]) |
0x0-0x1 |
Echo of storageState value from the request |
|||
event |
6 (b[5-0]) |
0x04 |
reportActivatedEvents |
||||
numberOfActivatedEvents |
8 |
0x00-0xFF |
Number of active events (n) |
Always |
|||
eventTypeOfActiveEvent#1 |
8 |
0x00-0xFF |
The value of eventType sent in the request (event#1) |
If there is at least 1 active event |
|||
eventWindowTime#1 |
8 |
0x00-0xFF |
The value of eventWindowTime sent in the request (event#1) |
||||
eventTypeRecord#1 |
8-80 |
The value of eventTypeRecord sent in the request (event#1) |
If there is at least 1 active event AND the event#1 requires eventTypeRecord |
||||
serviceToRespondToRecord#1 |
multiple of 8 |
The value of serviceToRespondToRecord sent in the request (event#1) |
If there is at least 1 active event AND the event#1 requires serviceToRespondToRecord |
||||
… |
|||||||
eventTypeOfActiveEvent#n |
8 |
0x00-0xFF |
The value of eventType sent in the request (event#n) |
If there is at least n active events |
|||
eventWindowTime#n |
8 |
0x00-0xFF |
The value of eventWindowTime sent in the request (event#n) |
||||
eventTypeRecord#n |
8-80 |
The value of eventTypeRecord sent in the request (event#n) |
If there is at least n active events AND the event#n requires eventTypeRecord |
||||
serviceToRespondToRecord#n |
multiple of 8 |
The value of serviceToRespondToRecord sent in the request (event#n) |
If there is at least n active events AND the event#n requires serviceToRespondToRecord |
||||
other
Positive response if SubFunction*[*eventType][event] unequals 0x04 (reportActivatedEvents).
Name |
Bit Length |
Value |
Description |
Present |
|||
|---|---|---|---|---|---|---|---|
RSID |
8 |
0xC6 |
ResponseOnEvent |
Always |
|||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
|
eventType |
storageState |
1 (b[6]) |
0x0-0x1 |
Echo of storageState value from the request |
|||
event |
6 (b[5-0]) |
0x00-0x3F |
Echo of event value from the request |
||||
numberOfIdentifiedEvents |
8 |
0x00-0xFF |
Number of identified events during an active event window. |
Always |
|||
eventWindowTime |
8 |
0x00-0xFF |
Echo of eventWindowTime value from the request |
Always |
|||
eventTypeRecord |
8-80 |
Echo of eventTypeRecord value from the request |
If eventTypeRecord was present in the request |
||||
serviceToRespondToRecord |
multiple of 8 |
Echo of serviceToRespondToRecord value from the request |
If serviceToRespondToRecord was present in the request |
||||
LinkControl (0x87)
LinkControl service allows the client to control the communication between the client and the server(s) to gain bus bandwidth for diagnostic purposes (e.g. programming).
Request Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
SID |
8 |
0x87 |
LinkControl |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Information for the server whether to send positive response 0: response required 1: suppress positive response |
Always |
linkControlType |
7 (b[6-0]) |
0x00-0x7F |
Type of action to perform 0x00: reserved 0x01: verifyModeTransitionWithFixedParameter 0x02: verifyModeTransitionWithSpecificParameter 0x03: transitionMode 0x04-0x3F: reserved 0x40-0x5F: vehicle manufacturer specific 0x60-0x7E: system supplier specific 0x7F: reserved |
|||
linkControlModeIdentifier |
8 |
0x00-0xFF |
Network mode to verify 0x00: reserved 0x01: PC9600Baud 0x02: PC19200Baud 0x03: PC38400Baud 0x04: PC57600Baud 0x05: PC115200Baud 0x06-0x0F: reserved 0x10: CAN125000Baud 0x11: CAN250000Baud 0x12: CAN500000Baud 0x13: CAN1000000Baud 0x14-0x1F: reserved 0x20: ProgrammingSetup 0x21-0xFF: reserved |
If linkControlType equals 0x01 (verifyModeTransitionWithFixedParameter) |
||
linkRecord |
24 |
0x000000-0xFFFFFF |
Value of a parameter specific for network used |
If linkControlType equals 0x02 (verifyModeTransitionWithSpecificParameter) |
||
Positive Response Format
Name |
Bit Length |
Value |
Description |
Present |
||
|---|---|---|---|---|---|---|
RSID |
8 |
0xC7 |
LinkControl |
Always |
||
SubFunction |
suppressPosRspMsgIndicationBit |
8 |
1 (b[7]) |
0x0-0x1 |
Echo of suppressPosRspMsgIndicationBit value from the request |
Always |
linkControlType |
7 (b[6-0]) |
0x00-0x7F |
Echo of linkControlType value from the request |
|||