CANboat decodes and encodes the CAN networks on boats: NMEA 2000 above all, and the SAE J1939 and Quick PCS buses some engines and windlasses speak. The NMEA 2000 database is closed, so CANboat's has been reverse engineered from observation and public sources since 2009. The source is on GitHub.
Every message CANboat knows, field by field, with the enumerations they use:
The same definitions, for use in your own project (pin a release; semantic versioning flags changes to them):
| JSON | XML | |
|---|---|---|
| NMEA 2000 | canboat.json | canboat.xml, schema canboat.xsd |
| SAE J1939 | canboat-j1939.json | canboat-j1939.xml |
| Quick PCS | canboat-quick.json | canboat-quick.xml |
| canboat's own pseudo-PGNs | canboat-pseudo.json | canboat-pseudo.xml |
NMEA 2000 as a CAN database for CAN tools: canboat.dbc.
canboat binary and each of its subcommandscanboat server: its ports, running it as a service, the device quirks, a capture as a live busanalyzer and canboat convert readcanboat Rust library: quick start, API reference, designanalyzer, the gateway drivers and the helpers, with their optionsHow some proprietary PGNs work, worked out on the bus:
And the projects that use CANboat's definitions: the downstream survey of October 2026.