A desktop application designed for the Southampton University Formula Student Team (SUFST) to manage, distribute, and track firmware deployments across the vehicle's PCBs.
The SUFST Firmware Manager provides a centralized platform for managing vehicle electronics. It allows team members to deploy firmware to specific boards (e.g., BMS, VCU), pull the latest releases from GitHub, manage local binary imports, and synchronize fleet data in real-time across the team using Firebase.
Built for the rigors of track-side testing and endurance racing, the manager supports offline persistence to ensure reliable operation even without an internet connection.
- Fleet & PCB Management: Track all vehicle PCBs and their current firmware versions.
- GitHub Integration: Automatically fetch and sync firmware releases directly from SUFST GitHub repositories.
- Custom Firmware Imports: Load
.bin,.hex, or.srecfiles locally for testing experimental builds. - Real-Time Synchronization: Firebase (Firestore) integration for syncing firmware state and PCB metadata across the engineering team.
- Offline Mode: Local caching mechanism ensures the application remains fully functional at the track without internet access.
- Flashing Interface: Unified interface for flashing firmwares over required interfaces (CAN, SPI, etc.).
- Backend: Python 3 with
pywebviewfor the desktop application window and native file system interactions. - Frontend: Vite-powered web application for a lightweight, highly responsive UI.
- Database: Firebase Firestore (real-time cloud sync) + Local JSON Database (offline persistence).
SUFST-Desktop/app.py: Main Python entry point containing the desktop window configuration and local API bindings.SUFST-Desktop/frontend/: The Vite web application serving as the UI.SUFST-Desktop/firmwares/: Local directory for caching downloaded and custom-imported firmware binaries.SUFST-Desktop/images/: Local storage for PCB reference images.
- Python 3.10+
- Node.js & npm (for frontend dependencies)
-
Install Python Dependencies Navigate to the
SUFST-Desktopdirectory and install the required Python packages (consider using a virtual environment):cd SUFST-Desktop pip install -r requirements.txt -
Install Frontend Dependencies Navigate to the frontend directory and install NPM packages:
cd SUFST-Desktop/frontend npm install -
Development Mode To run the application in development mode (with hot-reloading for the frontend):
First, start the Vite development server:
cd SUFST-Desktop/frontend npm run devThen, in a separate terminal, launch the Python backend:
cd SUFST-Desktop python app.py -
Production Build To build the application for production deployment:
cd SUFST-Desktop/frontend npm run buildOnce built, running
python app.pywill automatically serve the production assets from thedistfolder.
When the application launches, it will attempt to sync with the cloud database. If offline, it will use the local cached state. Use the interface to add PCBs, paste GitHub repository links for automatic firmware fetching, or manually import local binary files to deploy to the vehicle.