Tool
cantools
Python 3 library and command-line tool for CAN bus databases that parses DBC, KCD, SYM, ARXML 3/4 and CDD files and encodes and decodes CAN messages, including simple and extended signal multiplexing and diagnostic DIDs. Its CLI decodes candump output against a database, plots decoded signals from candump logs with matplotlib, dumps each message's bit layout, converts between database formats, generates C pack and unpack code, and monitors a live bus in a text interface through python-can.
- Targets
- Protocol
- Category
- Protocol analysis tools
- Relationship
- Foundation tool
- Sources reviewed
Requirements & limits
- Latest release at review: 45.1.0, published 2026-10-20 on GitHub and PyPI; the reviewed master commit is 15 commits ahead of that tag. It installs with pip, and pyproject.toml requires Python 3.10+ with python-can, bitstruct, textparser, crccheck and argparse_addons, plus optional extras for plotting (matplotlib), caching (diskcache) and Windows curses support for the monitor.
- Bring a database describing the target network and frames captured from it: decode reads candump output on standard input and plot reads candump log files, while monitor takes python-can bus arguments for a live interface, and the README's scripting example sends and receives frames on a SocketCAN channel. The repository's tests/files directory holds sample DBC, KCD, SYM, ARXML and CDD databases and generated C sources used by the examples and tests.
- Decoding covers only what the supplied database defines; cantools applies existing message and signal definitions rather than inferring unknown layouts, and the README notes that generated C code is limited to signals of at most 64 bits. MIT licensed. No bus was connected and no captures were decoded.
About this entry
The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.
Primary sources
- README.rst GitHub · cantools/cantools · Revision 5d37340
- README.rst#L1-L35 GitHub · cantools/cantools · Revision 5d37340
- README.rst#L83-L130 GitHub · cantools/cantools · Revision 5d37340
- README.rst#L291-L310 GitHub · cantools/cantools · Revision 5d37340
- pyproject.toml GitHub · cantools/cantools · Revision 5d37340
- src/cantools/subparsers GitHub · cantools/cantools · Revision 5d37340
- src/cantools/subparsers/monitor.py GitHub · cantools/cantools · Revision 5d37340
- tests/files GitHub · cantools/cantools · Revision 5d37340
- LICENSE GitHub · cantools/cantools · Revision 5d37340
- https://github.com/cantools/cantools/releases/tag/45.1.0
- https://pypi.org/project/cantools/45.1.0/
- https://cantools.readthedocs.io/en/latest/
More in Protocols
- inspectrum · Tool
- PULSAR · Tool
- CanLab · Tool
- Facedancer · Tool
- Mirage · Tool
- Protobuf Decoder · Tool