Start with the physical layer
CAN problems are often investigated from the software side first, but the physical layer can answer the earliest questions. Check termination, wiring, grounding, transceiver power, and bus voltage before spending hours in application code.
Log what matters
A useful CAN log captures identifiers, data bytes, timestamps, error counters, and bus state. Timing is especially important because a correct payload at the wrong period can still break a system.
timestamp_ms,id,dlc,data
1024.334,0x181,8,10 2A 00 00 00 00 1C 00
1034.338,0x181,8,10 2B 00 00 00 00 1B 00
Integration checks
- Confirm message IDs and byte order with the signal database.
- Validate scaling and offsets using known physical inputs.
- Monitor missing frames and unexpected frequency changes.
- Record bus-off, error-passive, and error-warning transitions.
Field debugging
Add firmware counters for receive overflow, transmit failure, invalid DLC, and parser rejection. These counters make intermittent field issues easier to diagnose.
Summary
CAN diagnostics is a discipline of narrowing uncertainty. Start from the wire, move through timing, then validate meaning.