Repository navigation
Root and PMPatch3
Dashwheel works on a plain head unit. Root and the PMPatch3 module unlock more. Features that need something your unit doesn't have are hidden, not broken: the app looks for a privileged shell at start and only offers what it can do. In Settings, one card per group says how many more settings root would bring.
Google Play edition: it never looks for root, the unit's ADB or Magisk, so only the No root column applies to it. The GitHub edition has everything below. See Installation and Updates.
| Level | What it is | How to get it |
|---|---|---|
| 1. No root | A normal app install | Install the APK |
| 1b. One-time grant |
WRITE_SECURE_SETTINGS granted once from a computer, no root needed |
adb shell pm grant com.openauto.dash android.permission.WRITE_SECURE_SETTINGS (Settings → Pop-ups shows the command when it would help; the Play edition's package is com.dashwheel.app) |
| 2. Root shell | Magisk su, or the head unit's own internal root ADB (the K706 has one on port 9876, no Magisk needed) |
Magisk, or nothing to do on a K706 |
| 3. Root + PMPatch3 | Magisk (24+, Zygisk on) with the PMPatch3 module: Android grants Dashwheel the firmware's system permissions (INTERNAL_SYSTEM_WINDOW, INJECT_EVENTS…) |
Settings → System → Unit tools → Google Maps inside a tile downloads, checks and installs it; then reboot. That row should then say Set up |
PMPatch3 trade-off: it makes Android skip signature checks for system permissions, so any app on the unit could claim them. Install only apps you trust.
✅ works ·
| Feature | No root | One-time grant | Root shell | Root + PMPatch3 |
|---|---|---|---|---|
| Dashboards, widgets, designs, themes, skins, templates | ✅ | ✅ | ✅ | ✅ |
| Built-in map (MapLibre), search, routes and turn-by-turn guidance | ✅ | ✅ | ✅ | ✅ |
| Google Maps / Waze next turn (Directions tile) | ✅ ¹ | ✅ ¹ | ✅ ¹ | ✅ ¹ |
| Media tile (any player) | ✅ ¹ | ✅ ¹ | ✅ ¹ | ✅ ¹ |
| Real Android widgets in tiles | ✅ | ✅ | ||
| OBD: live data, fault codes, AI mechanic, car care, servicing | ✅ | ✅ | ✅ | ✅ |
| Phone link: notifications, messages, calls, drive log, where's my car | ✅ | ✅ | ✅ | ✅ |
| Typing from the phone | ✅ ³ | ✅ ³ | ✅ (service turned on by itself) | ✅ |
| Apps side by side (system split screen) | ✅ ³ | ✅ ³ | ✅ | ✅ |
| Apps in a window over a tile, Maps window tile, Maps dock layouts | ❌ | ❌ | ✅ | ✅ |
| Apps inside a tile (Google Maps inside, YouTube Music…), touch included | ❌ | ❌ | ❌ | ✅ |
| Canvas theme with Maps or Waze under the dashboard | ❌ (built-in map only) | ❌ | ❌ | ✅ |
| Car data from the unit's CAN box: doors, lights, mileage, fuel, tyres, seat belt | ✅ | ✅ | ✅ | |
| CAN monitor tile (raw frames) | ❌ | ❌ | ✅ | ✅ |
| Your own door / radar / climate / belt alerts instead of the unit's pop-ups | ❌ | ✅ | ✅ | ✅ |
| Your own call card instead of the unit's call pop-up | ✅ ⁵ | ✅ | ✅ | ✅ |
| Reverse view: lines + radar over the stock camera | ✅ ³ | ✅ ³ | ✅ | ✅ |
| Reverse view: Dashwheel's own camera picture (takeover), hide stock lines | ❌ | ❌ | ✅ | ✅ |
| Steering-wheel button map | ✅ (also raw input + CAN) | ✅ | ||
| Head-unit keys (Maps / voice / custom key targets) | ❌ | ❌ | ✅ | ✅ |
| Volume that follows speed, spoken alerts, start-up briefing | ✅ | ✅ | ✅ | ✅ |
| Volume bar in Dashwheel's design instead of the unit's | ❌ | ❌ | ✅ | |
| Phone's GPS standing in for the unit's | ❌ | ❌ | ✅ | ✅ |
| Waze's next turn read off its screen | ✅ ³ (GitHub edition) | ✅ ³ | ✅ | ✅ |
| Window tile text and icon size (Waze bigger) | ❌ | ❌ | ❌ | ✅ |
| An app inside a tile keeps every screen it opens inside the tile (system display helper) | ❌ | ❌ | ❌ | ✅ |
| Waze's exact destination from its own files (second screen's route) | ❌ | ❌ | ✅ | ✅ |
| Dashwheel comes in front by itself at start-up | ✅ | ✅ | ||
| Car signals: learn doors / reverse / lights / belt, raw sniffer | ✅ | ✅ | ✅ | |
| Wi-Fi / Bluetooth on-off widgets | ✅ | ✅ | ✅ | ✅ |
| Wi-Fi networks / Bluetooth devices: join or connect from the tile | ❌ (opens Android's settings) | ❌ | ❌ | ✅ |
| Screen light widget, do not disturb switch | ✅ | ✅ | ✅ | |
| Speed limit, speed cameras, weather alerts, fuel log, parking timer, radio presets | ✅ | ✅ | ✅ | ✅ |
| Gemini Live opened from ⋮ / wheel (the Gemini app) | ❌ | ❌ | ✅ | ✅ |
| Dashwheel's own Gemini voice assistant (Live API, your key) | ✅ | ✅ | ✅ | ✅ |
| Head-unit monitor tile: RAM, storage | ✅ | ✅ | ✅ | ✅ |
| Head-unit monitor tile: CPU, temperatures per app, Stop an app | ❌ | ❌ | ✅ | ✅ |
| Hide the unit's top bar over windows (opt-in) | ❌ | ❌ | ✅ (QF firmware) | ✅ |
Install as a system app (/system/priv-app) |
❌ | ❌ | ✅ | ✅ |
| Boot Logo (K706 / QF only) | ❌ (Save to USB only) | ❌ | ✅ | ✅ |
| Second Screen (Raspberry Pi) ‐ experimental: cluster | ✅ | ✅ | ✅ | ✅ |
| Second screen: the 3D map on a cluster page | ✅ | ✅ | ✅ | ✅ |
| Second screen: a copy of an app inside a tile (Google Maps on the cluster, used on the head unit) | ❌ | ❌ | ❌ | ✅ |
| Second screen: an app moved to the Pi on its own | ❌ | ❌ | ✅ ⁶ | ✅ ⁶ |
| Updates from GitHub (one-tap, Android confirms) | ✅ | ✅ | ✅ | ✅ |
| Install an older release over a newer one | ❌ | ❌ | ❌ | ✅ (PMPatch3 lifts the downgrade check) |
Notes
- Needs Notification access for Dashwheel (one switch in Android settings; covers media, directions and the notifications feed).
- Android lets a normal app host widgets only if you confirm each one; as a system app (root) Dashwheel binds them itself.
- Needs Dashwheel's accessibility service on (Settings → Accessibility → Dashwheel). With a root shell Dashwheel turns it on by itself at start.
- Without the grant or root, only the CAN box data the firmware broadcasts to every app (such as steering angle and reverse) is read; doors and car status need the grant.
- The call card works from the phone link's call state; hiding the unit's own call pop-up uses a broadcast that needs no root on QF firmware.
- Android 10 and 11 only: Android 12 dropped the window stacks this moves. On newer units use the copy of a tile instead.
- Just want a nice dashboard with car data? No root is fine.
- Have a K706 or another QF unit? You already have the root shell (internal ADB): windows, CAN box data, boot logo and the reverse camera takeover are there.
- Want Google Maps inside a tile or under the Canvas dashboard? You need Magisk + PMPatch3.
- Settings → System → Unit tools → Google Maps inside a tile: Set up means PMPatch3 works.
- Add → Apps, then an app: In a tile says Runs inside the tile (PMPatch3) or Stays open in a window (root shell); Side by side is always there.
- Logs from a computer:
adb logcat -s EmbeddedApp DockShell RomPopups.
See also Apps on the Dashboard and Tested Hardware.
Dashwheel is free software (GPL v3). Enjoying it? ☕ Buy me a coffee on Ko-fi · Releases · Issues
Getting started
Dashboard
Car
Road
Phone and screens
More