Tool
PiCCANTE
Raspberry Pi Pico firmware and hardware designs for a low-cost CAN bus interface aimed at exploring and reverse engineering vehicle networks. It runs two CAN 2.0B channels on RP2040 boards or three on RP2350 boards through the PIO-based can2040 library and exposes them over USB as a GVRET device for SavvyCAN and as per-channel SLCAN devices for Linux SocketCAN via can-utils. A configuration shell, a partial ELM327 emulator for OBD-II PID requests with ISO-TP multi-frame replies, and Wi-Fi, Bluetooth and a web interface on Pico W boards complete the firmware, alongside perfboard and KiCad PCB designs with 3D-printable cases for an OBD-II dongle.
- Targets
- Protocol
- Category
- Protocol analysis tools
- Relationship
- Foundation tool
- Sources reviewed
Requirements & limits
- Only release at review: v0.0.1, published 2025-05-03 with UF2 and ELF firmware for Pico, Pico W, Pico 2 and Pico 2 W; a dev-latest pre-release is rebuilt from main and was built from the reviewed commit of 2026-01-26. The README marks the ELM327 emulator as partial, lacking CAN setup, protocol auto-detection and filters, and lists SD-card logging and software CAN filters as planned. CAN FD and CAN XL are not supported.
- Hardware is any Raspberry Pi Pico or Pico 2 board with one to three 3.3 V CAN transceivers such as the SN65HVD; the Pico 2 W is recommended for Wi-Fi and Bluetooth. The README warns that the 120-ohm termination resistor on most transceiver breakout boards must be removed before joining an existing, terminated bus, and urges caution when connecting to vehicle systems. The OBD-II dongle can add a buck converter, an SD card slot and a voltage divider for battery voltage.
- Source builds need the Raspberry Pi Pico SDK, CMake 3.13+ and the GCC ARM toolchain, with FreeRTOS-Kernel, a can2040 fork, littlefs, TinyUSB, pico-extras and FreeRTOS-FAT-CLI as submodules; PICO_BOARD defaults to pico2_w, and the web interface is a separate Svelte project in Web/. CI builds firmware for the four Pico boards on pushes to main and on pull requests, and no test suite is documented.
- GPL-3.0-or-later per LICENSE.txt and the README notice; the README attributes the CAN 2.0B-only limit to can2040's licensing, and the bundled DHCP server code carries an MIT notice. No separate license is stated for the KiCad, STL and STEP hardware files. Nothing was built, flashed or connected to a vehicle, and the reviewed sources establish no REA connection.
About this entry
The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.
Primary sources
- Readme.md GitHub · Alia5/PiCCANTE · Revision 62ede82
- .gitmodules GitHub · Alia5/PiCCANTE · Revision 62ede82
- CMakeLists.txt GitHub · Alia5/PiCCANTE · Revision 62ede82
- .github/workflows/build_base.yml GitHub · Alia5/PiCCANTE · Revision 62ede82
- .github/workflows/PR_check.yml GitHub · Alia5/PiCCANTE · Revision 62ede82
- hardware/PiCCANTE-OBD-Dongle GitHub · Alia5/PiCCANTE · Revision 62ede82
- src/ELM327 GitHub · Alia5/PiCCANTE · Revision 62ede82
- LICENSE.txt GitHub · Alia5/PiCCANTE · Revision 62ede82
- https://github.com/Alia5/PiCCANTE/releases/tag/v0.0.1
- https://github.com/Alia5/PiCCANTE/releases/tag/dev-latest
More in Protocols
- open-appleremote: Siri Remote protocol reconstruction · Case study
- GAMEKB-K17: reconstructing a macropad configuration protocol · Case study
- cooler-lcd: a Thermalright display protocol implementation · Case study
- NJFE: a Soulear camera protocol bridge for desktop inspection · Case study
- hw-harness: scanner USB protocol investigation · Case study
- Roborock Local Server: a self-hosted stand-in for Roborock’s vacuum cloud · Case study