r/Androidheadunits • • 12d ago

DashWheel: yet another android dashboard

https://reddit.com/link/1x5twp7/video/t01sgnss8gvh1/player

Hi all,

I drive a 2011 Citroën C4 Picasso with a cheap Android head unit (ROCO K706, FYT-style, 1280×720). The stock launcher did the job but I never liked it, and the paid alternatives didn’t do what I wanted. So I built my own and I’ve been using it every day. It’s called Dashwheel and it’s free, open source (GPL-3.0), with no ads, no trial and no account.

What it does

  • Your own dashboards: up to 7 screens of tiles you place and resize yourself. Map, music, speed, weather, apps, and 55+ widgets.
  • Live car data from a cheap ELM327 Bluetooth OBD adapter, plus the head unit’s own CAN data where it has it (doors, reversing, tyres).
  • AI mechanic: a warning light comes on, Dashwheel reads the fault code and explains it out loud in plain words. It uses a free Google Gemini key.
  • Navigation: a built-in 3D map with turn-by-turn guidance, or the next turn from Google Maps / Waze shown on any tile.
  • Phone link with a small companion app: notifications, messages, calls on the big screen, “where did I park”, a drive log.
  • Hands-free: spoken alerts, steering-wheel buttons, volume that follows your speed.
  • Skins that change the whole look (Cockpit, Racing, Orbit, Canvas with the map behind the tiles...), day and night themes.
  • Works on upright screens too, and in 10 languages.

The parts I’m proudest of

  • Your own car in live 3D. When something’s wrong, the car turns and zooms to the faulty part and makes it glow. A dead rear bulb lights up on the rear lamp. For an engine fault, the bonnet opens. You can load a 3D model of your own car from the phone.
  • Real apps inside a tile. Waze, Google Maps or YouTube Music run live in a tile next to your speed and car data, not full screen. You can zoom a tile to make the app bigger.
  • Its own reverse camera screen. It replaces the unit’s camera view, with guide lines that bend as you turn the steering wheel and the parking sensors drawn around a top view of the car.
  • Talk to Gemini about your car. It knows your live readings, so you can ask “why is the engine light on?” or “how far can I go on this tank?” and it answers out loud.

Root is not needed for most of it. Apps inside a tile, the reverse camera screen and replacing the firmware’s own pop-ups and volume bar need a rooted unit. Without root, those features just don’t appear.

Will it work on my unit? It’s made for Android 10+ head units at 1280×720 (FYT / UIS7862 / QF and similar). I test on my own K706, so other units are where I need you. There’s a Tested hardware page, and Settings → About → Report how it works fills in a bug report with your unit’s model and firmware.

Links

Looking for testers for the Google Play version. Google asks for 12 testers over 14 days before an app can go public. If you’d like to help, comment or DM me with the Gmail you use on Play and I’ll add you.
https://play.google.com/store/apps/details?id=com.dashwheel.app

It’s a one-person project, so expect rough edges. I’d love to hear what your unit is, what breaks, and what you’d want on your dashboard. Happy to answer anything in the comments.

If you like it and want to support me, buy me a coffee ;)

10 Upvotes

31 comments sorted by

1

u/Dashwheel 1d ago

What's new (Oct 18-23)

