Subscribe to J1939 DM1 broadcasts to detect a heavy-duty vehicle's active diagnostic trouble codes in real time instead of polling
domain: csselectronics.com · 5 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗
Steps
Listen for PGN 65226 (0xFECA) on the J1939 bus, which carries the DM1 "Active Diagnostic Trouble Codes" message
Expect a DM1 broadcast every 1 second while any DTC is active, and every 10 seconds when none are active
Handle the single-frame case (no active DTCs fits in 8 bytes) separately from the multi-packet Transport Protocol case once one or more DTCs are active
Trigger an immediate out-of-cycle handler for the moment lamp status or the active DTC set changes
Decode each DTC's SPN/FMI/occurrence-count fields from the reassembled payload
Known gotchas
DM1 message length is variable — it fits in one CAN frame only when there are zero active codes; once codes appear it exceeds 8 bytes and requires Transport Protocol multi-packet reassembly
Relying on the 1-second/10-second broadcast cadence alone can miss instantaneous state changes if the immediate-transmission-on-change behavior isn't also handled
Give your agent this knowledge — and 15,500+ more routes
One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp
Need this verified for your stack — or a route we don't have yet?