A Python API and CAN database for controlling and reading data from modern cars with ADAS interfaces.
opendbc is a Python API and database for interacting with a car's internal network (CAN bus). It allows developers to read vehicle data like speed and steering angle, and send commands to control steering, acceleration, and braking. The project serves as the foundational layer for the openpilot ADAS system, enabling aftermarket advanced driver-assistance features on supported vehicles.
Automotive engineers, researchers, and hobbyists interested in vehicle reverse engineering, developing ADAS features, or integrating custom software with modern car electronics. It's particularly relevant for those contributing to or building upon the openpilot ecosystem.
Developers choose opendbc because it provides a well-documented, safety-focused, and community-vetted open-source interface to vehicle CAN buses. Its extensive library of DBC files and structured porting framework significantly lowers the barrier to adding support for new car models compared to starting from scratch.
a Python API for your car
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Includes a large repository of standardized DBC files for various car models in the `opendbc/dbc/` directory, reducing the need to reverse engineer CAN messages from scratch.
Features functional safety firmware in `opendbc/safety/` that enforces safe message passing, with rigorous testing including MISRA C compliance and 100% line coverage.
Provides a structured library (`opendbc/car/`) and documentation for adding new car support, backed by bounties to incentivize contributions, as highlighted in the roadmap.
Seamlessly supports the openpilot ADAS system, offering a proven platform for advanced driver-assistance features and access to tools like cabana for reverse engineering.
Optimized for comma hardware like the panda and comma four, requiring specific devices for full functionality, which can limit accessibility and increase cost.
Porting a new car involves reverse engineering CAN messages using tools like cabana and extensive tuning, demanding automotive expertise and time, as acknowledged in the porting guide.
The roadmap admits car ports need to be made easier, and some aspects rely on community resources like Discord, rather than comprehensive, beginner-friendly guides.