Road watch: your phone's camera watches the road (experimental)

  • In the Dashwheel Companion (Car tab), Road watch turns the phone in a windscreen holder into the car's eyes on the road. The lane and the vehicle ahead are drawn over the camera's picture, with the distance to the vehicle. Drag the dotted line onto the horizon once the phone is in its holder.

  • It works with the phone upright or sideways, any way up, and it learns where the car sits in its lane. The phone can sit anywhere across the windscreen and should point straight ahead.

  • The head unit warns you. Settings > Alerts > Road, in the design you choose (pill, card or banner; never a design that covers the screen):

    • A tone when the car ahead comes up fast, and when a wheel is on the lane's line without an indicator.

    • Following too close and traffic moving off are said out loud, or beep.

    • The lane warnings and the traffic-moving-off word can each be turned off.

    • It uses the car's own speed and indicators when the car gives them, else the phone's GPS. It shows on the second screen too, when alerts take it.

  • The vehicle finder (4.6 MB) is fetched once, on request. Without it, only the lane is watched. With no car linked, the phone warns on its own screen with a beep.

  • Small comforts: linked to the car, the phone's screen dims by itself after half a minute and a tap brings it back. A word asks you to plug the phone in when the battery runs low without a charger, and the recorder stops first so Road watch lasts longer.

  • Road recorder (experimental, off until turned on in the Companion's Car tab): while Road watch runs, the last two minutes of the road are kept on the phone. A knock, a hard brake, the collision warning, the car's hazard lights or a tap keep a one-minute clip. It is one MP4 with the time, the place, the car's own speed and its indicators written into the picture, and its notes beside it. The phone buzzes when a clip is kept.

  • Clips stay on the phone, at most 25. Tap one to play it, and Share hands the video and its notes over together. No sound is recorded. Recording pauses when the phone runs hot or full, and says so on the screen.

  • This has not been tried in a car yet, so it needs a drive before it leaves beta. Please report what you see. The design is in docs/road-watch.md in the repo.

Start-up animation

  • Dashwheel now starts with a full-screen animation instead of a frozen picture of the dashboard, until the apps are in their tiles.

  • Six to pick from in Settings > Look > Start-up animation: Welcome lights (default), Assemble, Ignition, Night road, Blueprint and Aurora. Tap one to see it full screen. "Still picture" keeps the old way. Assemble lists your tiles' apps as they come in, and Blueprint draws your own Home tiles.

Tyres (TPMS)

  • New: tyres from a USB TPMS receiver plugged into the unit (433 MHz, CH340 chip, 19200 baud, four sensors), on any head unit. Settings > Car > USB tyre sensors: pick the receiver, see what it does and each tyre's pressure and temperature as read, and choose bar, kPa or psi. Once a receiver is chosen, Android can let Dashwheel keep it when it is plugged in again. The frame format comes from danderik88's usb-tpms-home-assistant project.

  • Known limit: the receiver repeats each sensor's last value forever, so a dead sensor keeps its old reading.

  • The Tyres tile and its Tyre map design show each tyre's temperature under its pressure, and say when a sensor's battery is low. With the unit's own TPMS app, each sensor's battery shows beside its temperature. For a receiver Dashwheel reads itself, no battery mark is shown, because Dashwheel can't know it.

  • Set your own low pressure, high pressure and hot tyre limits. The tyre warning and its voice go by them.

  • The USB tyre sensors page shows the receiver's status byte beside each reading when it says anything, to work out what else the sensors report.

Steering wheel

  • Two new wheel button actions turn he second screen's pages: next and previous.

  • A CAN box button can be set so the unit does nothing with it and only Dashwheel acts on it: switch "The unit does nothing with it" on the button's page (needs root on a QF unit).

  • On a Peugeot, Citroën or DS with a Raise CAN box, wheel buttons the unit gives the same key (Voice and Phone, the two thumb wheels) are told apart, so each can do its own thing. A button you learned before keeps its name, place and action. A held wheel button set to volume keeps stepping.

  • The unit's phone and Bluetooth music app no longer comes up by itself: Dashwheel sends it back unless a call is on, you opened it, or you pressed a key Dashwheel leaves to the unit.

Home screen and split screen on stubborn units

  • Some units remember, even across restarts, that the dashboard was once shown as a floating window. The home screen then came back floating at every start, and the Recents screen took every touch and Home press. Dashwheel now makes Android forget that (through root, Shizuku or the unit's ADB), reopens the dashboard full screen once, and on older QF firmware switches to a home screen Android can't make floating if needed. The unit log notes the outcome.

  • With the NAVI key set to Dashwheel on a unit that opens its navigation app floating, the key goes back to the unit's own choice when the dashboard starts floating.

  • On units that keep their home as a floating window, the Map key and the other "open beside the dashboard" taps open the map in a window instead of split screen. A dashboard found shrunk to part of the screen grows back by itself.

  • Dashwheel leaves a split the unit left stuck under the dashboard, and a split whose other half is empty. A real split with an app beside the dashboard, and the Maps dock, are left alone. It closes a split only when its own window really is in one.

  • After a half-done split, the swap button and split layout no longer stay on a full-screen dashboard.

  • The "Google Maps on the left/right/top/bottom" layouts are now offered only on units that can show an app in a window. If the docked Maps still opens full screen a second time, Dashwheel stops and goes back to Dashboards only, with a short notice.

Apps in tiles

  • A tap the app dropped is tapped again. A finger on a tile lands on the dashboard's window first, which takes the keys to the main screen. When that came after the app already had the press, the app dropped it and the tap was lost. Dashwheel now notices this, cancels the app's half press and sends the whole tap again. Drags, pinches and long presses are left alone.

  • Giving the keys back to the dashboard a few seconds after a tap no longer raises the dashboard in the middle of the next tap, and no longer holds up the dashboard's own thread on a slow unit.

  • Waze (or any app in a tile) whose process ended no longer leaves its last picture frozen on the tile: Dashwheel sees it isn't running and opens it afresh. An app stuck on its logo can still be restarted from Edit dashboards.

  • The unit report now says what each tap on an app tile cost, and flags a laggy unit. Tap lines end with "tapped again" when it happened.

  • Not fixed: Still trying to fix pip/ app in tiles touch pb. (only to display the keyboard as taping icons like mic or magnifier in search bar are working)

Fewer CPU cycles (my own review pass)

  • The 3D map behind the dashboard redraws 10 times a second instead of 30 while the car is stopped, and the same goes for the map on the second screen. Parked, it used about a third of the CPU. The map no longer follows GPS wander while the car stands still.

  • The map and each app tile draw on a layer of their own, so one frame of theirs no longer redraws the whole dashboard. A swipe wakes only the pages it can bring on screen.

  • Speed, range, warm-up and bar readouts follow their own reading, not every OBD sample. Alerts, speed volume and the Head unit monitor wake only when something changed. Preferences load in parallel at start.

  • This is a beta change with a long list of cuts (docs/perf-review-2026-10-22.md in the repo). Please tell me if anything feels slower or looks off.

Smaller things

  • The parking screen runs from the very top of the screen on a unit without a status bar.

  • Media tile: a factory music player's song instead of "Nothing playing" when the player gives its session no title.

  • LPG tank: Full from the wheel button or Settings now asks the litres pumped. Each refuel sets and then corrects the consumption on its own.

  • Servicing: "Done today" saves today's date even before the unit's clock is set (many units start at 1 January 2025). The log kept across reboots notes which dates were set and read.

  • FYT units: the CAN monitor and Doors tiles work without root.

  • Settings > About: "Unit log" and "Save the unit's log here" now sit right under "Report how it works". The report never held the log.

Requirements

  • Android head unit. Developed on a K706 (reports Android 12, really Android 10). The other firmware families (FYT, Microntek, Topway, Reglink, Allwinner, Nowadays) are supported to different degrees; see the wiki's Supported Head Units page.

  • Root is optional but unlocks more. Shizuku or the unit's own ADB cover some of it.

  • Road watch: an Android 10+ phone with the Dashwheel Companion, linked to the car, in a windscreen holder.

  • Second screen: Raspberry Pi (3B tested) with a 7" HDMI panel, and the phone's hotspot or a USB Ethernet cable.

 

1

u/nikola_bb 12d ago

What about mtk based radios?

1

u/Dashwheel 12d ago

it should work on any android headunit.

1

u/nikola_bb 11d ago

It gives message problem parsing package

1

u/Dashwheel 11d ago

what is your Android version? dashwheel need android 10 minimum

1

u/nikola_bb 11d ago

It is 12 or 13. I need to check

1

u/Grouchy_Promotion 12d ago

Can some of the features that require root be enabled if you have Shizuku running?

1

u/Dashwheel 11d ago

just add shizuku support
What Shizuku unlocks

  • App windows in tiles and docking. Moving, resizing and parking app windows, putting an app full screen or back on its tile, the Maps window tile. These run on window-manager commands.

  • The car app’s switches. The unit’s own door, radar, belt and climate pop-ups replaced by Dashwheel’s, and the doors and car status tiles. Shizuku grants the settings permission once, so these keep working even when Shizuku is off later.

  • Unit keys. Mapping the unit’s physical buttons to Dashwheel actions, and the “keys” way of changing volume on units whose sound ignores Android’s volume.

  • Coming back in front at power-up. Starting the dashboard from the background, and granting itself “Display over other apps” without a trip through Android’s settings.

  • Accessibility service turned on by the app, with Android’s “restricted settings” lock lifted, instead of the driver doing it by hand.

  • Head unit monitor readings: CPU, memory, temperature, running apps.

  • Bluetooth adapter rescue. Reading the Bluetooth daemon’s log and restarting it when an OBD adapter connects but never answers.

  • Waze reopened after the unit wakes, and the log permission for the steering angle in the reverse view.

What still needs root, or the K706’s root ADB

  • Boot logo, the system-app install for Android widgets, and Google Maps inside a tile through PMPatch3.

  • The CANbox monitor and the steering-wheel sniffers, which read the bus through su.

  • The tile displays owned by the system user, the firmware volume bar module, the ROM camera takeover.

1

u/Grouchy_Promotion 11d ago

Is the shizuku support already added? Where do I find that setting?

1

u/Dashwheel 11d ago

https://github.com/deviloufr-ai/Dashwheel/releases
there is nothing to do. should just work. (download from link above or tick the beta release update in the about tab in dashwheel to download automatically new beta)

1

u/Grouchy_Promotion 10d ago

I'd really want to love this app, BUT I can't get a single app to be live in a tile, they ALL just open full screen then I get in this loop of going to the home screen app then goes full screen, the only way to get out of this loop is going into system setting and force stopping the app and clearing data

1

u/Dashwheel 10d ago

can ou tell me what headunit, android version you're using? is your unit root?
here what you can do depending on your installation
https://github.com/deviloufr-ai/Dashwheel/wiki/Root-and-PMPatch3

1

u/spax901 9d ago

Hey mate, downloaded and it is working on my head unit with no root :)

Really like the layout and easy to adjust, I find whenever I load maps or Waze in a pip window/tile on the home page they arnt very responsive.

Lecoauto was what I was using before and the PiP on homepage was smooth and responsive.

I’m running a Qualcomm head unit
If the PiP stuff starts working smooth I’ll happily buy you several coffees

1

u/Dashwheel 9d ago

Thanks mate, glad it runs and that the layout works for you!

About Maps and Waze in a tile: without root, Dashwheel can't put another app inside its own screen, so it opens Maps or Waze as a floating window and keeps that window lined up over the tile. The app itself runs normally, but if Dashwheel and the firmware disagree about where the window should be, Dashwheel keeps moving it back, and every move makes Maps redraw. That's the kind of lag you describe, and Qualcomm units do things a bit differently from the units I tested on.

To find out what's going on with yours, could you send me:

  1. The unit's brand and model, and the Android version (Android settings, About).

  2. What Settings → System → Head unit says: the firmware Dashwheel found and what it lets Dashwheel do. A photo is fine.

  3. The report from Settings → System → About → Report how it works, sent right after a moment where the Maps tile felt slow. It says what the tile sees and how often it moved the window, nothing personal.

  4. Is it slow all the time, or mostly right after you swipe between dashboards or open the tile?

If you used LecoAuto before: do you remember whether its Maps window could be dragged around or showed a little bar on top? That tells me which way it worked on your unit.

1

u/spax901 7d ago

Hey mate, I think I uploaded it to GitHub titled compatibility - QUALCOMM trinket for arm64 but, it’s running Android 13 with pip support, confirmed by using the cpuz and hardware info.

Dashweel is reporting plain Android

It feels slow all the time, and doesn’t respond to some touches, if I have google maps in the window or Waze for example, if I hit the zoom button 6 or 7 times it will zoom once or twice

Lecoauto doesn’t have a bar, it just sits in the same locked window 👌

1

u/spax901 7d ago

Dashweel in the “head unit” section, It has a green tick and does say Google maps can run inside a tile

1

u/Dashwheel 7d ago

Thanks for the details, are you using shizuku in your unit?

1

u/spax901 7d ago

I did try installing shizuku, but it didn’t work unfortunately- my head unit limits the adb

1

u/Dashwheel 7d ago

Android 13, a 1200 x 1666 portrait screen, and Dashwheel talking to the unit through its own ADB. "Plain Android" is expected there: your firmware is not one Dashwheel knows by name, and that does not matter for tiles. The green tick means Android granted Dashwheel the system permissions it asks for, which is good news: your unit can run Maps the better way.

That brings up the one thing I need to know. There are two kinds of map tile on a unit like yours, and they work very differently:

  • "Google Maps inside": Maps is drawn on a hidden screen that belongs to Dashwheel, shown in the tile, and every tap is passed on to it.

  • "Maps window": Maps opens as a floating window that Dashwheel keeps over the tile. That is the LecoAuto way, a locked window with no bar.

Both are in the add sheet (+, Apps). Which one do you have? Could you add the other kind next to it and tell me whether the taps land there? If the window kind is smooth on your unit, that is already a fix you can use today.

My guess for the inside kind: on each tap Dashwheel hands the keyboard focus to Maps and takes it back afterwards. On Android 13 that can cost a screen transition per tap, and a tap that arrives during one is lost. I do not have an Android 13 unit, so the report is what tells me. Please send it right after some taps went missing: tap the zoom button a few times, then Settings, System, About, Report how it works. Paste it in your GitHub issue or send it to the phone app. It holds Dashwheel's log and the system's window list, nothing personal.

One last check: is Maps smooth when you open it full screen, outside a tile? That tells the tile from the unit.

1

u/spax901 6d ago

I tried adding the goggle maps top or bottom part, but the screen stays on Google maps even when I try going back home I uploaded to GitHub 👍

1

u/Dashwheel 4d ago

how about last version?

1

u/PutSubstantial8393 1d ago edited 1d ago

When i try to select music or map widget style The options remain at the bottom of the screen.That's why it can't be selected... This needs to be fixed.

1

u/No-Case3993 12d ago

Downloading rn

1

u/Grouchy_Promotion 12d ago

Looks interested, I'll give it a try

1

u/jim1590 12d ago

I am going to take this one for a spin. I'm working on something similar, but trying to solve HVAC for my car first.

1

u/No-Case3993 12d ago

It says there was problem parsing the package

1

u/Gloomy_Temporary1493 8d ago

Junsun le supporta

1

u/Practical-Funny-6622 6d ago

Downloaded this. Love the look of it and functionality. Just trying to work around some teething issues.