The code here was written by AI, so use it at your own risk! It is a reference application of Automotive Grade Linux applied to a RV, Campervan, Overland Rig use case.
Dual-encoder infotainment head unit: a touchscreen and two rotary encoders, each with a round display and an RGB LED ring, running Automotive Grade Linux on a Radxa Dragon Q6A or a Raspberry Pi CM5. Part of the TrailCurrent open-source vehicle platform.
The UI is a Qt 6 / Qt Quick app drawn straight to the display, with no compositor in between, so the head unit boots fast. Navigation (map, destination search and turn-by-turn routing) is fully offline, using the same map bundles as TrailCurrent Headwaters. A "Hey Peregrine" voice assistant (directions, calls, texts, music and the radio) also runs entirely on the head unit, its language model on the Dragon Q6A's NPU. Streaming music (Spotify, AirPlay, YouTube Music) is an optional extra that needs the internet.
| I want to... | Go here |
|---|---|
| Try the UI on a PC, without building an image | hmi/docs/simulator.md |
| Understand or change the UI code | hmi/README.md |
| Build and flash the image for the Radxa Dragon Q6A | os/boards/dragon-q6a/README.md |
| Build and flash the image for the Raspberry Pi CM5 | os/boards/rpi-cm5/README.md |
| Prepare a build machine, or see how the boards share one image | os/README.md |
| Build or install the offline maps, search and routing data | os/docs/maps.md |
| Build and flash the encoder dials | dial-common/README.md |
| Use or change the voice assistant | hmi/README.md#voice-assistant, wake/README.md, llm/README.md |
| Wire peripherals to the Dragon Q6A 40-pin header | DOCS/boards/dragon-q6a/godwit-header-pinout.png |
| Path | What it holds |
|---|---|
hmi/ |
The head unit UI (Qt 6 / QML and C++), plus its desktop simulator |
dial-left/, dial-right/ |
ESP-IDF projects for the two encoder modules (one per side) |
dial-common/ |
The firmware both dials share, and the USB protocol they speak with the HMI |
wake/ |
The "Hey Peregrine" wake word detector, its model, and a tool for recording training samples on the head unit |
llm/ |
The voice assistant's language model service on the Dragon Q6A's NPU |
ytmusic/ |
The YouTube Music helper the HMI runs for the Media app |
os/ |
The AGL build: meta-godwit (the head unit image, shared by every board) and boards/ (one folder per board: its layer, flash script and guide) |
CAD/ |
Enclosure design (FreeCAD) with STEP/STL exports. The manufacturers' models of the board, display and encoders are downloaded separately; see THIRD_PARTY_LICENSES.md. |
DOCS/ |
The UI design mockups the HMI is built from, and each board's header wiring diagram in DOCS/boards/ |
MIT, see LICENSE. Some files are under other licenses (patches to upstream projects, fonts and icons), and the head unit image and dials ship third-party software and OpenStreetMap data under their own licenses. All of it is listed in THIRD_PARTY_LICENSES.md, and the head unit shows it under Settings › System › About & Legal.