Starting point
Wireless CarPlay on a Raspberry Pi
A Raspberry Pi and a Carlinkit adapter can run wireless CarPlay. f-io/pi-carplay proved it first. Navigation lives on this screen; audio stays phone-to-helmet and is never routed through the Pi.
- AdapterCarlinkit CPC200-CCPA
- Linkwireless CarPlay, H.264/H.265
- Audio pathphone → helmet (untouched)
Geometry
The display geometry
CarPlay renders in the largest square that fits the circle. The gauges live in the curved margins around it. Every pill is placed by a clearance model that keeps it off the glass edge.
- CarPlay square586 × 586 px
- Gauge margins107 px each side
- Edge clearance≥ 8 px, verified on-device
Software
The software stack
The dashboard is an Electron app built on LIVI, an open-source head-unit project for the Pi. It supplies the native video pipeline; the gauge overlay, graphs, and sensor integration are this project. The UI follows Apple conventions: one typeface, tabular numerals, capsule controls sized for gloves.
- VideoGStreamer, hardware H.265
- Displaycustom Wayland compositor
- UI typeInter, tabular numerals
- Tap targets≥ 64 px
Sensors · GPS
Speed, heading, and altitude from GPS
The R75/6 predates electronic engine data, so every number on screen comes from a sensor added to the bike. GPS supplies speed, heading, and altitude without touching a wheel or cable.
- ReceiverNMEA over USB serial
- Feedsspeed · heading · altitude · sky view
- Altitude trimrider-set offset (QNH-style)
Sensors · temperature
Air and CPU temperature
A sealed probe reads ambient air; the Pi reports its own CPU temperature. Its graph marks the 80 °C soft-throttle threshold.
- AmbientDS18B20, 1-Wire
- Pi CPUon-die sensor
- Throttle line80 °C, drawn on the graph
Sensors · engine
Cylinder head temperature
The engine is air-cooled, so head temperature is the earliest warning sign. A K-type thermocouple sits under each spark plug; each has its own amplifier on a shared SPI bus. The reading is embedded in the thermometer's base.
- Probes2× K-type, 14 mm ring
- Amplifiers2× MAX31856, SPI
- Zones<80 cold · 80–140 ok · 140–150 warm · >150 hot
Sensors · motion
Lean, pitch, and G-force
A 9-axis IMU drives the artificial horizon and the G meter. Peak lean and peak G are held until reset. It runs over UART because the Pi 5's I²C controller mishandles this chip's clock stretching.
- IMUBosch BNO055, 9-DOF fusion
- BusUART (I²C clock-stretch workaround)
- Held peakslean L/R · G
Data
Telemetry history
Telemetry is sampled at 1 Hz for the whole session and survives trips into the settings screens. Tapping a gauge opens its history: edge-to-edge chart, zone-tinted trace, min/max, reset with confirm.
- Sampling1 Hz, all metrics
- Retentionapp session
- Chart stylecards, color zones on temps
Display modes
Four background modes
The background behind the gauges can be a solid color, the average color of the current frame, or a blurred sample of the live CarPlay frame, rendered in the native video pipeline. The fourth mode uses CarPlay's own background-extend option: the phone draws its wallpaper across the full circle and the gauges float on it.
The corners here are switching from solid to blur.
- Solidfixed color
- Averageframe's average color
- Blurlive frame, scaled + blurred
- ExtendCarPlay wallpaper, edge to edge