Overview
The frame types
ISO-TP defines three frame types. First Frame (FF): carries the length and the first 6 bytes of data. Consecutive Frame (CF): carries 7 bytes each, in order, with a 4-bit sequence counter that wraps 0→15. Flow Control (FC): the receiver tells the sender how many consecutive frames to send before pausing and what minimum separation to use.
A worked example
A 30-byte UDS message: First Frame carries 0x1E (length) and bytes 0–5 (6 bytes). Then the receiver sends a Flow Control frame with BlockSize=0 (send them all) and STmin=0 (no minimum delay). Then 4 Consecutive Frames: bytes 6–12 (CF 0), bytes 13–19 (CF 1), bytes 20–26 (CF 2), bytes 27–29 plus 4 pad bytes (CF 3).
Beemuu support
Beemuu’s src-tauri/src/transport/isotp.rs handles the FF/CF/FC state machine. The 430-line implementation is regression-tested in cargo test and the CLAUDE.md v0.14.4 refresh specifically cites it as an enforced invariant.
DoIP vs CAN segmentation
On the DoIP path, segmentation is different. DoIP wraps each UDS message in a single DoIP header; if the message is bigger than the DoIP MTU, the DoIP layer itself handles the segmentation. ISO-TP is only on the CAN path.
FAQ
What is ISO-TP?
ISO Transport Layer, ISO 15765-2. The segmentation layer for UDS over CAN.
Why is ISO-TP needed?
CAN frames carry 8 bytes; UDS messages routinely need more. ISO-TP splits long UDS messages across multiple CAN frames with a flow-control protocol.
Does ISO-TP apply to DoIP?
No. On DoIP, segmentation is handled by the DoIP transport itself. ISO-TP is only on the CAN path.