Status Installed · C6 Corvette

Sheet 01 of 05/General arrangement

Automotive infotainmentDrawing 28 of 28Role Sole author

Corvette
DIN Unit

A full infotainment system for a C6 Corvette double-DIN conversion, styled after BMW iDrive 7/8: Qt 6 and QML running kiosk-mode on an x86 mini-PC, driving a 2560x1600 touchscreen. CarPlay is one tile among many, not the whole product - the unit is useful with no phone attached.

Specification / as recorded

Status
Private build, installed in the car
Role
Sole author
Stack
Qt 6 / QML, C++ services
Platform
Kiosk-mode Ubuntu 24.04 on an x86 mini-PC
Display
2560 x 1600 double-DIN touchscreen
The home screen, a live widget grid for media, vehicle, phone and CarPlay
PlatePL-01
TitleHome screen, a live widget grid for media
ViewDetail
Vehicle, phone and CarPlay.

Sheet 02 of 05/Specification

By the numbers

SectionReal or simulated
MediaReal - local library playback, USB and folder scanning
Wi-FiReal - NetworkManager
Vehicle gaugesSimulated - no OBD/CAN fitted yet
RadioSimulated - no tuner fitted yet
Reversing cameraSimulated feed, real steering-linked guideline geometry
PhoneSimulated - demo contacts and call log
CarPlayReal - launches OpenAuto Pro

Sheet 03 of 05/Honest

A DEMO chip instead of a guess

Building the whole shell before the hardware behind every tile exists meant deciding, up front, what happens to a screen whose sensor isn't wired up yet. The answer here is not to fake it quietly. Every service probes for its hardware at runtime and falls back to a modelled version of the same data if it isn't there, and any screen running on modelled data shows a small DEMO chip so it never implies it is live when it isn't.

That honesty lives in the service layer, not the UI. A simulated property on each service drives the chip, so a screen can't accidentally claim real data by omission. The chips can be hidden in Settings, but the property underneath keeps working either way. As real hardware gets fitted - a tuner, an OBD reader, a reversing camera - the corresponding service starts reporting real data and its chip disappears on its own.

The vehicle screen in Sport mode, BMW Sport Displays style arc gauges over live G-force and fluid temperatures
PlatePL-02
TitleVehicle screen in Sport mode
ViewDetail
BMW Sport Displays style arc gauges over live G-force and fluid temperatures.
The reversing camera screen, steering linked guidelines over a simulated feed since no camera is fitted yet
PlatePL-03
TitleReversing camera screen
ViewDetail
Steering linked guidelines over a simulated feed since no camera is fitted yet.

Sheet 04 of 05/Runtime

One binary, two machines

The whole system runs unmodified on both the Mac I develop on and the mini-PC bolted behind the dash. Simulation is chosen at runtime by each service probing its own hardware, not behind compile-time #ifdefs, so the same binary that renders in a windowed 1280x800 dev build is the one that boots fullscreen on the car PC at 2560x1600 - a true miniature, not a different layout for a different target.

Navigation is one StackView behind a persistent rail. A rail tap replaces the whole stack rather than pushing onto it, so the back stack only ever holds sub-screens of the current section and the rail is always exactly one tap from anywhere, no matter how far a screen has drilled down.

The radio screen, an FM tuner with a frequency ruler, eight presets and a station list
PlatePL-04
TitleRadio screen
ViewDetail
An FM tuner with a frequency ruler, eight presets and a station list.
The phone screen, pairing, recents and a dialer, all clearly marked DEMO
PlatePL-05
TitlePhone screen
ViewDetail
Pairing, recents and a dialer, all clearly marked DEMO.

Sheet 05 of 05/Design

No drop shadows anywhere

Every color, size and duration comes from one theme singleton, and nothing else in the app declares a color. That is what makes eight full palettes - six BMW-style My Modes, a bronze Corvette mode, a genuinely light Daylight theme, and a warm-amber Night theme with no blue anywhere - a matter of switching one active entry rather than re-skinning each screen by hand.

Depth comes from stacked surface lightness and one-pixel hairlines. There are no drop shadows anywhere, which is BMW's own stated rule for this class of display and also sidesteps effects the target Qt version does not have. Every icon is drawn from SVG path data rather than an icon font or bitmap, so it stays crisp from the dev window up to the full-size touchscreen.

The settings screen, display, sound, Wi-Fi and system preferences
PlatePL-06
TitleSettings screen
ViewDetail
Display, sound, Wi-Fi and system preferences.