A small toolkit and Arduino/embedded project for decoding Tesla Model 3 CAN messages along with sending messages. It also has the function of turning off regnerative breaking by spoofing the BMS CAN message that tells it how much power it can accept (regen).
The firmware is intended for an Arduino-compatible microcontroller with a CAN transceiver (e.g., MCP2515 + SPI, or a built-in CAN peripheral on ESP32-CAN boards).
Model3CAN.dbc— The primary DBC file; useful for interpretation of messages and signals.main/main.ino— Example Arduino sketch which initializes CAN and feeds frames into the decoder.main/dbc_decode.*— Utilities for mapping DBC definitions to runtime decoding (project-specific code).main/model3_can.*— CAN bus initialization and higher-level Tesla message parsing.
- Working with a vehicle's CAN bus can be dangerous. Do not connect or modify vehicle systems unless you understand the risks and have appropriate safeguards in place. Avoid sending unknown frames to a vehicle unless you know the effect.
- Use this repository for research, learning, or offline decoding of captured data. When experimenting with live vehicles, do so responsibly.