Get started
Three ways to get started
CAN Commander needs an ESP32 board running the firmware and something to drive it with. Pick the section that matches the hardware you have.
Path 1
Flipper Zero and a board
The full experience: menus, dashboards and saved profiles.
Path 2
Build your own board
An ESP32-S3 dev board and a CAN transceiver module.
Path 3
Command line only
No Flipper needed. USB or Wi-Fi from a laptop or phone.
Flipper Zero and a board
You need a Flipper Zero and a CAN Commander board: either the official board or one you built yourself.
- Check the firmware. Flipper app v2.3.1 needs firmware v2.2 or newer and will tell you at startup if the board is behind. Update from the web flasher.
-
Install the Flipper app. The app is a standard ufbt project. With the Flipper connected over USB:
git clone https://github.com/MatthewKuKanich/CAN_Commander.git cd CAN_Commander/CAN_Commander_FlipperZero/can_commander ufbt launchufbt launchbuilds the app, installs it and starts it. Runningufbtalone buildsdist/can_commander.fap. -
Connect the hardware. Plug the board onto the Flipper's GPIO header and attach the CAN wires. On the official board the right port is the primary bus,
can0. On a vehicle's OBD-II connector, high-speed CAN is on pin 6 (CAN-H) and pin 14 (CAN-L). - Open the app. Go to Apps > GPIO > CAN Commander. The app powers the board, connects, and checks the firmware version.
- Start by listening. Run Tools > Monitor & Discovery > Read All Frames, Unique IDs or the CAN Speed Test to confirm you can see traffic before you try anything that transmits.
From there, the Flipper app guide walks through each workflow: diagnostics, filtering, Smart Injection, replay, reverse engineering and DBC decoding.
Build your own board
A single-bus CAN Commander is two inexpensive modules and a handful of jumper wires. It runs the same firmware as the official board and has every tool. What you give up is the second CAN bus and the status LEDs.
| Part | Notes |
|---|---|
| ESP32-S3 dev board with native USB | For example an ESP32-S3-DevKitC-1. Any S3 board that breaks out GPIO1, 2, 17 and 18 works. |
| SN65HVD230 CAN transceiver module | A 3.3 V transceiver. Do not use a 5 V-only transceiver such as a TJA1050 module without level shifting. |
| Jumper wires | 8 to 10. |
| OBD-II pigtail or breakout | Only needed for in-vehicle use. |
| Flipper Zero | Optional. The board also works by itself over USB or Wi-Fi. |
The transceiver connects to the ESP32-S3 on four pins:
| SN65HVD230 module | ESP32-S3 |
|---|---|
| 3V3 | 3V3 |
| GND | GND |
| CTX (also labelled D or TXD) | GPIO2 |
| CRX (also labelled R or RXD) | GPIO1 |
The firmware for this board is compiled with a few options that turn off the second bus and move the Flipper connection to free pins, so build it from source rather than using the official image:
arduino-cli compile --fqbn esp32:esp32:esp32s3:CDCOnBoot=cdc \
--build-property "compiler.cpp.extra_flags=-DBOARDCFG_CAN1_DRIVER=0 -DBOARDCFG_NEOPIXEL_ENABLED=0 -DBOARDCFG_FLIPPER_UART_TX_PIN=17 -DBOARDCFG_FLIPPER_UART_RX_PIN=18" .
arduino-cli upload --fqbn esp32:esp32:esp32s3:CDCOnBoot=cdc -p <PORT> .
The build guide has the complete wiring for the Flipper and the CAN bus, termination and power notes, Arduino IDE steps, a first test and troubleshooting.
Command line only
Every tool is a text command, so a Flipper is optional. Connect the board's native USB port to a computer and open any serial terminal at 115200 baud.
ver
status
ver prints the firmware version and status the state of the buses and Wi-Fi. With the CAN wires connected and the ignition on, listen without transmitting:
bus set bus=can0 bitrate=500000 mode=listen
tool start read_all bus=can0
Frames should start scrolling; stop with tool stop. Listen mode never drives the bus, which makes it the safe way to check wiring and bitrate on an unfamiliar vehicle. Before using a tool that transmits, switch back:
bus set bus=can0 bitrate=500000 mode=normal
Over Wi-Fi
The board can host its own access point and serve the same command line over TCP. It is off by default. Anyone who joins the access point can transmit on the CAN bus, and the default password is public, so set your own before you turn it on:
wifi set pass=<8 to 63 characters>
wifi start
Join the board's network, then open a raw TCP connection to port 7777:
nc 192.168.4.1 7777
The firmware quickstart covers a first session, and the firmware reference lists every command.
Profiles for the Flipper app
Smart Injection and DBC decoding on the Flipper work from profiles: small files that hold the signals you care about. Generate them from a .dbc file with the profile generator and copy them to the Flipper's SD card:
- Smart Injection profiles (
.injprof) go inapps_data/can_commander/injection_profiles. - DBC decoding profiles (
.dbcprof) go inapps_data/can_commander/dbc_profiles.
You can also create injection slots and decoding signals directly in the app.
Safety
CAN Commander can transmit on a live vehicle network. Injected or replayed frames can set fault codes, light warnings, or operate real vehicle functions.
- Start with read-only tools, or the firmware's listen-only mode.
- Test transmissions on a bench or a parked vehicle.
- Stop transmitting tools when you are done.
- If you enable the Wi-Fi command line, set your own password first.
- Only work on vehicles you own or are authorised to test.