All diagnostics
ISO 14230

KWP2000

Keyword Protocol 2000 — predecessor of UDS over K-Line / CAN.

Overview

KWP2000 introduced the request/response service model that UDS later refined. Many legacy ECUs still respond to KWP2000 services such as 0x10 StartDiagnosticSession and 0x21 ReadDataByLocalIdentifier.

Frame / message structure

FieldBitsDescription
Format byte8Length info
Target / Source16Addressing (optional)
SID8Service ID
DatavarService parameters
Checksum8Sum of preceding bytes

Byte structure — request & response

KWP2000 — ISO 14230 (K-Line example)

Frame template
[FMT 1B][TGT 1B][SRC 1B][LEN 1B][SID 1B][Params…][CS 1B]
Request
OffSizeFieldValueDescription
01 BFormat0x80Address mode with separate length byte.
11 BTarget0x11ECU address.
21 BSource0xF1Tester address.
31 BLength0x01Number of payload bytes.
41 BSID0x81StartCommunication.
51 BChecksum0x04Sum of bytes 0..N modulo 256.
Response
OffSizeFieldValueDescription
01 BFormat0x83Address mode + length 3 packed in one byte.
11 BTarget0xF1Tester (swapped).
21 BSource0x11ECU.
31 BSID + 0x400xC1Positive response to 0x81.
4–52 BKey bytesEA 8FECU keyword bytes (define timing, header style).
61 BChecksum0xD9Sum modulo 256.

On CAN, KWP2000 is wrapped in ISO-TP (PCI byte) and uses the same SID/sub-fn structure as UDS — many SIDs are identical (0x10, 0x22, 0x27, 0x3E …).

Use cases

  • · Legacy ECU diagnostics
  • · Aftermarket tuning tools

Pros

  • Simple, well-documented
  • Wide legacy support

Cons

  • Superseded by UDS
  • K-Line is slow

Request / Response examples

Start diagnostic session

Request
8111F18104
Response
83F111C1EA8FD9

Tester opens default session; ECU acknowledges with positive response 0xC1.