TL;DR: I now have a live battery / solar / shore-power dashboard running on the Xite head unit itself, fed from the Victron Cerbo GX over the coach WiFi, and it took over the Rand McNally fuel log too. Press NAVI and you get the nav with a small green BAT button floating in the corner. Tap BAT and you get the dashboard. Tap NAV > and you're back in the nav exactly where you left it. The radio keeps playing, the backup camera still takes over, and nothing on the unit's internal flash was touched. Everything lives on the nav SD card and undoes with one file rename.
This is a follow-up to my old "semi-jailbreak" post. Same unit (XSG3NA-MB9, now on the 1.15 firmware), different goal: I wanted the Victron numbers on the dash without another screen on the dash.
Source for both halves (the Cerbo service and the head-unit app) available on request. Happy to answer questions.
— Drizzay
This is a follow-up to my old "semi-jailbreak" post. Same unit (XSG3NA-MB9, now on the 1.15 firmware), different goal: I wanted the Victron numbers on the dash without another screen on the dash.
What you see
Two big numbers — state of charge and amps in/out, coloured green/amber/red — then volts, watts, solar, time-to-full or time-left, shore source, AC watts, DC loads, and how old the reading is. Across the bottom, an alert line that's blank unless something's actually wrong: low battery, fridge or freezer warming up, inverter bay hot, propane low, Starlink or cellular data over the month's cap. Refreshes every 10 seconds.How it's built (short version)
- The unit is Windows CE 6.0 with .NET Compact Framework 2.0 in ROM. That's the whole reason this is possible. The dash is a small C# WinForms app. I built it on a Mac with Mono's compiler against the CF 2.0 DLLs copied straight off the unit's \Windows folder — no Windows machine, no Visual Studio, no SDK.
- The Cerbo GX runs a small Python service that reads Victron's D-Bus and serves one plain text page (name=value lines). The dash fetches that over the coach WiFi. No HTTPS, no cloud, no Home Assistant in the loop — it works in the middle of nowhere as long as the coach WiFi is up.
- On the nav card, the dash IS xite.exe. The real Rand McNally is renamed xite_real.exe. The dash starts the real nav at boot exactly like the unit did, then sits behind it with a tiny always-on-top BAT button. That's the whole switch. It has to be the nav card: on this unit only the program the radio starts as navigation gets to use the WiFi, and the radio starts it once, at power-up.
- The card is edited in a card reader on a computer, not on the unit. Image it first. The card is device-bound (the Rand McNally software checks the card's serial), so edit files on the original rather than trying to clone it.
It also took over the fuel log
The Rand McNally has a fuel tracker I've used since 2017 (290 fills). The newer NavNGo software Riverpark ships now has no equivalent, so that log was going to die with the card. It doesn't any more: the dash has a FUEL button. Gallons, the total from the receipt, and the odometer (prefilled from the last fill, type over it), on a big number pad. Save, and the Cerbo records it, works out miles on that tank, MPG and price per gallon, tags it with the GPS position, and Home Assistant's fuel card updates within a minute. The Rand McNally history was imported into the same log first, so lifetime MPG and cost carry straight on. A fat-fingered entry is one command to undo.The Home Assistant side
The head unit never talks to Home Assistant, and doesn't need it: the dash reads the Cerbo directly over the coach WiFi, so it works with no internet at all. Home Assistant gets its copy from the Cerbo, the same way it already gets the rest of the coach's telemetry, over MQTT through the coach's Starlink or cellular link when one is up. The fuel log arrives as one entity, the last fill as its state and every rollup figure, lifetime MPG, gallons, cost per mile, the last fill's place and price, as attributes, so the fuel card on the Home Assistant dashboard follows the head unit within a minute of a fill. If the coach is out of range, the card just holds the last figures it had. The alert line on the dash (battery, fridge, freezer, propane, data caps) is computed on the Cerbo from the sensors it already has, not in Home Assistant.
The usual warning
You can brick this thing. I stayed off the unit's internal flash precisely so the undo is "rename xite_real.exe back to xite.exe". Image your nav card before you start. Nothing here is supported by Xite, Winnebago, or Rand McNally.Source for both halves (the Cerbo service and the head-unit app) available on request. Happy to answer questions.
— Drizzay
