3.1 KiB
3.1 KiB
CAN Monitor for Flipper Zero
Flipper Zero application for monitoring CAN sniffer statistics from Raspberry Pi 5 via UART.
Features
- Real-time display of CAN sniffer statistics
- Shows: IP address, total frames, pending frames, processed frames
- Connection status indicator
- Compatible with Unleashed firmware (0.84e and later)
Hardware Connection
Wiring (RPI5 <-> Flipper Zero)
RPI5 GPIO Flipper Zero GPIO
----------- -----------------
TX (GPIO 14) --> RX (Pin 14)
RX (GPIO 15) <-- TX (Pin 13)
GND --> GND
Note: Cross TX/RX connections (RPI TX -> Flipper RX, RPI RX -> Flipper TX)
Flipper Zero GPIO Pinout
Pin 13 = TX (USART)
Pin 14 = RX (USART)
Pin 8/11/18 = GND
RPI5 GPIO (using /dev/ttyAMA0)
GPIO 14 = TX (Pin 8)
GPIO 15 = RX (Pin 10)
GND = Pin 6, 9, 14, 20, 25, 30, 34, 39
Building the Application
Prerequisites
- Clone Flipper Zero firmware:
git clone --recursive https://github.com/DarkFlippers/unleashed-firmware.git
cd unleashed-firmware
- Copy the
flip_monitorfolder toapplications_user/:
cp -r /path/to/carpibord/flip_monitor applications_user/can_monitor
- Create icon (10x10 PNG, 1-bit):
# Create icons/can_monitor.png (10x10 pixels, black & white)
# You can use any image editor or online tool
Build
# Build the FAP
./fbt fap_can_monitor
# Or build all external apps
./fbt fap_dist
The compiled .fap file will be in build/f7-firmware-D/.extapps/can_monitor.fap
Install
Copy the .fap file to your Flipper Zero SD card:
SD Card/apps/GPIO/can_monitor.fap
RPI5 Configuration
1. Enable UART
Add to /boot/config.txt:
enable_uart=1
dtoverlay=uart0
Reboot after changes.
2. Install pyserial
pip install pyserial
3. Configure CAN Sniffer
Add to can_sniffer/config.json:
{
"flipper": {
"enabled": true,
"device": "/dev/ttyAMA0",
"baudrate": 115200,
"send_interval": 1.0
}
}
Or use environment variables:
export CAN_SNIFFER_FLIPPER__ENABLED=true
export CAN_SNIFFER_FLIPPER__DEVICE=/dev/ttyAMA0
4. Run CAN Sniffer
cd can_sniffer/src
python main.py
Protocol
The RPI5 sends text-based statistics over UART:
STATS:ip=192.168.1.100,total=12345,pending=100,processed=12245\n
Fields:
ip- RPI5 IP addresstotal- Total CAN frames receivedpending- Frames in processing queueprocessed- Successfully processed frames
Troubleshooting
No connection
- Check wiring (TX/RX crossed correctly)
- Verify UART is enabled on RPI5:
ls -la /dev/ttyAMA0 - Check config:
flipper.enabled = true - Test UART manually:
# On RPI5
echo "STATS:ip=test,total=1,pending=0,processed=1" > /dev/ttyAMA0
Permission denied on /dev/ttyAMA0
Add user to dialout group:
sudo usermod -a -G dialout $USER
# Then logout and login again
Flipper shows "Waiting..."
- Stats are sent every 1 second (configurable)
- Connection timeout is 5 seconds
- Check if CAN sniffer is running
License
MIT License