KWP2000 — ISO 14230
KWP2000 Request / Response Playground
Choose CAN (ISO-TP wrapped) or K-Line (ISO 14230-2 physical layer with FMT/TGT/SRC/LEN/CS) and exercise the full KWP2000 service catalogue — diagnostic sessions, identification, security access, data and memory I/O, routines, and bulk download.
Compose request
Quick presets
Response
[ idle — send a request to begin ]
Positive responses use SID + 0x40; negative responses are 7F <SID> <NRC>. CAN frames are ISO-TP single frames padded to 8 bytes; K-Line frames carry a trailing XOR checksum byte.
Service Catalog
KWP2000 — ISO 14230 · 25 service (sid)s| Service (SID) | Name | Description | Request format | Example |
|---|---|---|---|---|
| 0x10 | StartDiagnosticSession | Begin a diagnostic session and set timing. Session: 0x81=default, 0x85=programming, 0x89=stand-by, 0x90=EOL. | 10 SessionType | 81 |
| 0x11 | ECUReset | Force the ECU to reboot. 01=power-on, 02=key-off-on, 03=soft. | 11 ResetMode | 01 |
| 0x14 | ClearDiagnosticInformation | Erase DTCs (group code). | 14 Group(2) | FF 00 |
| 0x18 | ReadDTCByStatus | Read DTCs filtered by status mask. | 18 Status Group(2) | 02 FF 00 |
| 0x1A | ReadECUIdentification | Read identification record (e.g. VIN, HW/SW version). 0x90=VIN, 0x91=Vehicle Mfr ECU HW Number, 0x92=ECU SW Number, 0x9B=ECU ident. | 1A IdentOption | 90 |
| 0x20 | StopDiagnosticSession | Return ECU to default session. | 20 | — |
| 0x21 | ReadDataByLocalIdentifier | Read a value by its local ID. | 21 LID | 01 |
| 0x22 | ReadDataByCommonIdentifier | Read a value by its common (16-bit) ID. | 22 CID(2) | F1 90 |
| 0x23 | ReadMemoryByAddress | Read raw memory. | 23 Addr(3) Size(1) | 00 80 00 04 |
| 0x27 | SecurityAccess | Seed/key authentication for protected services. | 27 AccessMode [Key] | 01 |
| 0x2C | DynamicallyDefineLocalIdentifier | Compose a local identifier from multiple sources. | 2C LID DefMode … | F0 01 22 F1 90 01 |
| 0x2E | WriteDataByCommonIdentifier | Write a value addressed by 16-bit CID. | 2E CID(2) Data | F1 90 01 02 03 |
| 0x2F | InputOutputControlByCommonIdentifier | Drive an actuator or freeze a sensor reading. | 2F CID(2) CtrlByte [State] | 01 00 03 01 |
| 0x31 | StartRoutineByLocalIdentifier | Run a vendor-defined routine. | 31 RID [Param] | 01 |
| 0x32 | StopRoutineByLocalIdentifier | Stop a routine. | 32 RID | 01 |
| 0x33 | RequestRoutineResultsByLocalIdentifier | Read routine result. | 33 RID | 01 |
| 0x34 | RequestDownload | Tester announces an upcoming download. | 34 Addr(3) Format Size(3) | 00 80 00 00 00 10 00 |
| 0x35 | RequestUpload | Tester requests an upload from ECU. | 35 Addr(3) Format Size(3) | 00 80 00 00 00 10 00 |
| 0x36 | TransferData | Send/receive a block of data. | 36 BlockSeq Data… | 01 DE AD BE EF |
| 0x37 | RequestTransferExit | End data transfer. | 37 | — |
| 0x3B | WriteDataByLocalIdentifier | Write a value by local ID. | 3B LID Data | 01 AA BB |
| 0x3D | WriteMemoryByAddress | Write raw memory. | 3D Addr(3) Size(1) Data | 00 80 00 02 AA BB |
| 0x3E | TesterPresent | Keep the diagnostic session alive. 0x01=respond, 0x02=no response. | 3E ResponseType | 01 |
| 0x85 | ControlDTCSetting | Enable / disable DTC storage. | 85 OnOff | 01 |
| 0x86 | ResponseOnEvent | Trigger response when an event occurs. | 86 EventType … | 03 01 22 F1 90 |