Road Avenger
A Valentine One-integrated dashcam powered by Raspberry Pi.
(The project is currently in alpha version; this page contains placeholder content. More details to come soon.)



Features
- Record video and audio continuously in segments
- Log data from a GPS module and Valentine One
- Display V1 alert frequencies to OLED screen
- Burn-in logged data and stabilize video in post-processing
- Web interface works on any phone or tablet
- Works with both V1 Gen1 and Gen2
Hardware
- Raspberry Pi 4 Model B (2GB, 4GB, or 8GB)
- Any high-endurance Micro-SD card
- USB Microphone for Laptop and Desktop Computer
- Arducam for Raspberry Pi Camera 16MP IMX519 Camera Module
- DIYmall PiOLED 0.91inch I2C 128X32 SSD1306 OLED Display Module
- YELUFT 1pcs GY-NEO6MV2 NEO-6M GPS Module
- Any large, fast-charging power bank (Optional - only if your car/USB adapter is not adequate to power the dashcam)
- A Valentine One, of course! (This project was tested with both Gen1 and Gen2)
Note: These are Amazon Affiliate links, and I may receive commissions on purchases that you make when you use them.
Build
This section will provide detailed instructions and diagrams on how to assemble the hardware components. Information on 3D printed cases and wiring guides will be available here soon.

This project is designed for the Raspberry Pi 4 Model B. While other versions of Raspberry Pi may work, they are considered unsupported. All 3D-printed materials will be designed for the Pi 4 Model B only.
The software is CPU-intensive (a 4-core CPU is a must), and the Pi 4 Model B is the final version that can run on 15 watts power (no special power supply required). This allows it to be used in your car.
Software Setup
Install the latest Raspberry Pi OS Lite (64-bit) to your Micro-SD card, with SSH enabled.
After booting, update/upgrade all packages and disable the swapfile to prepare the OS for use.
From an SSH terminal, setup the environment:
sudo apt-get install ffmpeg
git clone https://github.com/KawaiiFiveO/RPi-V1-Dashcam.git
cd RPi-V1-Dashcam
python -m venv env --system-site-packages
source env/bin/activate
pip install -r requirements.txt
cp config.example config.py
You can use the scripts in tests
to confirm that your hardware works.
You can configure settings such as recording duration and camera orientation in config.py
. Note that you must copy config.example
to config.py
to prevent your settings from being overwritten by git pull
.
Then, once you're ready to try the dashcam:
python main.py
See Web Interface for info on how to control the dashcam.
Run Automatically on Boot
If you want it to run automatically on boot, setup the service:
sudo cp service/dashcam.service /etc/systemd/system/dashcam.service
sudo nano /etc/systemd/system/dashcam.service
Edit the file with your values, then execute:
sudo systemctl daemon-reload
sudo systemctl enable dashcam.service
sudo systemctl start dashcam.service
To stop it from running automatically on boot:
sudo systemctl stop dashcam.service
sudo systemctl disable dashcam.service
Updating Software
To get the latest software version from the repo, execute these commands from the repository root:
git pull
sudo systemctl daemon-reload
sudo systemctl restart dashcam.service
Web Interface
When your Pi is connected to your home network, you can visit the webpage (at your Pi’s IP and port 5000) in your browser to control the dashcam. The Pi's IP is displayed on the OLED screen.
For example: http://192.168.50.58:5000/
Clean Shutdown
It is recommended to use the Shutdown Pi
button before unplugging the dashcam. To enable this feature:
sudo visudo
Scroll to the very bottom of the file and add this line (replace myuser
with your username):
myuser ALL=(ALL) NOPASSWD: /sbin/shutdown
Exit the editor and save the file. This will allow the Shutdown Pi
button to function.
Web-Only Mode
To access the files without starting any other dashcam functions (only when the dashcam service is not already running):
python main.py --web-only
Creating a Wi-Fi Hotspot
To make the Pi start up its own network so that you can access the web interface when it's not connected to your home network:
nmcli con add type wifi ifname wlan0 con-name Hotspot autoconnect yes ssid V1-Dashcam-Hotspot
nmcli con modify Hotspot 802-11-wireless.mode ap
nmcli con modify Hotspot ipv4.method shared
nmcli con modify Hotspot ipv4.addresses 192.168.4.1/24
nmcli con modify Hotspot wifi-sec.key-mgmt wpa-psk
nmcli con modify Hotspot wifi-sec.psk "MyPasswordHere"
nmcli con modify MyHomeWifi connection.autoconnect-priority 10
nmcli con modify Hotspot connection.autoconnect-priority -10
sudo systemctl restart NetworkManager
Replace V1-Dashcam-Hotspot
, MyHomeWifi
, and MyPasswordHere
with your own values.
Post-Processing
While the Web Interface has a Burn-in
option, it is extremely slow and not recommended for actual use.
Instead, on a desktop computer with FFmpeg and Python installed, download and execute the process_video
script in the standalone
folder:
python process_video.py "/path/to/your/video/20250817_131511.mp4"
The video needs to have a .csv
log file in the same directory with the same name (both obtained from the dashcam). This will stabilize the video and burn-in the overlay to it.
Use the --no-stabilize
flag if you do not want stabilization.
Congratulations, your dashcam video is now ready to be edited/uploaded!
License
This project is distributed under the MIT License. See the LICENSE.md
file in the source repository for more information.
You are free to use, modify, and distribute this software, provided you include the original copyright and license notice in any copy of the software/source.
This project uses code from Valentine Research's ESP Library, which is distributed under the MIT License. See the ESP-License.md
file in the source repository for more information.