// the find
adamtheone/canDrive
Tools for hacking your car
canDrive is an Arduino/STM32-based CAN bus sniffer for reverse engineering automotive CAN packets. It covers the full stack: custom PCB hardware, STM32 firmware running FreeRTOS, and a PyQt5 GUI for visualizing and decoding packets. For someone wanting to understand what their car is doing on the wire, this is a working starting point rather than a polished tool.
The project spans hardware to GUI in one repo — Altium schematics, STM32F413 firmware with FreeRTOS task separation (forwarder/infocollector/transmitter modules), and a Python GUI that handles live sniffing and packet decoding from CSV. The RANDOM_CAN test mode in the Arduino sketch lets you exercise the GUI without needing a car or hardware. FreeRTOS is a reasonable choice for the STM32 side — it gives you clean task boundaries for BLE, USB, CAN forwarding, and WiFi without polling soup. The community Google Sheet for decoded IDs is a practical workaround for the fact that OEM CAN databases are never public.
Board2 firmware was never uploaded — the nRF project is missing, so the two-board design is half-documented. The Arduino path requires hand-patching MCP2515.h to change the clock frequency, which is fragile and will break silently if someone installs a fresh copy of the library. Last commit is May 2023 and the README lists multiple 'to be uploaded' items that never arrived, so this is effectively abandoned. No mention of CAN FD anywhere — modern cars are increasingly using it, and the MCP2515 is CAN 2.0 only, so this won't work on newer vehicles without a hardware redesign.