Distinguish ADDRESS bytes from DATA bytes using the MDB mode bit (set = ADDRESS, clear = DATA) in each transmitted byte.
Respond to periodic VMC POLL commands with any pending status/event data for the device.
Validate each block using the MDB checksum (CHK) byte, computed by adding the ADDRESS byte and all DATA bytes.
Handle the device non-response timeout correctly so the VMC does not falsely mark the peripheral offline.
Known gotchas
MDB was designed cash-first; cashless payment support (session/revalue commands) was added later, so not all VMC firmware or peripheral revisions support the same cashless feature level — feature-level mismatches are a common source of 'payment accepted but not applied' bugs.
Two cashless device addresses exist (Cashless Device #1 at 10H and #2 at 60H, added in a later spec revision) — a VMC or peripheral written against an older single-cashless-device assumption may ignore the second address entirely.
The bus runs at a fixed 9600 baud with strict non-response timing — a peripheral that is slow to answer a POLL can be treated as absent by the VMC, so response timing budgets matter more than raw throughput.
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?