byronthegreat.com GitHub

motoCarPlay

A round-display CarPlay dashboard for my 1975 BMW R75/6. This is the real UI, running in your browser on a simulated ride.

simulated ride · tap any gauge to open its graph · the center CarPlay screen is a static screenshot

See how it came together
CARLINKIT
RASPBERRY PI 5
72MPH
NW
315°
HEADING
71°F
AMBIENT
1,240 ft
ALT
298°
LEFT
341°
RIGHT
18° L
0.7 G
LEAN
CYL · RIGHT
341°F
LIVE
↓ blur + scale
sample frames → halo the bezel

The idea

CarPlay belongs on the bike

I wanted Apple CarPlay on my 1975 BMW R75/6. It's an airhead with no screen and nothing digital, so I started with the part I already knew: a wireless CarPlay adapter that talks to the phone and draws the familiar grid of apps.

Running CarPlay on a Raspberry Pi was first built by f-io / pi-carplay. That engine is the foundation everything here sits on.

The screen

A rectangle won't fit a round dash

My motorcycle has round gauges. A rectangle screen was never going to look right. So the CarPlay rectangle becomes a square inside a circular display, and that leaves a ring around the edge.

That ring is where the bike's data gets to live.

Getting CarPlay onto a round panel was built by OneMakerShow / round-carplay. motoCarPlay is a hard fork of that work.

The brain

One little board runs it all

A Raspberry Pi 5 drives the display, runs the CarPlay engine, and reads every sensor. It's the hub, and everything from here connects back to it.

Speed · GPS

Fill the edges, starting up top

What should ring a motorcycle dash? Speed first. A USB GPS gives true speed and heading straight off the satellites, no wheel sensor needed, and it sits across the top. The same GPS reports altitude, so that fills a bottom corner too.

Ambient temp

How warm is it out there?

A waterproof probe reads the outside air and reports it up in the corner. One wire back to the Pi, and the current temperature is always on the dash.

Cylinder heads

Watch both jugs cook

An airhead lives and dies by its cylinder head temperature. The engine is air-cooled, so wind over the fins is the only thing keeping each jug in range. A K-type thermocouple screws under each spark plug, and the left and right cylinders each get a gauge that climbs from cold blue to running amber to too-hot red.

Each probe runs to its own amplifier board, then back to the Pi over a shared SPI bus.

Motion · IMU

Lean it over

A 9-axis sensor tracks lean angle, pitch, and G-force in real time. Drop into a corner and the readout leans with you.

Logging

Tap a gauge, see the history

Every reading is logged. Tap any metric and it opens a full-screen graph with min, max, and a scrollable trace. The temp graphs paint risk bands underneath, so an overheating cylinder is obvious at a glance.

The finish

A TikTok trick for the bezel

Black around the square looked flat, like a rectangle floating in a circle. So, like the apps that letterbox vertical video, motoCarPlay samples the live CarPlay frame, blurs it way up, and paints it across the whole round display. The color bleeds out to the edge, and suddenly it reads as one round screen instead of a square dropped into a black hole.

That's the build

Here it is again, live. Tap any gauge to open its graph.

View the code on GitHub ← More projects