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
| Field | Bits | Description |
|---|---|---|
| Format byte | 8 | Length info |
| Target / Source | 16 | Addressing (optional) |
| SID | 8 | Service ID |
| Data | var | Service parameters |
| Checksum | 8 | Sum 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
| Off | Size | Field | Value | Description |
|---|---|---|---|---|
| 0 | 1 B | Format | 0x80 | Address mode with separate length byte. |
| 1 | 1 B | Target | 0x11 | ECU address. |
| 2 | 1 B | Source | 0xF1 | Tester address. |
| 3 | 1 B | Length | 0x01 | Number of payload bytes. |
| 4 | 1 B | SID | 0x81 | StartCommunication. |
| 5 | 1 B | Checksum | 0x04 | Sum of bytes 0..N modulo 256. |
Response
| Off | Size | Field | Value | Description |
|---|---|---|---|---|
| 0 | 1 B | Format | 0x83 | Address mode + length 3 packed in one byte. |
| 1 | 1 B | Target | 0xF1 | Tester (swapped). |
| 2 | 1 B | Source | 0x11 | ECU. |
| 3 | 1 B | SID + 0x40 | 0xC1 | Positive response to 0x81. |
| 4–5 | 2 B | Key bytes | EA 8F | ECU keyword bytes (define timing, header style). |
| 6 | 1 B | Checksum | 0xD9 | Sum 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.