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:

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):

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

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

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

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).

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.

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

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#ntype*=0x9 (formula), *numberOfBytesOfParameter scalingByteExtension#nformulaIdentifier C0#nExponent, Mantissa C1#nExponent, 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:

  1. The client requests a seed from the server.

  2. The server responds with a positive response that includes a randomly generated seed value.

  3. Both the client and server compute a key value based on the seed (using a secret algorithm).

  4. The client sends the computed key to the server.

  5. 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:

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:

  1. Initial confirmation response — sent immediately after the request

  2. 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):

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