Project / Head Unit
A purpose-built head unit for Ubuntu laptops with touchscreen support.
A complete head unit system for RVs and mobile applications: navigation, media playback, phone integration, cameras, and system monitoring in one touch-friendly interface optimised for driving.
Ubuntu 22.04+
Target platform, with a touchscreen
Node.js 18+
Runtime, managed with pnpm
8
Camera slots in the live wall
-30°C
Cold-start design target
Core Functionality
Everything a driver needs, without the phone in their hand.
Maps & Navigation
GPS-powered navigation with waypoint management, so a route can be set up before leaving rather than while driving.
Media Player
A local music library with an MPV backend, so playback does not depend on a data connection.
Phone Integration
Bluetooth hands-free calling over HFP/HSP, keeping the phone out of the driver's hands.
Settings Management
Persistent configuration on a SQLite backend, so the setup survives a power cycle.
Cameras & CCTV
An eight-camera live wall, recorder status, clip playback, downloads, and trimmed exports.
System Monitoring
System status and hardware health surfaced in the same interface, not in a separate admin tool.
System Features
Built to be left running.
A head unit in a vehicle is not a laptop that gets closed. It boots, goes full-screen, keeps the data current, and stays useful when the network does not.
Kiosk mode
A full-screen driving interface, launched on boot so it is never one tap away from being useful.
Real-time monitoring
System status and hardware health shown in the interface rather than hidden in logs.
WebSocket updates
Live data synchronisation, so the screen does not depend on polling to stay accurate.
Prometheus metrics
A machine-readable monitoring endpoint for anything that needs to scrape the box.
Interface
Designed around the driver's hands, not the developer's desk.
The interface is built for a fixed touchscreen in a moving vehicle, which is a much narrower constraint than a general-purpose application.
- Large buttons and gestures sized for driving rather than for a mouse
- Responsive layout tested against a 17-inch touchscreen
- Dark theme, to stay usable at night without glare
- Offline-first behaviour, degrading gracefully without a connection
Electron + React
The dashboard is an Electron application with a React interface.
Express services
A Node.js/Express API server exposes status, settings, media, GPS, Bluetooth, and camera routes.
SQLite + Prisma
Configuration and application state live in SQLite, accessed through the Prisma ORM.
HAL abstraction
A hardware abstraction layer keeps GPS, Bluetooth, and media behind one interface.
Camera Workflow
Eight cameras, treated as a recording system rather than a novelty.
The camera stack covers the parts that make video useful after the fact: knowing what the recorder is actually doing, getting a clip off the device, and trimming an export without leaving the vehicle.
- Eight-camera live wall with per-camera enable toggles
- Recorder and storage health surfaced separately from camera access
- Clip playback, downloads, and trimmed MP4 exports from the interface
- Monitor enablement separated from camera access, as groundwork for a fuller NVR stack
Requirements
What the head unit needs to run.
Requires Ubuntu 22.04 or newer with a touchscreen, Node.js 18 or newer, pnpm, a Bluetooth adapter for phone integration, and a USB or Bluetooth GPS device.
The head unit is developed and maintained in house, and access is arranged as part of an evaluation or field validation programme rather than distributed as a download.
Want this evaluated in real conditions?
The head unit is one of the things the van exists to test. Product evaluation and field validation programmes are arranged through the contact form.