4 Commits

Author SHA1 Message Date
43032dd845 Verify history depth with a 51840 read
The tag accepted 51840 but sent a header of 51792 and 50807 units of data,
about 69.5 days. Add the capture as a vector and correct the spec: the end
marker's length tracks delivered data, and at least one bit error changed
between reads, so the errors aren't all fixed in storage.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 20:28:54 -07:00
053897c287 Rewrite protocol spec from real captures
Move hardware results into the sections implementers follow: history
counts are 4-byte units, frames can be 160 bytes, transfers are padded and
end with a length field, and status and marks are raw values. Add real
frame vectors and the capture replay format so other languages can test.

Change history_count to request units, with a margin for stop records.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 20:24:32 -07:00
cc94b6048d Add real BM200 captures as test vectors
Capture a 120 s live session and a 22320-unit history read from a real tag
(firmware 1.8), with a replay test and a CSV export of the history.

Record hardware results in the spec: the core protocol holds, history
counts are 4-byte units, the end marker carries a length, the tag holds
stored bit errors, and voltage doesn't show vehicle state on a Prius.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 20:15:30 -07:00
Vibe Myass
13b95345c7 BM200 protocol findings and test bench
Spec with pseudocode and test vectors, APK disassembly, analysis tools,
shelved reference Python and the macOS BLE probe. Findings are not yet
validated against a real tag. The vendor XAPK and nested lib clone are
excluded.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EinWd3UT2Xw7UakFtTp6hn
2026-11-01 02:58:16 +00:00