How the IO-Link IODD checksum works
Every IODD (IO Device Description) file carries a checksum near the end: <Stamp crc= "1462814215" > <Checker name= "IODD-Checker V1.1.1" version= "V1.1.1.0" /> </Stamp> It is mandatory. Change one byte anywhere in the file and the stamp no longer matches, and the file will be rejected by engineering tools, by masters, and by the IODDfinder upload process. Despite the IO-Link ecosystem being nearly two decades old, there has been no open-source implementation of this algorithm — the only way to produce a valid stamp was to run the official closed-source, Windows-only IODD-Checker. This post explains exactly how the checksum is computed. Just want the code? calumk / IODDForge_Checker Compute and verify the <Stamp crc> checksum of IO-Link IODD files. Zero dependencies, works in Node, Bun and the browser. IODDForge Checker Compute and verify the <Stamp crc> checksum of IO-Link IODD files. Zero dependencies. Plain JavaScript ES modules. Runs in Node, Bun, Deno and the browser. Every IODD (IO Device Description) file ends with a block like this: < Stamp crc = " 1462814215 " > < Checker name = " IODD-Checker V1.1.1 " version = " V1.1.1.0 " /> </ Stamp > That crc is mandatory. Change one byte anywhere in the file and the stamp is invalid — masters, engineering tools and the IODDfinder upload process will reject it. Until now the only way to produce a correct one was to run a closed-source Windows tool, because no open-source implementation of this algorithm existed . This is that implementation. It reproduces the official checksum byte-for-byte on every file tested, across four generations of the vendor checker (V1.1.1, V1.1.5, V1.1.13 and V2025.1). Not affiliated with, or endorsed by… View on GitHub AI Disclaimer This repo, and the post you are about to read, was written by AI - it bares my name, but really is authored by Claud Opus 5. The algorithm The procedure is defined in IODD Specification 10.012, and the specification text is precise and complete. In summary: Use CR