Apps for the iDrive 7 head unit of a BMW, installed from the mgu Store.
Shows your phone's navigation map on the instrument cluster: CarPlay (Waze, Apple Maps or Google Maps) or Android Auto (Google Maps). It can also show it on the head-up display (experimental).
Install: in the Store, add the source robertnisipeanu/idrive-apps and
install Waze on cluster. Restart the head unit when the Store asks, and
in the car's settings set Instrument cluster > Central display area to
Map view. On a
supported car the map turns on by itself; you don't need to press anything
in the app.
Settings, what to do if the map doesn't show, and how to send logs: Waze on cluster.
Choose HUD (experimental) or Cluster and HUD (experimental) in the app's Show on. You can set the map's size and position on the HUD. At night the map's background is black, so only the roads, route and labels show. Photos from a 2021 X5 xDrive45e (G05); street names blurred.
The HUD map while driving. (The panel at the bottom right, battery power and temperatures, is a separate app.)
| Waze's grey-blue night background on the HUD | The background made black, which the HUD shows as nothing |
|---|---|
![]() |
![]() |
| Path | |
|---|---|
native/cluster-render |
the cluster renderer: one service that draws every app's layers on the instrument cluster and the HUD, on iDrive 7 and iDrive 8 |
native/waze-on-cluster |
the CarPlay map (Waze, Apple Maps or Google Maps), or Android Auto's, on the instrument cluster, drawn through cluster-render |
apps/robertn_waze_cluster |
the iDrive app for it: where the map shows, the patches' status and buttons, Logs |
release |
builds and publishes the Store catalog |
tools |
oap_pack.js, oap_link.js: pack the app |
Installing the app installs what it requires first: mgu-deploy from
mgu-store, then cluster-render and waze-on-cluster from here. The
waze-on-cluster install hook writes the CarPlay patch, and the Android Auto
patch on a car that supports it; one head-unit start activates them. The
Store removes them in the reverse order: the app, then the tool, then the
renderer.
make -C native/cluster-render test test-x86 target # host tests; the unit's toolchain and binary (Docker)
make -C native/waze-on-cluster test test-x86 target
node apps/robertn_waze_cluster/tools/test_control.js
node apps/robertn_waze_cluster/tools/test_page.js
node apps/robertn_waze_cluster/tools/test_i18n.js
node release/test/release_test.js
node release/release.js check # reproducible artifactsEach folder's README has the details; release/README.md
covers versions, the catalog and publishing. Before opening a pull request,
read CONTRIBUTING.md: the release sets versions.
GPL-3.0-or-later (LICENSE), unless a file's SPDX header says
otherwise. What apps compile in or copy from cluster-render, its include/,
client/, kit/, js/cluster_render_client.js and PROTOCOL.md, is
MPL-2.0 (LICENSES/MPL-2.0.txt). Third-party files
keep their own licenses: the RAMSES and vsomeip interfaces in cluster-render
(MPL-2.0), the Intel Media SDK headers in waze-on-cluster (MIT), Project
Nayuki's QR code generator in robertn_waze_cluster (MIT).



