next turn
m
0 km/h
—%
REVERSE
north up
New version ready

Choose track

Ride reversed

Demo ride

Track colour

✕ end training

can't do this here — skip
N
N
Add mark here
Ride schema — replaces all settings
Look — .dingoscheme
Behaviour — .dingobehavior
⤢ held
DingoNav
Offline GPX follower — your tracks, your maps, no signal needed.
Starting…
G'day — two things before you ride.
The offline map is a one-time ~41 MB download, stored on the device — later opens are instant.
DingoNav
No tracks loaded yet
Demo
Day
Mute
Follow
Profile
Auto zoom
Schema
Track colour
Settings
No track selected
load a GPX to begin
turn strip zone — kept clear
DingoNav

Group ride (needs signal)

off — enter a shared ride name to see friends
Everyone with the same ride name sees each other's position (updates ~20 s via ntfy.sh when online; silently off without signal). It defaults to the bundle name when you load a .dingonav — use one others can't guess.
Load .gpx tracks and a heatmap .geojson (exported from Dingo). Everything is stored on this device and works fully offline.

Turn points

Offline basemap

no basemap loaded
A .pmtiles extract gives roads, trails, water and labels offline. One is auto-downloaded on first open when hosted with the app; cut other areas with the pmtiles CLI (see README).
no terrain shading loaded
Optional elevation extract adds hillshade relief under the trails — gullies and ridges readable at a glance, still flat north-up 2D. Cut one with make_hillshade.py (see README).
Shared tile cache: —
With no local .pmtiles loaded, maps come from the shared dingodirt archive: each pack's ride corridor is fetched once and cached for offline. Deleting a pack releases its tiles.

Aerial imagery (personal)

Optional {z}/{x}/{y} tile URL for the Sat map style — your device only, never part of packs. Ride corridors are cached at z12–15 for offline. The NSW button fills the Six Maps imagery service (CC BY 4.0).
No Strava tiles — include them in a .dingonav bundle from Dingo.
Fullscreen also engages automatically while navigating.

Config

The complete setup in one JSON file — settings, tuning overrides, zoom presets, screen layouts, controller keys. Export downloads the file and copies it to the clipboard; bench-tune on a desktop browser, export there, import here.
Demo replays the selected track — use it to hear the alerts before a real ride.

Bike connection

DingoNav reads the bike's Bluetooth directly — battery, speed, ride mode, blinkers, reverse/crawl and alerts. The VIN is the bike's Bluetooth name; with it set, the pairing list shows only your bike (VargPilot lists both the VIN and the pair PIN). After the first pairing, leave the Stark app or VargPilot connected: the bike only streams once one of them starts the telemetry, and DingoNav rides along on the same link. Once connected the app owns the bike's single BLE slot; tap the 🔋 pill for the full telemetry page — releasing to the Stark app (and taking back) lives there. Paired before? Tap Forget bike once and re-pair — older pairings only unlocked the battery feed.

Alerts

Controller buttons

Works with any Bluetooth remote that types keys (e.g. a DMD2 handlebar controller). Tap an action, then press the button on your remote. Esc while capturing clears a custom key.
Drag buttons and readouts anywhere; drag the cyan corner dot on a readout to resize it; drop a button on the bottom tray to dock it in this menu. Saved separately for portrait and landscape.

Tuning

Live tuning knobs — changes apply immediately and persist on this device. ↺ resets a row to default.