Mobile App
The FastGIS mobile app is an Expo / React Native client for field capture, route planning, offline curvy-road discovery, and real-time elevation profiling. It connects to the same FastGIS server as the browser UI.
Tabs
| Tab | Purpose |
|---|---|
| Navigate | Full-screen MapLibre map — route planning, circular-route generator, POI search, curvy-road discovery, offline tile queries, turn-by-turn navigation |
| Capture | GPS field capture — track recording, waypoint photos/audio/notes, sync to server |
| Map | Static map viewer and overlay manager |
| Profile | Elevation transect tool — draw a line on the map, run GRASS r.profile against any loaded DEM, inspect the chart |
| Connection | Server connection, environment management, saved analyses, app settings |
Navigate is the default tab when the app opens.
Live engine data (OBD-II)
The app can read live engine data straight from the motorcycle over a Bluetooth-LE OBD-II adapter (ELM327 family — e.g. the Vgate iCar Pro 2S). Open More → OBD-II (Bluetooth), tap Scan, and pick the adapter — likely dongles are sorted to the top. There is no iOS Settings pairing step: BLE adapters connect inside the app.
Once connected the screen shows what your bike actually serves, live: engine RPM, vehicle speed, coolant temperature, throttle position, engine load, battery/module voltage — plus an extended probe that asks once per connection for fuel level, odometer, distance-since-service, fuel rate and intake temperature, and reports honestly which of them the ECU answers. Motorcycles vary widely here: a KTM 890 Adventure, for example, answers the core set plus distance and intake temperature, and declines the fuel PIDs.
Next to it, More → CAN bus scanner finds and decodes the signals a bike broadcasts on its CAN bus through the same adapter, read-only. A preflight card asks the adapter the five questions that decide whether a capture is worth making (firmware, device, is the ECU awake, is a protocol pinned, is filtering available) and can force CAN 11-bit/500k when nothing was pinned; enumerate lists every id on the bus for ten seconds; watch records chosen ids losslessly with a live per-byte table, a change timeline and glove-sized event marks (gear, clutch, brakes, sidestand, indicators, steady speeds) so a byte can be lined up against what you did. Decoded signals live in a per-model registry (the KTM 890's gear position, wheel speeds and odometer ship confirmed; coolant temperature and the inertial unit's rates and accelerations ship as candidates), and every capture exports as a log plus a JSON summary. Captures end honestly: a silent adapter or a dropped link stops the clock, keeps the data and says so aloud. A capture recorded while riding carries the GPS fix — speed, accuracy, position, course and altitude — so a ride can be lined up against its stops and the road's turns. That means the file shows where you rode: it stays on the phone until you share it, and it is never sent to the server. A ten-second enumerate on the stand records no position. This is the groundwork for wheel-speed distance tracking and gear display on bikes that broadcast them.
A guided session (from the scanner screen) runs that protocol for you and
speaks it, in the app's language: nine stand stages with the engine running —
rear brake, front brake, clutch, each indicator, throttle, gears, kill switch,
sidestand — and two ride stages. For a switch it records the bus three times,
released → pressed → released, and reports the byte whose values changed only
while pressed and came back afterwards (the third recording is the prediction);
counters and checksums are ignored. On the ride it asks for 20, 40 and 60 km/h
and marks the steady windows from GPS itself, and marks every gear change from
the decoded gear. Skip, retry and abort are one big button each; a dropped link
pauses the session and it resumes where it was. Findings go to the registry as
candidates, and the session exports a tour.json the laptop analyser can
re-check against the same logs (analyse_capture.py --tour).
The session also asks what the dash reads — odometer, trip meters, range, fuel, coolant, air temperature, voltage, service interval — and you type the number as the dash shows it. Each answer is stored with the bus as it was at that moment, and the app looks for the field that holds that number. One reading pins nothing and two fit a line for any field that moved; the third is what tells the real field from the rest. Because that third reading usually comes from another day, Dash readings across sessions (on the guided session screen) searches the readings of every session on the phone as one: it lists the sessions, shows per question how many fields still fit — and whether the dash rounds the number or drops its decimals, which it works out from the readings — and what searching them together bought over the best single session, and lets you leave a session out when its numbers were typed wrong — one wrong reading rules out the real field along with the false ones. Readings in different units, or from a different bike, are never mixed.
The guided session screen offers two sessions. Find the switches is the one described above. Trip ride is shorter and is ridden: twenty to thirty minutes on the road with a stop in the middle. It reads the dash before the ride, at the stop and at the end, so the odometer, the trip meters, the range and the coolant each get three readings at three values in one outing. You reset trip 1 before setting off; on the way out it asks you to hold 40, 60 and 80 km/h (60 and 80 suit cruise control) and counts the kilometres and the full stops from GPS — it needs at least five kilometres and two stops, because a counter ridden at one steady speed cannot be told from a clock. You end the ride yourself, parked. Then the engine stays off for ten minutes — the adapter may go quiet, which the session expects — and the first thing asked after switching the ignition back on is the coolant temperature, the one reading of the day that has gone down. The session survives a locked phone during the wait.
Session reports are kept with the app's documents, so they are still there for next week's search; reports written by earlier versions are copied across the first time the screen opens. The raw capture logs stay in the app's cache, which the phone may empty when storage runs short — share them soon after a session if you want them on the laptop.
More → Bike dashboard shows the bike's own numbers live: gear, revs, front and rear wheel speed, coolant temperature and the odometer. The adapter can carry only part of the bus at a time, so gear, revs and wheel speed are refreshed continuously while coolant and the odometer are read in a short hop every half minute; between two readings the odometer's last digit is carried forward from the rear wheel and marked as estimated. Every number knows how old it is: one that has not been refreshed is dimmed, and one that never arrived is a dash, never a zero. The app only listens — it never transmits on the bus. The dashboard pauses while the OBD-II screen, the CAN scanner or the guided session is open, because they need the adapter to themselves, and carries on when they close. Values are metric.
Lean and motion sensor is a third guided session (More → CAN scanner → guided session). It asks for four still poses in the garage with the engine running — on both stands, on the sidestand, held upright, leaned right against a wall — and then one firm pull-away and stop on a straight road. The phone must be calibrated on its mount first (More → Sensor calibration): it is the reference. In each pose the phone says when the bike has come to rest after being moved, and the app then listens for five seconds to the bike's motion sensor and five to the bike's own lean angle. If the phone cannot say, you can tell the app the bike is still. The pull-away ends by itself when the GPS sees the bike standing again. Last comes a turn each way — a roundabout in each direction will do — which says which way the bike counts its yaw rate; both directions are needed, because one alone cannot tell a sign from an offset. The result is a table of every pose three ways — phone, bike, motion sensor — whether the bike's lean agrees with the phone and with which sign, and how the motion sensor is mounted. Without a pull-away the direction of forward is an assumption, and the page says so.
Lean and tilt are the angles the bike's own electronics compute, shown with their sign: a negative lean is a lean to the left. They are candidates — read from the bus and matched against what other owners of the same engine found, not yet checked on this bike in known poses. Carrying them takes more of the link than has been proven, so the dashboard tries: if the adapter stops sending twice within a minute it drops lean and tilt for that session, says so, and keeps everything else. Lean and tilt from the bike switches them off altogether.
Fuel is an estimate, and says so. Type the litres at the pump and whether you filled to full; from a full tank the app subtracts the kilometres ridden since (from the bike's odometer) times what the bike uses. Until two fills to full have been logged that figure is the book's 4.5 l/100 km; after that it is learned from the pump — the median of the last five full-to-full intervals — and the estimate is shown with the range between the thirstiest and the thriftiest of them. A refuel logged without the adapter connected has no odometer and cannot teach the consumption. The bike's own fuel reading is shown beside the estimate as a percentage still being checked, and never mixed into it.
The dashboard starts by itself. The app remembers the adapter you connected to and, with Connect by itself on, reaches for it when it is likely to be powered — when the car screen connects, when the app comes to the front, when the link drops. It tries six times over about two and a half minutes and then waits for the next such moment, so a phone away from the bike is not kept busy. If you disconnect by hand it stays disconnected until you connect again or the next ride begins.
Trip A and Trip B are the app's own trip meters, kept from the bike's odometer; they are separate from the trip meters on the bike's dash, which the app can neither read nor reset. Reset one by tapping Reset twice. They keep counting across days without the adapter: the next odometer reading brings them up to date.
The screen stays awake while connected, and works alongside CarPlay (minimise the companion overlay to reach it while the head unit is active).
Signing in
Open More → Connection and sign in with your username and password. The server URL is pre-filled; change it only if you run your own server. The app keeps the session token in the phone's secure storage and signs you back in on relaunch.
One phone per account
An account is signed in on one phone at a time (plus one desktop session, which is separate). If you sign in on a second phone, the app tells you which phone holds the account and when it was last active — or that it is riding right now — and asks before taking over:
- Cancel changes nothing on either phone.
- Sign in here signs this phone in and the other one out.
Signing in again on the same phone never asks. An account can change phones up to five times in 24 hours.
The phone that was signed out stops being part of the account within seconds when it is online: it stops sharing its location (friends no longer see its dot), leaves any call and group ride, and no longer rings for calls. It shows Signed out — alice signed in on iPhone · iOS 26.4 at 14:02. A phone that was offline shows the same notice the next time it comes online or is opened. Offline maps and navigation keep working while signed out, and captures that were not uploaded stay on the phone.
Devices
More → Connection lists where the account is signed in: this phone and, if there is one, the desktop session, each with when it was last active. Tap Sign out under the desktop to end a session you left open on a shared computer; it is signed out at once and told it was signed out from this phone. The desktop client can do the same to a lost phone. An administrator can also sign an account out on every phone, desktop and browser at once — the devices say so when they are signed out.
Your data, and deleting your account
Signed in, More → Connection is the account's page (its title reads Account), and it carries the two rights the web account page has (accounts):
- Your data → Download a copy of my data. The copy is built in the
background. The link is emailed to you and waits on your account page on the
web (
fastgis.eu/account) for 6 hours; downloading it needs a sign-in there. One request an hour, from the phone or the web: ask again sooner and the app says at what time you can. Once the copy is ready, the card says until when, with a link to the page. - Delete my account… The card says what goes at once (public links and shares, emergency contacts, friends, groups, push and live sharing; you are signed out everywhere), what waits 30 days (everything else), and how to cancel. The next screen lists your shared tracks, none ticked, with what keeping one means; then you type your username exactly to confirm. If you kept a track, the app shows the one-time code that is the only way to remove it later, once, in groups of eight, with Copy the code; it is also emailed, and the phone does not keep it. A ticked track that was too short to keep once its start, end and stops were removed is said to have gone with the rest. Sign out (or leaving the screen) then signs the phone out and clears the account from it, as an ordinary sign-out does. Offline maps and recordings not yet sent stay on the phone.
Signing in with an account inside its 30-day window gives no session: the sign-in card says the account is being deleted, on which date, and Open the web page goes to the web screen where you can Keep my account (or erase it at once). A phone whose account was deleted elsewhere (the web or the desktop) is signed out and says so.
Navigate tab
The Navigate tab is a full-screen MapLibre map with floating controls and a set of bottom sheets.
Floating controls
| Button | Action |
|---|---|
| ⊙ | GPS follow — tap to re-centre the map on your position and lock the camera to follow you. Tap again (or pan the map) to unlock. |
| + / − | Zoom in / out |
| 2D / 3D | Toggle perspective tilt |
| ⊕ | Open the POI category tray (see below) |
| ☰ | Map settings and basemap selector (see the Adventure basemap) |
| ⊞ | Routing wizard — the entry point for all route planning |
In portrait these stack as a single right-side column. In landscape the same buttons sit in a horizontal bottom row, with the central Route pill flanked by zoom/perspective controls on the left and POI / GPS / nav-toggle on the right.
The Map tab mirrors this exact layout: same button sizes, same gaps, same right-column-portrait / bottom-row-landscape pattern (Map's primary action — the Capture FAB — sits in the visual centre slot equivalent to Navigate's Route pill).
Routing wizard
Tap ⊞ to open the ride wizard. Four options are available:
| Option | Description |
|---|---|
| 📍→📍 Plan a route | A-to-B route with waypoints, vehicle type, and routing preferences |
| ↺ Loop | Circular tour from your GPS position or map centre |
| ✨ Scenic loop | Pick places worth seeing (and fuel and food stops), then a closed tour through them |
| 〰 Find curvy roads | Discover scenic and twisty roads from the curvature database |
| ⏺ Record Ride | Start a GPS field session — track, waypoints, photos, audio, notes |
POI chip bar
Tap ⊕ to reveal the POI category tray. Selecting a chip overlays the corresponding points of interest on the map. Chips are multi-select: tap several to see, say, fuel and food together — each category keeps its own colour and icon, the round button shows the chip's icon for one selection and a stacked-layers glyph with a count for several, and tapping an active chip removes just that category.
The nearest-POI pill at the top of the map shows the single closest place of the active category with a live distance. Tap it to open the results list: every hit of that category, nearest first, each row with its icon, address and distance badge, opened on the very place the pill was showing with its card expanded. Tapping a row expands it in place — opening hours, phone and website where the map data carries them — with four actions: view on map, set as destination, add as stop, and details (the full place sheet with bookmarking). Every sheet you reach from a result carries a back arrow to what opened it: the dropped-pin card and the place sheet return to the list on the same row; the route planner returns to the result, pin or place that set the destination or stop; the wild-camp tools (camp near here, walk me there, nearest water) return to the pin card, and from there to the list. The same holds for the text search: a result's planner or pin sheet leads back to the search. With several categories active the pill becomes a pager: swipe it to switch category (the map stays put), and the list opens with that category's filter pill preselected — the other categories are one tap away. Distances follow you as you ride; after a "Search this area" they stay measured from that centre.
Dense result sets are clustered into bubbles until you zoom close enough for the markers to fit: a dozen fuel stations spread out at z12, while three hundred restaurants in a city centre stay clustered two or three zooms longer. Tap a bubble to zoom into it.
| Chip | Category |
|---|---|
| ⭐ | Saved places |
| 📦 | Field captures (from the Capture tab) |
| 🏛 | Attractions |
| 〰 | Curvy roads (runs a quick curvature query) |
| 🏁 | Practice grounds (opens the Practice grounds sheet, below) |
| ⛰ | Mountain passes |
| 📍 | Meeting points |
| ⛽ | Gas stations |
| 🍴 | Food & restaurants |
| ⛺ | Camping |
| 🏨 | Biker-friendly hotels |
| 🅿 | Motorcycle parking |
| 🍦 | Ice cream |
Tap a chip again to hide its layer. Tap the map or close the tray to collapse the bar.
Search
The Search pill at the top of the map takes a place name, an address, a coordinate pair, or a category with a spatial hint ("fuel near me", "food in the area", "gas along the route"). Results use the same rows as the POI list — the name on up to two lines with the full width of the row, the address or kind of place under it, and the distance badge and the row's buttons on a line of their own below — and each row expands in place into the same card (view on map, set as destination, add as stop, save to bookmarks). A Best match / Nearest toggle above the rows orders a name query either by how well the name matches (the default: "Bergen" the city beats a Bergen street 200 m away) or purely by distance from you; the choice sticks. Best match is measured from the area the map shows, online and offline: plan a trip with the map over southern Tunisia while you sit at home in Norway and "Tataouine" gives the Tunisian town's rows first, not a restaurant of that name in France; where two places share a name, a city goes before a suburb, a street or a shop. With no map on screen it is measured from you. Every row says which country it is in. Category and along-route queries are nearest-first regardless. Recently picked places near the map's area appear above the fresh results and expand the same way; one far from it takes its place among the results.
Practice grounds
The 🏁 chip opens the Practice grounds sheet: the motocross tracks, trial and enduro areas, supermoto and speedway tracks, karting and other motor-sport circuits that OpenStreetMap knows, searched around you or around the map's centre (10–200 km), filtered by kind. Each row's dot and each pin's colour say who may ride there: green Open to the public, amber Members only, grey Access not stated in OpenStreetMap: check before you go — most grounds carry no access tag, so the card tells you to check rather than guessing. A ground OpenStreetMap marks private, or inside a military zone, is never shown; one inside a protected area is shown and the card says so.
A row expands into the ground's card: its kinds, the legality line, the size, surface, fee,
opening hours, operator and phone where OpenStreetMap carries them, the ground's website,
the upcoming public events held there (listed or published events whose meeting point is
within 500 m), the OpenStreetMap source and date, and the three seeker actions — Route to
it, Add stop and Save (a bookmark on the same fg-poi:<id> record the desktop's
Save to library makes, so the two libraries agree). Sort by travel time asks the routing
engine once for the nearest grounds.
Hold an event here, under the card's events, makes the ground the meeting place of an event you run: the events you are the owner or an organiser of that are not finished or cancelled, or New trip meeting here, a trip named after the ground. The ground is saved to your library first (the copy you already have of it is used, so there is never a second one) and becomes the event's Start stop; an event that already has a Start asks before it replaces it, and keeps its day and place in the schedule. The answer says what is still missing: the ground's card lists the event only once it is published, listed for everyone, and has a date still to come — a ground's card lists upcoming events only, so a trip with no date never appears on it however rightly it is published. Set the date gives it a start right there: a day earlier or later, half an hour earlier or later, from tomorrow at 09:00, in the event's time zone (a new trip takes the phone's); a time already past cannot be picked. Who sees it (Private, By invitation, Listed) and, for the event's owner, Publish sit right under it, so the whole way to the ground's card can be done on the phone (the event console on the desktop does the same and more); Open the event takes you to the event on the phone.
Offline, the search and the card's facts come from the region's data pack (the grounds ride in the same POI pack as the other places; a pack downloaded before October 2026 has none until it is fetched again). Only the events need the server, and the card says so instead of listing none — and offers no Hold an event here. The same grounds are a map layer too: Practice grounds under Overlays in the map settings, painted around the map's centre.
Report a ground the map does not have
OpenStreetMap is mostly a motocross map, so the place you actually practise on may not be in it. Report a practice ground adds it: long-press the spot on the Navigate map or the Library map and pick it from the point's card, or — standing on the ground itself — use the row at the bottom of the Capture tab, which reports it where you are. Two taps and nothing to type: which motor sport is ridden there, and who may see it.
- Only me is the default, and the ground stays yours whatever your usual sharing choice.
- Other riders shares it, and the card says what that takes: other riders see the ground once a second rider reports the same place (within 300 m of yours, both on site, from accounts at least a week old). The pin they see is the middle of the riders' reports. You can share a ground you kept private later, from its card.
- A ground in a military zone or in an area OpenStreetMap marks private, or within 300 m of a ground the dataset already has, stays yours alone. The card says which of those it is, so the wait is never a mystery: waiting for a second rider, shown to nobody else, or OpenStreetMap already has a ground here.
A ground riders reported sits in the same list and on the same layer as the dataset's, in amber and labelled Reported by riders, not confirmed. It has no OpenStreetMap page behind it and is not in the offline data packs, so other riders' reports need a connection and the card says so; Route to it and Add stop work as on any ground, and there is no Save — there is no record to save yet. Your own reports are always in the list, whoever else can see them, including one made offline or still waiting in the queue — that one says saved on this phone, not sent to the server yet.
Every ground you report is also in the Library under the Signal chip, beside your gates and hazards, where you can find it by name, filter it by kind, withdraw it or change who sees it — the same place as every other report you make. Nothing of another rider's ground names a rider, a day or a note, and nothing is sent to OpenStreetMap: sending a note is planned and not built yet.
Wild camp
Long-press a spot on the Navigate map and choose Camp near here: the server walks the terrain from that point for the walking horizon you pick (1, 2 or 4 h) and lists the best tent spots, with the walk to each, the water nearby, the slope and the view; tap one for its walking track. The same card offers Walk me there and Nearest water.
Advanced, above Find camp spots, holds the same settings as the desktop's wild camp: how far to walk for a better spot, what matters (view, water, flat ground), and under Filters how many spots, how far apart, the steepest slope, the farthest water, and how far to stay from buildings (Distance from buildings, 150 m) and from main roads (Distance from roads, motorways down to tertiary roads and their links, 100 m). 0 m turns either distance off. Reset to defaults puts them all back. The settings are kept on the phone, apart from the desktop's.
Map overlays
Tap ☰ to open map settings. The Overlays section lists nine toggleable data layers:
| Overlay | Description |
|---|---|
| 📷 Speed cameras | Fixed speed camera locations sourced from OpenStreetMap. Requires a server connection. Not drawn in a country where camera warnings are not allowed (see Speed alerts and speed cameras). |
| ⛽ Gas stations | Fuel stops in the current map area. Requires a server connection. |
| 🏖 Beaches | Scored sandy beaches from the beach-seeker dataset. Requires a server connection. |
| 🏁 Practice grounds | Places to practise off-road riding, from OpenStreetMap; the pin's colour says who may ride there (see Practice grounds). Requires a server connection. |
| ⛰ Slope shading | Steepness in % grade, from the GLO-30 terrain model. Requires a server connection. |
| 🌀 Curvature | Every road coloured by twistiness per km. Requires a server connection. |
| 🚦 Live traffic | Closures, roadworks, queues and accidents from the national road authorities of nine countries, Norway included. Requires a server connection. |
| 🌧 Weather timeline | Rain, wind gusts and temperature as scrubbable, playable animations over the map — on the Map tab (beside the lean and acceleration HUD) and on Navigate. Rain shows the last hours of weather radar, our own two-hour nowcast and the forecast; gusts and temperature are the hourly forecast for the day ahead. The card has three lines, so it fits the narrowest phone: the play button, the timeline and the time; the variable to pick beside its colour scale; and, for rain, the marks drawn on the map with an ⓘ that names each one in words. A tap on the card folds it into one round button, which joins the column of round buttons on the map's edge. A fourth layer, visibility 🌫, draws fog and haze only where they limit the view (under 5 km). Rain shows its phase — a pale hatch where it will fall as snow, a lighter one for sleet, a red one for freezing rain — and thunderstorm cells as ⚡ marks; the timeline gets a yellow tick at every forecast hour at which your own position is under thunder. When a route is planned, the plan sheet prints the rain (❄ / 🌨 / 🧊 by phase, ⚡ for thunder), gusts (with a compass arrow for where the wind blows — the gust layer itself draws the arrows) and temperature expected at each stop's arrival time, read from the same frames. All frames come from our own ingest of open data (EUMETNET OPERA radar, MET Norway, DWD ICON-EU), never from a third-party tile service. Requires a server connection. |
Each overlay is toggled independently. Overlays stay active when you switch between sheets or tabs.
Who the data belongs to
The i button in the top-right corner of the map lists the sources behind what you are looking at — the basemap and every overlay you have switched on. The list changes as you toggle layers, so it always names what is actually on screen. Most of this data is free because someone requires it to be credited: OpenStreetMap under ODbL, the Norwegian road database under NLOD, the orthophotos under each national programme's own terms.
Live traffic
Incidents are drawn in severity colours — red for a closed road, orange for a major restriction, amber for a minor one, blue for information.
The authority's own wording is always kept as published. English is shown alongside it: a translation where that authority's licence permits one — which matters in Finland, whose feed is Finnish-only — or a summary built from their status codes where it does not. Norwegian text is never translated, because Statens vegvesen's terms forbid it. Swiss messages are not translated either, for a different reason: they are labelled records rather than sentences — mostly street addresses — so the labels are rendered in English from a fixed glossary and the place names are left exactly as published, which is what you need when matching them against a road sign.
Where it works today: Italy, Switzerland, Germany, Spain, France, the Netherlands, Sweden and Finland, plus indicative winter closures for Norwegian mountain passes. Coverage is not uniform, because each country decides what its road authority publishes — Germany is motorways only, France omits the toll-motorway concessions, and Spain excludes Catalonia and the Basque Country, which run their own services. Italy is the broadest of the set and reaches down to city streets. An empty map in a covered country usually means there is genuinely nothing to report on that stretch.
Two things to know about it:
- Closures change your route. Server-planned routes avoid closed roads by default, and when you navigate, the app checks the incidents along your route — you get a spoken heads-up as you approach one, and on the car screen a small traffic pill (see below).
- Offline routing knows nothing about it. When the phone plans a route on-device, live traffic is not part of that calculation.
The separate Road works overlay is gone. It asked the Norwegian NVDB directly and drew an orange dashed line — nothing more; none of that database's detail was ever shown. Norwegian roadworks now come through Live traffic along with everyone else's, from Statens vegvesen's own situation feed, which adds closures, queues and accidents, a severity for each, the period it applies to, and the credit the licence requires. If you had the overlay switched on, the toggle simply will not be there after this update.
On the car screen (CarPlay / Android Auto)
The head-unit map has two states, and one recenter button that means the right thing in each.
The head unit's bar buttons are symbols, not words — zoom out, zoom in, recenter and drop-a-pin. A nav bar is read at a glance and at speed, and a symbol needs no translation. They are the same icons the phone uses for the same things.
- With no route running the map follows your GPS: your vehicle marker is drawn on it and the map keeps up as you ride, so the surroundings stay current even on a routeless day out — with a capture session open or while recording just the same. It stays north-up, and following never touches the zoom, tilt or rotation you chose.
- Panning disengages the follow. The centre reticle is always there in pick mode — crosshairs marking the exact point the bar's drop-a-pin button will route to. There is no on-map instruction any more: the crosshairs say which point, the pin icon says what happens to it, and it routes straight away. Planning a route with stops is the phone's job. Zooming does not disengage it: zooming around your own position is still following.
- A preview only borrows the map. A route you are planning on the phone, a loop candidate, a library track, or the results of a Services search are zoomed out to fit once, so you can see the whole shape. The map does not stay there: as soon as you have ridden about 150 m away — or you tap recenter, or the preview closes — it comes back to you at the zoom you had before. Nothing you looked at on the phone can leave the car map parked on it.
- Recenter snaps back to your position and re-engages the follow. Ending or cancelling a route also returns the map to following.
- With a route running the map switches to the course-up navigation camera, with the marker pinned to a fixed point on screen while the map slides underneath it.
On Android Auto, Google's own cards show the turn and the trip. While a route runs, the head unit draws its routing card (the next turn, the one after it, lanes where it has them) and its trip card (time left, arrival, distance) over the map. Epona does not draw a second copy: its overlay keeps the speed sign, the road name, the status pills and your marker. The compact guidance button is a CarPlay feature and is not offered on Android Auto. In Android Auto's split-screen dashboard only the left card shows the map; the marker, the position halo and the crosshair sit inside that card. Typing on the phone (a destination, a search) works while the car is connected.
Your library shows up on the car map as you browse it. Open the companion's Library page and whatever your filters and search currently match is drawn on the head unit — tracks as lines in their category colours, bookmarks and waypoints as dots — so you can see the shape of what you have around you rather than one record at a time. Tap a row and the car zooms to that record and emphasises it, dimming the rest; collapse the row and the map returns to the whole set. Leaving the page takes the results off the car with it. Everything is drawn at a resolution the car can paint, so a filter matching a dozen full-length GPX tracks stays smooth. The companion console and the turn-by-turn HUD are fully translated — page titles, buttons, filters and empty states — and the HUD's metric labels now shrink to fit rather than clipping, so a longer word in your language keeps its ending.
Locking the car screen to wipe it. An adventure bike's head unit gets filthy, and cleaning it with the app live means panning the map and pressing whatever the cloth lands on. Tap the small padlock in the corner of the companion's joypad and the head unit stops listening: its buttons, its pan and its pinch all go inert. The map stays exactly as it was — nothing covers it; a small amber padlock pill in the banner along the top counts down the seconds until the lock releases itself (it turns green once you have pressed the car's padlock once). Guidance is deliberately not interrupted — the voice keeps speaking and the next turn stays on screen, so you can clean the glass mid-route. Unlock from the same button on the phone, or press the padlock on the car twice — a single tap cannot unlock it, because a wipe is taps. It also releases itself after thirty seconds, so a missed unlock can never leave you with a dead screen. One honest limit: this locks our screen, not CarPlay's — Apple's own bar stays live and nothing an app does can change that.
The companion Services page works in both states. With a route running it searches ahead along the route, as described under Services ahead while navigating below. With no route it searches around you: tap a service and the nearest places come up nearest first, each with its distance and direction ("640 m · SW"), replaced by the road distance and riding time ("1.8 km by road · 5 min") a moment later once the routing engine has answered — on the phone's own engine when you have offline routing data, so it works without signal. Tap a row to see it on the car map, then Navigate to start turn-by-turn to it; the car map switches to the navigation camera and the page switches to route mode. The search reaches as far as Settings → Routing → Services search radius (50 km by default), and the empty state names that radius so you know what to widen. Which services the page offers — and in what order — is yours to set: Settings → Routing → Service buttons (one to six of the map's POI categories; gas, camping and beach by default), reachable in-console from the ⚙ in the page header. The same list drives the phone's services-ahead sheet.
A report that closes the road ahead asks on the head unit too. A native alert — Avoid or Keep — comes up 2 km before it, worded shorter than on the phone so it takes one line instead of three on a small car screen, the same question and the same answers as on the phone (see Reporting gates and hazards); when no way around exists there is nothing to answer, so no alert comes up and the voice and a red pill say it.
Weather reaches the car screen too. Switch the weather layer on and the head-unit map paints the same frames the phone does — rain, gusts, temperature or visibility, at whatever time you have scrubbed to — because the car mirrors your selection rather than keeping one of its own. A small legend sits in the corner with the variable, its units and, when you are looking at a forecast rather than at now, how far ahead: a colour wash you cannot explain at speed is worse than no layer at all. The head unit cannot be touched, so the control lives on the phone, on the companion's new Weather page: the on/off switch for the car map, the variable, and a coarse scrubber with a Now button. The phone's own timeline bar remains the place for fine scrubbing; this is for "show me the next hour" at a fuel stop.
The next turn is drawn on the route. While turn-by-turn is running, the stretch of route through the next turn is painted white with a thin dark edge and ends in an arrowhead pointing the way out, on the phone and on the CarPlay / Android Auto map alike. On the Adventure map's night palette, where the side streets are near-white, it turns green with a grey edge instead. The car screen switches with its own day/night, as its map does. It bends with the road, so a hairpin, a fork or a slip road reads at a glance, and at a roundabout it follows the ring to the exit you take. It reaches a few seconds of riding either side of the turn, further at speed and shorter in town, and keeps a readable size as you zoom. Once you are inside it, it starts under you. Plain "continue" instructions get no arrow, and neither do Rally roadbook rides for now. Switch it off, or change its day and night fill and border colours, under Settings → Appearance → Turn arrow on the map.
The phone's navigation camera zooms and tilts by itself. The phone's turn-by-turn map used to hold one fixed zoom. Now it zooms out as you speed up and back in as you slow down, on a curve set per vehicle; the bicycle sits closer than the old view. As a turn comes up it zooms in and lays the map flat, so the turn arrow reads like a plan. The same happens when you slow right down or stop, and at your destination. It goes back to the riding view only once the turn is behind you, the next one is still far off and you are back up to speed for a few seconds, so stop-and-go traffic or a cyclist hovering around one speed does not make it pump. Navigation still opens flat. 3D is your choice: tap the 2D/3D button and the map goes flat for each turn and returns to 3D afterwards, on every vehicle including the bicycle. It never tilts to 3D on its own. + and − now nudge the automatic zoom rather than replace it, and recenter clears that nudge. After you pan the map, it recenters itself 8 seconds after your last touch if you are moving. While you are stopped it waits, so you can study the map. Switch the automation off under Settings → Navigation → Auto zoom & tilt. Walking routes keep a flat, fixed map unless you also turn on Also when walking. The 3D view is also the same, gentler angle on every map now (the Navigate tab and free rides used a steeper one). The CarPlay / Android Auto map does the same, with the same rules at the car screen's own scale. The companion's zoom buttons nudge its automatic zoom, and after you pan it, it comes back 8 seconds after your last touch while you are moving (it used to wait 12 seconds, even when you were stopped).
Weather and traffic now stay on the map while you ride. Until this update the turn-by-turn map drew the route and nothing else, so switching a layer on before setting off meant watching it disappear the moment guidance started — which is exactly when a closure ahead matters most. Both layers now follow you through the ride, drawn under the route line so they stay context rather than clutter, and anchored on you rather than on wherever the camera happens to sit.
Live traffic reaches the car map too. Switch the traffic overlay on and the head-unit map draws closures, queues and roadworks in their severity colours — red for blocking, through orange and amber, to blue for a notice — with closures painted over the lesser ones so a shut road is never hidden under a speed-limit line. The car asks for its own window, not the phone's: the phone map is released under the console, so its centre freezes wherever you last left it, and traffic drawn around that would be traffic for somewhere else. It refetches once you have moved about 20 km, and draws at most 120 incidents, the least important dropped first. The along-route pill and its list are unchanged — they remain the way to read what is ahead on the route you are actually riding.
Until this update the car simply never showed weather — not because the map could not draw it, but because the overlay data was assembled by a phone screen that is not even mounted while the companion console is covering the phone. The car now keeps that data alive itself.
The car screen draws the same map as the phone:
- The same basemap. The car loads the phone's map style: the same server, label language, POI selection and badge density, and your downloaded offline map when you have no signal.
- Night follows the car. With the Adventure theme on Auto, the car map switches to night when the car does (usually with the headlights), even if the phone is still in day mode. An explicit Day or Night setting applies to both screens.
- No patterns at speed. Nature detail (Settings → Map: Off / Tint / Detail) applies to the phone map only; the car map always shows Tint, online and offline, so tree-type and wetland patterns never clutter the head unit.
- The same route line. The route is blue with a dark edge on both screens, and plan previews and alternates match the phone too. A round trip's way back is purple on both. On a very long route (a trip across Europe and back) both screens draw every bend of the road from 2 km behind you to 12 km ahead, and around the spot you pan to; farther away the line is simplified so the map stays smooth. Rain and storm stretches ahead are painted on the route as on the phone. Unpaved and curvy stretches stay on the phone, to keep the car screen easy to read at a glance.
- The same vehicle marker. On the phone and in the car, the marker points where the phone's compass says you are facing while you are stopped or rolling slowly, and follows the road once you are moving. The phone's compass is disturbed by the bike's metal and electrics at speed, which is why it is not used then. The compass reading is corrected for a phone mounted in landscape. A translucent blue circle around the marker shows how accurate your GPS position is: it hides under the marker when the fix is good and grows when the fix is poor.
- The same camera. Navigation opens flat (2D), with the same perspective tilt as the phone when you switch to 3D on the companion joypad. The zoom, vehicle marker and speed-limit sign are the phone's, scaled to the size of the car screen.
- The head-up display lines up with the trip panel. Epona's own display and the car's arrival panel below it share the same left and right edges, because both sit in the column the head unit keeps on that side.
- The head-up display stays on the left. CarPlay reserves the left of the map for its maneuver card and keeps that room even when the card is hidden, which used to push Epona's own display into the middle of the screen with the left half empty under it. It now sits on the left where the car's own alerts appear, so the two stack instead of competing for the middle.
- One road chip, not two, and flush with the card. The car's small panel beside Apple's card carries what that card has no room for: the road's shield, the lanes before iOS 17.4, and the road name scrolling. It uses the card's own background and sits against its edge, so the two read as one block rather than two panels floating over the map. Where the road is its number — an E39, an A5 — the shield says it and the name is left out, so the panel is a single badge instead of the same two letters twice across a third of the screen. In compact guidance, where Apple's card is hidden and our panel is the whole head-up display, the turn, the road and the lane guidance are rows of that one panel — four lanes with the two you want lit, under the distance and the road name, on one background. While the car puts up its own alert — the report-ahead question, an incoming call — the display drops the lane row for as long as that alert is on screen, so the two never sit on top of each other, and takes it back the moment the alert goes. Raise the head unit's top bar as well and there is no longer room for the road name either: it keeps the turn and the distance, which is what you are there for, and restores the rest as soon as the room comes back.
- Alternate times that can all be read. When a plan with alternatives is mirrored to the car, each one's time sits where that route leaves the one you have, and if two would land on top of each other at the zoom the car fitted, one of them steps clear.
- The same place markers. Results from the car's Services page — along the route or around you — use the phone's round category badges; the row you tapped on the phone is drawn larger.
- The same maneuver symbols. Turn arrows use the phone's colours: teal for left, orange for right, red for U-turns, green for arrival. Arrival is a checkered finish flag, on the phone HUD and on the car's maneuver card alike. Apple's maneuver card, which also feeds the instrument cluster and the dashboard, shows the phone's roundabout symbol with the real exit direction and exit number. Within 2 km of a junction it also shows the lanes, with your lane lit. On CarPlay before iOS 17.4, and on Android Auto, the lanes stay in the small chip on the map instead.
Everything else rides in one banner along the top. Rain and storm ahead, traffic, a closed gate, a rider's report, an advisory zone, the rain legend, the REC badge and the screen lock used to stack down the right-hand side of the car screen, and with enough of them up at once they ran over each other, over the speed cluster and off the bottom of the screen. They are now a single row along the top edge, clear of the map and of the route drawn on it. What is ahead of you comes first and stays: a closed road never rotates away. The rest take turns in whatever room is left, one at a time, each holding still for three seconds before the next slides in — nothing scrolls past while you are trying to read it. It stays one row, because the screen it sits over is the one your route is drawn on: a chip that will not fit beside its neighbour waits for its turn instead, and only a chip wider than the banner itself falls back to its tinted symbol alone. A wider head unit shows them all at once and nothing moves. The speed limit and your own speed never take part: they sit at the right-hand end of the banner, every other chip gives way to them, and they are the last thing to move. They are up there rather than in a bottom corner because that is where your own marker rides on a short car screen.
While navigating, a small traffic pill appears in that banner whenever live incidents lie ahead on your route: a warning icon tinted by the worst upcoming severity, the distance to the nearest incident, and a count when more than one is still ahead. It uses the same traffic check the phone runs — nothing extra is fetched in the car — and disappears once the last incident is behind you. Where the head unit has a free map-button slot, a matching traffic button opens a list of the incidents ahead, each with its distance and the road authority's own wording.
Standard route planner
Open via ⊞ → Plan a route.
- Search for a start and destination, or use Use my location for GPS origin. The field search is the same engine and the same rows as the map Search pill (including the Best match / Nearest toggle); one tap on a row fills the field.
- Add optional via-points (intermediate stops) — drag to reorder, tap ✕ to remove.
- Choose a vehicle type:
| Icon | Vehicle | Routing costing |
|---|---|---|
| 🏍 | Motorcycle | Motorcycle — full costing options |
| 🚗 | Car | Auto — ferry, toll, highway avoidance |
| 🚲 | Bicycle | Bicycle — ferry avoidance |
| 🚶 | On foot | Pedestrian — ferry avoidance |
- Tap Calculate route — the route appears on the map and the summary shows distance and ETA. The stops editor then lists the start and every stop, a plain A → B included: each stop's own leg distance, riding time, projected arrival clock and the weather there (the start shows its departure), so you can sanity-check the day before setting off. Tap a row, a stop letter on the map or the start dot to open that stop's card (see Cards on the route below).
Each place shows on the map as soon as you set it, before any route: a typed or picked start as a
teal dot, every stop and the destination as its letter. A stop added, moved or removed after the
route is drawn shows its letter at once, while the route is recomputed.
A background surface trace then fills in the rest of the table under the summary
line's arrow: the % unpaved share (tap its row to highlight the unpaved stretches on the
map), Kinds of road — one row per kind of way the route rides, most kilometres first, with
its kilometres and its share of the route (Track 75.1 km · 66 %, Secondary road 14.2 km ·
13 %, …; a stretch under 100 m reads < 0.1 km), the same fourteen names the desktop
briefing uses and the same split the server measures, so a route reads the same online and
offline — and a Difficulty rating —
surface roughness amplified by climb, on the same 0–1 scale as the
max_difficultyrouting ceiling, with the hard kilometres (difficulty above 0.5) spelled out beside it. Steep tarmac stays easy: only steep rough ground raises the number. - Tap ▶ Navigate to begin turn-by-turn guidance.
- Tap ⛰ Elevation profile in the route summary to fetch and render the elevation chart.
Once the planner panel slides down you'll see a compact route summary chip floating over the map (route label + distance + ETA). The chip has three actions:
- ▶ (green) — start turn-by-turn directly without re-opening the planner sheet.
- ✕ Clear — discard the route.
- The replan icon (📍→📍) on the left of the chip reopens the planner if you want to edit waypoints or options.
Once turn-by-turn is running the ▶ Start and ✕ Clear buttons are replaced with a ◎ Hide / ◉ Show toggle that turns the background-map route line on/off without interrupting navigation.
Opening a saved or sent route
A route opened from the Library, or by tapping a Send to phone notification, fills the planner with its own stops, each named as it was saved. An unnamed stop shows its coordinates. Nothing replaces the plan while you look at it: the planner does not re-plan it on its own, and your first change (a stop, the vehicle, a round trip) re-plans it with your settings.
- Near its start (within 50 km, in a straight line) the route is planned from where you are: My position → its start → its stops → its end.
- Farther away it opens at once as planned, from its own start to its end, and a short note says so. You start it when you get there.
- A route keeps the vehicle it was planned for: a plan made on the desktop for a car opens as a car route even when your phone is set to the motorcycle, and the planner says so. Your off-road and slider settings are not applied until you change something.
- From the tap until the route is on screen the phone shows Opening the route….
Motorcycle and car options
Expand ▶ Routing options in the route planner for every knob the routing server takes for a motorcycle or a car, in the same four groups and words as the desktop's Customise, under the two gate switches and Scenic bias:
- Roads: Highways, tolls, ferries, Tunnels (motorcycle), living streets, Avoid untagged tracks (Norway, Denmark), top speed (30–200 km/h; a car's reads No cap until you set one) and the shortest-distance switch.
- Surfaces and grades: Dirt-first with its max detour, Trails and minor roads, Hills and Max difficulty (motorcycle), tracks.
- Costs and penalties, in seconds: ferry boarding, toll booth stop and penalty, border crossing stop and penalty, gate stop and penalty. A stop also counts in the arrival time; a penalty only steers the route. With Dirt-first on, gates weigh 60 s + 30 s until you change them.
- Advanced, folded: the engine's own weights (road name changes, service roads, a fixed speed, and for a car Time or distance). They move routes in ways that are hard to predict: leave them alone unless you know what they do.
Hills is gradient — 0 avoids climbing, 1 seeks it; bends are the separate Scenic bias. Tunnels at 0 prefers daylight and at 1 the tunnel (bad weather), and never makes a route impossible. Max difficulty is a soft ceiling on how hard the ground may get, 1 = anything, 0 = tarmac only. Both are neutral at their defaults. A knob from living streets on shows the value the server uses until you move it, and only then is it sent; ↺ Reset to defaults gives the server its values back. While Dirt-first is on, it holds tracks at 1, as it holds trails. Every slider can also be stepped with VoiceOver or TalkBack.
Settings → Riding styles (and a motorcycle's Routing tuning in the garage) carries the same knobs in the same groups. A style tunes whichever vehicle the plan rides, so Time or distance shows there too, marked Car only. Only the knobs you move are saved with the style, the values a style already had stay, and ↺ Reset to defaults clears the style's knobs. Your default style's knobs open in the planner as set. The planner keeps its knobs with the plan across a restart.
Trails and minor roads is a preference among the roads the router already takes: on its own it does not add dirt to a long route, and the panel says so. To ride dirt, turn Dirt-first on. While Dirt-first is on it holds this slider at 1.00, shown dimmed. With Dirt-first on, its Max detour (1.2×, 1.5×, No cap) sits right under it, and the Gates and closures ladder is in the panel too: it is the same setting as in Settings → Routing. Change one after a route is on screen and the planner offers Recalculate. That card shows only after such a change, never on a fresh route.
The same panel carries Scenic bias as four steps, Off (the default), Light, Moderate, Strong, as on the desktop. It asks the server to bias the route toward the best-rated roads in the corridor, with a Bends / Climb picker for which axis "best" means. It is strictly opt-in — a biased request takes the server a little longer to compute — and only applies to server-computed routes; on-device routing ignores it.
Round trip, different way back. The way back is chosen among the routes the engine proposes as the one that shares least with the way out, at a similar riding time. When the phone plans on its own engine (the country's routing pack is installed) and finds only the way you came, it asks the server once for the way back. When there is still no other road, the planner says so (No other road back within the detour budget (1.5× the plain route) with dirt-first on…) instead of drawing the same road twice without a word.
A place no road reaches. When the destination lies off every road the vehicle may use, the route ends at the nearest road that connects, on the phone's own engine and on the server alike, and the planner says how far: The route ends 10.3 km from Middalen: no road this vehicle may use goes closer. A track that joins nothing (a short stub near the pin) does not count as that road: when the engine first finds only such a stub, it is asked once more for a road that connects, offline too. The start and each stop say the same when the route passes far from them (The route passes 2.1 km from Stop 2…). A point, the start included, may move at most 15 km. When the nearest road that connects is farther, the planner names the point and how far (The nearest road you can use by motorcycle is 20.3 km from Hjeltefjorden: farther than the 15 km a point may move) and offers Go to the nearest road instead: one tap makes that road the destination (or the start, or the stop) and plans again with the same vehicle. The offer comes offline from the phone's own engine and online from the server, which names the place where the road it found meets your point; a server too old to name it gives the same words without the offer. When no road joins your points at all, or none is near a point, it says that, by point where it can tell which one. A pin in the water snaps to the nearest road, not to a ferry: a route never ends out on a ferry lane, online (by the server, since 2026-10-30) and offline (on the phone's own engine, from the app build after it) alike. The same holds for every stop, an optimised tour's stops, a loop's points, a track's approach and the dirt plans' links. Ferries along the way are still taken, and a reroute, a track's approach or Route me there while you are on board starts from the boat. A route never turns into a walk: the vehicle you picked (motorcycle, car or bicycle) stays, and the failure is said in words, a car-free island too. The phone writes each such failure, with the engine's own code, to the offline log the field diagnostics read. On a round trip the note names its half: The way out ends 11.4 km from Middalen…
When the server cannot plan it. Every reason the server gives is said in words, in the same sentences as the desktop planner, and the server's own error text is never shown. A point outside the area the routing maps cover is named (No route: Reykjavík is outside the area the routing maps cover…); a route with more points than one request may carry says the limit; when the routing engine is down, the planner says The server could not plan this route, with the reason's code in small type under it, as for any reason this app does not know yet. The routing engine limits how far one request may go, counted as the straight lines through all its points: a bicycle 1,500 km, a motorcycle 4,000 km, a car 5,000 km. A route over the limit is asked again leg by leg, split at its stops, and ridden as one route, so a stop partway gets a long bicycle route through. A leg so long the engine runs out of time on it is split the same way. Only a single leg past the limit is refused: The route is longer than the 1,500 km limit for a bicycle: add a stop partway or choose another vehicle. The stop optimiser and the dirt plan say the same reasons. Offline, the phone's own engine keeps its own words (This route is too long for offline routing…).
A round trip, as two halves
A round trip is two routes in one plan: the way out, from the start to your destination (the turnaround), and the way back, from there to the start. The planner reads it that way, with Same way back and Different way back alike; the route stays one route when you save it, send it or ride it.
- The summary. Under the whole loop's figures, a → Way out row and a ← Way back row, each with its km, riding time and arrival clock: at the turnaround, and back at the start. Tap a half and the map fits it and dims the other; tap it again for the whole loop.
- The stops. The destination's row says (turnaround); a ← Way back line follows it (← Way back, by another road on a different way back), then the start again, (back at the start).
- Gates, rider reports and cards say which half they are on, with the km counted from that half's own start: Gate · way back km 13.8. The gate count is split after the whole figure (2 gates · 1 out, 1 back), and the list opens grouped under Way out and Way back. A gate at the turnaround says at the turnaround. The notes name their half too.
- The map draws the way out in the route's blue and the way back in purple, each with its direction chevrons and a little to the right of its direction, so a same way back runs beside the way out instead of under it. Paved ground is never blue or purple.
- On the car screen the plan's preview draws the way back purple and labels each half with its km and riding time.
Choose your way back, or swap the halves. On Different way back the planner keeps the roads back the routing engine offered, up to four, and lists them under the Same way / Different way choice: each with its km, riding time and how much of it it shares with the way out (285.6 km · 5:45 h · 47% shared with the way out), the one you ride marked ✓. The others are drawn grey on the map with a time bubble each, like the alternatives of a plain route. Tap a row or a bubble and that road becomes the way back. ⇄ Swap way out and way back rides the chosen road on the way out and the way out's road back; tap it again to go back. Each choice is planned again, never just reversed (a road ridden the other way may have one-way stretches or turns you may not take): the half is routed along its road, so its gates, notes and times are checked like any other route, both halves. Your choice stays while the trip's stops and options stay; change one and the planner starts fresh. Same way back has no choice to make: the way back follows the way out's roads, routed along them from where the way out ended, so the two halves meet at the turnaround.
Gates on the route, and how far dirt-first may detour
Motorcycle and car routes planned online are checked for gates, bollards, toll booths and border controls (from OpenStreetMap). They are drawn on the route — a white badge with an amber ring for a passable one, red for a closed one — and the planner counts them under the summary.
Each barrier says what it is, with its own symbol: a snowflake for a winter or storm closure (a boom that closes in blizzards, a road shut for the winter), a cone for roadworks, a boat for a ferry's ticket booths, port gate or ramp boom (anything within 1.5 km of a ferry on your route), a flag and boom for a border crossing, a gate with a padlock for a private or farm gate, a booth for a toll, and the familiar bollard and gate for the rest. A barrier that is several of these at once — the ferry's ticket booths are also a toll — shows two stacked cards. Tap the count line in the planner to list every barrier on the route, with the km and each kind it is.
Cards on the route. Tap a row in that list, a closed-gate or rider-report line, or a badge on
the map, and the map moves to it, rings its badge and opens its card in the panel. A gate's card
says its status (and why it is closed), the km, the note the mappers left in OpenStreetMap (as they
wrote it, often in the local language), why it is that kind (the tag, the note in OSM or a ferry
leg 0.5 km away), its position and OSM node, and every tag in words with the raw tag beside it,
such as Open: 24/7 (opening_hours=24/7). A rider report's card says what riders report, the km
(or the stretch), how sure it is, how many riders and when, and what it did to this route, never
who. Copy and Share hand over the whole card as text; ‹ › steps to the previous or next
barrier along the route, and the map follows. ‹ at the top goes back to the planner as you left
it. The rider reports along the plan now have their own badge on the map, so they can be tapped
too. While navigating, a badge tap still shows the short note over the map. To focus on the track, tap the eye at the end of the
gate count line: every badge becomes a small dot in its status colour (red closed, white with an
amber ring passable, orange for a rider report), on the planning map and while navigating. A dot
still opens its card, and the open card's badge comes back. The choice is remembered; tap the eye
again for the symbols.
-
Gates and closures, one ladder. In the planner's routing options and in Settings → Routing → Gates & detours you pick one of three stops. Each avoids what the one before it does, and more, and says what it cannot know:
- Closed on the map: gates OpenStreetMap marks locked, private or closed for the season. It cannot know what riders found closed, or the gates the map leaves unsettled (they are crossed and listed as in doubt).
- Closed on the map or by riders (recommended, the default): also the closures riders confirmed, and your own reports.
- Also gates in doubt, when a fair way round exists: also tries a way round the gates the map leaves unsettled, taken only within your Max detour and keeping nearly all the dirt. With dirt-first off, Max detour shows under the ladder at this stop.
No stop opens a closed or private gate. The old Avoid closed gates switch is gone: if you had turned it off, the planner now plans at the stop your rider-closures switch matched and says so once, until you dismiss it. Under the gate count the planner says the stop the route was planned at (Planned at «Closed on the map or by riders».) and what that stop cannot know. Passable gates are the router's call: a dirt-first route opens one when the gravel behind it is worth it.
-
A ferry port's own gate stays on the route. A gate the map marks closed or private within 1.5 km of the route's ferry is the port's (Barcelona's landing is
access=private): ferry traffic passes, so the online route keeps the crossing instead of a long way round by another ferry, and the gate stays listed: Port gate at 883.1 km — private: ferry traffic passes, counted as 1 ferry port gate, never in the red closed-gate warning. Navigation says it the same way (Port gate in 200 metres, private: ferry traffic passes.), without the alarm tone. A route planned on the phone without a connection keeps such a gate the same way, from the downloaded gate data. -
A closed gate is never passed silently. When no way around exists — a locked gate on a dead-end track, or one at your destination — the planner shows a red warning, Start asks you to confirm, and navigation says it again after the first instruction.
-
A closed gate your event permit opens (a permit with gates open, inside its zones) is crossed on purpose. The planner lists it in its own block, Opened by your event permit, with why it is closed, and its card says the permit opens it. It is never shown as "no alternative was found". Online and offline alike.
-
A closed gate at your start or destination (within 300 m) is kept — it may be your own gate, a cabin behind it. But the planner still looks for a way around: when one exists it says Gate-free route available: +0.6 km · +2 min with a Use it button that re-plans around the gate; when none exists, the warning says so. The same offer works offline.
-
A gate in doubt is one OpenStreetMap leaves unsettled: no access tag, or a condition that cannot be checked. It is counted (In doubt: 1), drawn and listed as in doubt, never as passable. At the first two stops the route crosses it. At the third stop the plan asks the routing server for one way round such gates (
avoid_doubtful_gatesonPOST /grass/routing/route,/grass/routing/optimized-routeand/grass/routing/circular, and on a dirt plan). The way round is taken only within your Max detour and when it keeps at least 95 % of the route's dirt; a loop must also keep its length and stay a loop. The planner then says what happened: Went round 1 gate in doubt (+2.9 km)., or 1 gate in doubt kept: the way round loses the dirt. (or no way round, longer than your Max detour, meets a closed gate, the loop would ride out and back…). A ferry's port gate is not tried round: it opens when the ferry runs, and going round it means another ferry (1 ferry port gate in doubt kept: ferries are not routed round.). A reroute while you ride never asks for the way round: it stays fast, and the gate stays listed. An offline route is planned at the third stop as at the rider stop, and the planner says once Offline: gates in doubt are listed, not avoided. -
Navigation announces gates. "Gate in 300 m. Close it behind you." A closed gate gets a distinct warning with the beep at 1 km and again at 250 m, and a red banner. Every other barrier is announced by its kind — "Winter closure barrier in 300 m", "Ferry barrier in 500 m", "Border crossing in 300 m" — with its symbol on the banner. On CarPlay and Android Auto the gate shows as a pill and on the map. A roadbook generated for the active route carries a Gate — close it behind you line (red with the reason when it is closed).
-
Dirt profile, after the route. A dirt-first route planned online shows as soon as it is computed. The check against your dirt profile, which picks among the routes and offers to force the dirt, follows in the background. On a long route it takes minutes: about a minute for 1,200 km. The planner says Checking the route against your dirt profile… and updates the route when the answer comes.
-
Dirt profile check time (Settings → Routing): how long the server may spend on that check: 3 min (default), 5 min or 10 min. Past it, the server stops the check and sends the route without it. The planner then says Your dirt profile was checked for 3 min, the time set in More → Routing, and stopped there. A route of a few hundred km fits in the default. Bergen → Munich needs the 10 minutes. The phone waits that time plus a minute for the route itself. If no answer comes by then, the route stays as shown, and the planner says so. The step is saved with your account, not with this phone: the desktop planner's Dirt profile check time is the same setting, so a change on either shows on the other the next time it opens. Offline, or on a server that does not keep it, the phone uses the step it has and says nothing; the change goes up the next time it can.
-
Max detour (Settings → Routing → Gates & detours): a dirt-first route may be at most 1.2×, 1.5× (default) or any multiple (No cap) of the plain route's length. Over it, the server steps down to a weaker preset. The planner then offers the full route — Moderate applied — the full Strong route is 1.9× the length of the plain route — with the extra km and time, and one tap re-plans it without the cap. That choice holds for the reroutes of the ride.
Routes computed offline on the phone are checked against the closed gates in the country pack (see Closed gates offline on the offline-data page): closed ones are routed around the same way, and the planner says Gates checked offline · OSM data of 14 Sep — amber when that data is old. The offline file holds only gates that can close, so an offline route lists no plain passable ones; one whose seasonal rule cannot be checked is listed as in doubt. Without gate data for the country (not downloaded yet) the planner says Gates not checked on an offline route rather than implying there are none. Selecting an alternative route shows Gates not checked for the same reason — only the main route is checked. Closures other riders confirmed (a locked gate, a landslide blocking the road) and the ones you reported are routed around offline as well — for every country you installed, the phone keeps a copy of all riders' reports there, refreshed once a day when you are online (plus what it syncs around you as you ride) — at the ladder's Closed on the map or by riders stop and above.
Reporting gates and hazards
You can tell the app what you found on the trail: a gate (locked, closed for the season, a "no motor vehicles" sign, open — close it behind you, open, or gone) or a hazard (fallen tree, landslide, rockfall, washout, bridge or track gone, deep mud, slippery, deep water, impassable ford, snow or ice, deep ruts, loose gravel, dead end, accident). You report what you see — a lock, a sign, a tree. There is no "is this legal?" question anywhere, and the app never says a trail is legal or not.
- While riding — the report button (the amber speech-bubble on the left edge of the turn-by-turn and ride screens; in landscape turn-by-turn, the last button under the turn card) opens Hazard and Gate. One more tap files the report at your position with a sensible severity and duration; nothing is typed and nothing else is asked. A toast confirms it, with Undo for a mis-tap. With Siri: "Epona hazard" (Siri asks which) or "Epona hazard fallen tree".
- Accident first asks "Do you need help?" — Yes starts the SOS countdown (your contacts get your position unless you stop it); No warns other riders.
- From the map — long-press a spot on the Navigate map and choose Report a hazard or gate: pick the kind and what it is, for hazards how bad and for now or it's like that, and who sees it. A report made from somewhere else is kept as a hint — it cannot confirm anything until riders on site do.
- Stopped near a report — when you stand still within about 80 m of a hazard or gate other riders reported, a card asks Still there · Gone · Skip. One tap; it never appears while you are moving. It shows how many riders reported it (1, 2–4, 5+) and the month — never who. Gone on a closed gate counts like "it's open": one rider saying so means riders disagree (nobody is detoured any more), two clear it. Each report is asked once a day: ride on without answering and it counts as Skip, so the next stop a few metres on does not ask again. A report you answered Gone is never asked about again from its older report.
A report that closes the road, ahead on your route. When a landslide, a fallen tree, a bridge gone, a locked gate or any other report that blocks the road lies on the route ahead — one other riders confirmed, or one a single rider has made so far (a disputed report never asks) — the navigation screen asks once, 2 km before it: Reroute to avoid or Keep my route, two wide buttons made for gloves. The voice says it too, once, and again at 500 m if you have not answered.
- Reroute to avoid asks for a route from where you are around that report, rejoining the route you planned a little past it, on the same vehicle and with the same options. The card first looks for the way around, and says how much longer it is ("a way around exists: 3.4 km longer") before you press anything. The gate rules do not change: the new route never goes through a private way or an in-doubt gate it would not have taken before, and never opens anything the map keeps closed. It also works without signal, on the phone's own routing data.
- When there is no way around the card shrinks to one slim line saying so, with nothing to press (the voice says it too, in two words) — it never sends you to a dead end. A route that would skip most of what is left of your ride is not a way around either: on a loop, "straight to the destination" is where you started, and the card says there is no way around instead of offering to end the ride. On a loop the way around may rejoin your route close to its end. Trail rides (a track you follow, such as an imported GPX or a recorded ride), roadbooks and a convoy follower are not rerouted either; the card says that too. A route you saved from the planner is a plan, not a track, however many points it carries, so it can be rerouted around a report.
- Keep my route is final for that report: no card, no banner and no voice for it until the ride ends. A report you asked to avoid and the new route still crosses (the only way) goes back to the ordinary warning, "closed gate in 400 m"-style.
- On the car screen (CarPlay and Android Auto) the question is asked by a native alert on the head unit with the same two answers, because the head unit cannot be touched on our own surface; while it is up a red pill stays on the map, with the hazard's own symbol and the distance in the same words the alert and the voice use ("2 km", never "2000 m"). On the phone the same card sits above every page of the companion, the joypad included.
The ground itself — surface and difficulty.
- Dirt starts / Dirt ends — the first option of the report button. Press it where the tarmac ends and again where it comes back; a DIRT badge sits on the button in between. Nothing is asked while you ride: the stretch waits on the phone. Rate this marks it for a difficulty question.
- After the ride — the ride's page shows Signals from this ride: each dirt
stretch asks what was it? (asphalt, broken tarmac, hard-packed, gravel, dirt, sand,
rock, grass, or "unpaved, not sure which") and, optionally, how hard, for your bike?
(0–5, the OpenStreetMap
dirtbike:scale) with your bike's class — taken from your garage bike when the app can tell — and the conditions. Nothing leaves the phone until you press Share; a stretch you don't want can be discarded. - Any road, no route needed — long-press a road on the Navigate map and choose Report this road: the app finds the road under your finger (a track you found exploring, a path you took off your route, a road ridden days ago) and asks what it is and how hard it was. The stretch is drawn on the map; by default it runs between the two nearest junctions — tap Set the end and long-press where it ends to report exactly the piece you mean, following the road. Rate this on the report button rates the ~1 km of road around you when no dirt stretch is open. The report button is on the Navigate map too, so you need neither a route nor a recorded ride. A dirt stretch you haven't reviewed can be answered and shared from its card in the Library.
- From the plan sheet — Report the surface under the route's "% unpaved" lists the route's stretches, those the map calls unpaved and those it calls paved, so "the map says asphalt, it's gravel" is one tap away.
- Your reports stay yours on a shared phone (from the app after 16 October 2026): each report belongs to the rider signed in when it was made. Another rider signing in on the same phone sees none of them, and a report still waiting to be sent is sent only once you sign in again, never under someone else's account. A report made signed out goes to the next rider who signs in.
- A difficulty rating is always kept per bike class and conditions — a "3" on a big adventure bike in the wet is not averaged with a "1" on an enduro in the dry.
- A surface correction changes what riders are told about the road (and, once shared, what other riders see). On a dirt-first route — planned online or offline on the phone — it also changes what the router looks for: a road you — or two riders — report as gravel costs what gravel costs, so dirt-first can choose it, and a "gravel" road riders call asphalt stops being sought. It does not force the route onto it: a stretch only wins where it really is the better dirt. Routes without dirt-first follow the map's surface.
- Dirt riders added to a road the map calls paved is pending while one rider reports it: other riders see it as one rider's report. It is verified by any one of three checks — a second rider who rode it, a moderator, or a moderator looking at aerial imagery (national orthophotos where we have them, Esri World Imagery elsewhere). Once verified, every rider sees it as confirmed, dirt-first routes can seek it, and it counts toward a dirt profile's km when routes are compared — shown apart as dirt added by riders; it says how it was checked, never by whom. Pending dirt never counts. A moderator can also reject it; your report stays yours. Rider-added dirt is never written into the map's dirt layer.
- How the app shows it — online and offline alike (the phone keeps how each way was
verified with the rest of its rider data):
- on the map, rider-added dirt is drawn in the unpaved tan, dashed while pending and solid once verified, with the surface badge in the middle of the stretch; the Library card and the signals list say "Dirt added by riders — verification pending" or "Dirt added by riders (verified by 2 riders / by a moderator / on aerial imagery)";
- the plan sheet's rider line says what its unpaved share includes: "includes 3.2 km of dirt added by riders (verified by a moderator)", and the dirt-first profile line says the same of its profile km. Pending dirt is listed under it — "0.8 km rider-added dirt — verification pending" — never inside a total. Your own report is listed as yours and counts for nobody, you included, until someone else checks it;
- after a ride, Signals you passed asks about a pending stretch you rode: "Riders added dirt here — was it?" Yes, dirt makes you the second rider — that verifies it (even before the answer is sent, offline); No, paved disputes it. You are never asked about dirt you added yourself.
- The phone decides "the map calls it paved" from its own offline map (the surface the offline routing tiles give the road). A road it has not looked at yet is shown as a plain rider report until it has.
Improve the map — answers for OpenStreetMap (from the app after 1 November 2026). The report button's last option, Improve the map, opens a panel for the questions OpenStreetMap asks about a road. What you answer here is yours and private: other riders never see it, and nothing goes to OpenStreetMap from this panel. You will review and send your answers yourself, under your own OpenStreetMap account, once sending is in the app.
- The question rail across the top: Surface · Who can ride it · Signs · Missing track, each with big answer tiles. After an answer the voice confirms it in your navigation language ("Gravel. Next: who can ride it."), after any direction it is speaking and never when the navigation voice is off, and the rail moves to the next question. Every answer can be undone from its toast for a few seconds.
- Map says sits under the rail: what the map has for the road under you (its surface and name), read from the phone's own offline routing data, so it works with no signal. Without offline routing data for the area it says it cannot tell. Where the map has no road under you, it offers Missing track.
- One tap covers the road ahead. A surface or a who can ride it answer is kept on every road you ride after it, until you give another answer of that kind, tap End, stop the ride recording, go 100 m with no road of the map under you, or after 3 hours. Say "gravel" once on a forest network and every track you ride gets it. If the app is closed while an answer is running, what you rode is saved the next time you open it.
- Who can ride it is OpenStreetMap's
smoothness, in rider words: any bike, road bikes slowly, big adventure bikes, dual-sport bikes, enduro bikes only, ATVs and tractors only, nothing gets through. It is not your difficulty rating: it says what can pass, not how hard it was for you. - Signs — 4×4 only, no motor vehicles, no motorcycles, no cars, no motorhomes, no ATVs, private — are saved where you are with the direction you are riding, because a sign applies to the road beyond it. Ride on a few metres before reporting one, so the direction is known. A sign is a fact you saw: no route avoids a road because of it.
- Above 15 km/h the tiles do not take a touch, and the panel says so. A handlebar remote that pairs with the phone as a Bluetooth keyboard still works (iPhone): left/right move between answers, up/down between questions, Enter answers, Escape closes the panel.
- Missing track records a track that is not on the map: Start recording, ride it, Stop. Back on a road of the map for 100 m, the app asks whether to stop. The first and last 50 m are cut, so the track never shows where you started or parked; each end is joined to the road it meets; the line is simplified to about 5 m. Then, stopped, say what it is: kind of way, surface (required), who can ride it, an estimated width (bike only, ATV, side-by-side, car or 4×4, van or camper, two lanes; kept to the half metre), a sign, and a note for the mapper. It is saved private, like the other answers, and listed in the Library.
Reports work with no signal: they are saved on the phone straight away and sent when the network comes back (or when you next open the app). Offline, reports keep time the way they do online: a temporary hazard ends on its date (a fallen tree after a day), a closure other riders confirmed stops detouring you when its confirmation runs out — it still warns until it is out of date — and your answer to still there? ("open", "gone") counts on your routes straight away, before it is sent. They live in the Library under the Signal chip — on the map and in the list, searchable by what you reported — where you can withdraw one or retry one that could not be sent. The first time you report, a short note explains who sees it: other Epona riders, as a count and a month, by default; Keep mine private keeps new reports to yourself (changeable later on any report's card). Reports you make on the desktop (EpicRide) show up here too, as your own — withdraw one on the phone and it is withdrawn everywhere; withdraw it on the desktop and it leaves the phone. On the map every report is its own symbol — a padlock, a seasonal closure, a fallen tree, a landslide, deep water, a dead end and so on — gates in a rounded square, hazards in a circle, coloured by what they mean for getting through (red blocks, orange major, amber minor, blue for information). The ring says how far to trust it: solid white when riders confirmed it, dashed when one rider reported it, grey with a "?" when riders disagree, green when it is yours. A surface or difficulty report keeps its line, with its symbol in the middle. The same symbol is on the report's card, in the Library, in the plan sheet's rider-report lines, on the route's gate badge and on the car screen, and the symbols draw offline too. Show or hide the layer of reports on the map under Settings → Map → Overlays → Rider reports. Nothing is sent to OpenStreetMap. Everything riders report is exactly that — reported by riders, may be out of date.
Sending a report to the TET linesman
The Trans Euro Trail has a linesman for each country, and that is where TET asks riders to report a problem on the trail. When one of your own reports lies within 50 m of a TET track you imported (see Your own trails below), its card on the map and in the Library offers Send to the TET linesman (country). It opens a sheet with:
- the report and the TET section it lies on (the sub-trail's name, e.g. I-03 · Toscana);
- your captures from that day within 50 m — notes, photos, videos, voice notes — as a list you tick. Notes become the description; photos are attached;
- Also put it on my public TET page (off unless you turn it on): a map page of the TET reports you choose, linked from the email. Videos and voice notes are never attached — they are linked from that page. Anyone with the link can open it for 30 days; it shows no name and only the day each report was seen. Stop sharing my page kills the link at once, also in emails you already sent; withdrawing a report takes it off the page.
Then Find the linesman on the TET page: TET's own country page opens inside the app; tap the linesman's Email link there and your mail app's composer opens addressed to them, with the report attached as a GeoJSON file (position, what, severity, the day, the section) and your photos. Open the email without an address does the same without the address. You send it — and you can change every word first. The app never stores or looks up a linesman's address, and nothing leaves the phone until you press Send (or turn the page on). On a phone with no Mail account (a Gmail-only phone, say) the share sheet opens instead with the GeoJSON and the text, and the photos go separately.
Waypoint injection
While turn-by-turn navigation is active, open a curvy-road detail card and tap Add as a stop or Add to route — the waypoint is smart-inserted at the lowest-detour position in the current route and navigation restarts automatically on the updated route.
The navigation screen's buttons
In portrait the turn-by-turn screen has two columns of round buttons under the turn card, five rows each, all the same size and lined up row by row, and a row along the bottom:
| Where | Buttons, top to bottom (or left to right) |
|---|---|
| left column | + · − · 2D/3D · push-to-talk · report (a hazard, a gate or a surface) |
| right column | the speed-limit sign · SOS (hold 1.5 s to start the countdown; Settings → Safety → Show the SOS button hides the button alone, crash alerting stays on) · the waypoint pin · capture (photo, video, audio open to its left) · audio (the voice symbol) |
| bottom row | Stop · Minimise · vehicle (motorcycle ⇄ car) · services (fuel and the rest) · follow |
The audio button opens voice on/off and repeat the last instruction to its left; they stay open 10 s after your last tap, and the button turns green while the voice is on.
In landscape the turn card and its banners take the side away from the camera (42 % of the screen) and the buttons keep portrait's groups, turned sideways, every one the same glove size:
| Where | Buttons, top to bottom (or left to right) |
|---|---|
| camera side, a column | the speed-limit sign · SOS (hold 1.5 s) · + · − · 2D/3D · push-to-talk (in a call, hang up takes its place) |
| along the map's bottom | Stop · Minimise · vehicle · services · follow |
| under the turn card | the waypoint pin · capture · audio · report |
Capture's and audio's choices open upward, over the cards; the report choices open as a grid toward the side with room. The cards always stop above the buttons under them: when banners pile up (a speed camera, a hazard ahead, a weather warning…) and there is no room left, the turn card folds to its slim strip (arrow and distance) until they clear, and opens again by itself.
Hide buttons from the map (Settings → Navigation, off by default) clears the map while you ride: every button goes after a while, and a tap on the map brings them back. Buttons stay visible for sets how long, 10 to 180 s (30 s by default); touching any button restarts the clock. The turn card, the speed-limit sign and the hazard cards are not buttons and stay.
Waypoints while riding: one-tap save and the proximity alarm
Save a waypoint in one tap. The green pin on the navigation screen saves where you are, right now: in portrait it is the right column's third button (under SOS), in landscape it is the first button under the turn card, before the capture button. The point goes to your Library as a waypoint named with the time ("Waypoint 14:32"), and, while a ride is being recorded or navigated, into that ride's captures too. A toast says "Waypoint 14:32 salvato". It works with no route, off the route, offline (the point is on the phone at once and goes to your account when there is a connection, never twice), and while recording. The same save is on the car companion's joypad (the pin in the pad's top-left corner), on the companion's Captures page (Waypoint), and through Siri ("Mark waypoint"; a note you dictate becomes the waypoint's description).
The waypoint alarm. When you come near a waypoint, the phone plays a short ping of its own (not the camera beep, not the speed chime), then the voice says it ("Waypoint Fontana tra 300 m"; "Waypoint tra 300 m" when it has no name), and a banner shows the same line. Each waypoint sounds once per ride. Which points:
| Riding | Watched |
|---|---|
| a GPX track | the file's own waypoints (also when you ride one track of a file with several), and your Library's waypoints and bookmarks within 200 m of the route |
| any other route | your Library's waypoints and bookmarks within 200 m of the route |
| no route, just riding | your Library's waypoints and bookmarks near you, whatever the direction; one you already heard sounds again only after you have been 2 km away from it |
Set the distance in Settings → Safety alerts → Waypoint alarm: Off, 100, 200, 300 m (the default), 500 m or 1 km. The distance is a straight line from where you are, so the alarm also sounds off the route. A point you are already near when the ride starts (a bookmark at home) stays silent. With the voice muted the ping and the banner still come. Photos, notes and map POIs are not watched.
Services ahead while navigating
The fuel-pump button in the HUD's bottom bar opens the same results list in route context (over the turn card, so it can always be dragged down; in landscape on the turn card's side, leaving the map and its buttons in view): one pill per configured service (Gas / Camping / Beach by default — change the set and the order under Settings → Routing → Service buttons, up to six of the map's POI categories) searches along the route ahead of you, rows are ordered by distance ahead with the detour in the badge ("12 km · +800 m"), and Add as stop inserts the place into the live route and restarts guidance. It looks up to 5 km either side of the route, all the way to the end. Online, the search is one corridor query over the whole remaining route on the server: true distance along the road, true detour, and a warning line when the longest stretch without that service is 20 km or more ("Longest stretch without one: 42 km, from km 12"). Offline, or if the server cannot answer, the app falls back to sampling the route with its downloaded POI packs. The CarPlay Services page uses the same search and the same detour wording.
Per-stop ETA on multi-stop routes
On a route with via-points, the HUD's cycling metric slots include three stop-aware metrics alongside the whole-trip ones: NEXT STOP (distance to the next intermediate stop), STOP ETA (projected arrival clock at that stop), and STOP (a "2/4"-style counter). The final-destination ETA is unchanged — partials are computed from the same per-maneuver time weighting, so the last stop's numbers always match the trip totals. On CarPlay / Android Auto the car's own estimate still means the final destination (on a round trip's way out, the turnaround: see Arriving); a Stops map button (visible only during multi-stop navigation) opens a dedicated list page with each stop's remaining distance and arrival time.
These metrics deliberately go blank (—) when "next stop" would be a lie: single-leg routes, out-and-back tracks whose turnaround is not a stop, and imported-GPX / TET trail rides whose internal legs are stitching chunks rather than places you stop.
How the ETA is estimated — and adapted to your pace
The planned time comes from the routing engine, road by road. Where OpenStreetMap has a posted speed limit, that limit is the speed. Where it has none, the engine uses a typical speed for that kind of road. Stops are never included. Unpaved ground is the weak spot: the engine plans an untagged track at walking pace (2–7 km/h), and with dirt-first on it planned every unpaved kilometre at a flat 30 km/h. So the server times unpaved ground on every route it plans — A → B, with or without dirt-first, and followed tracks — with one table per vehicle (minimum km/h for gravel and compacted / dirt / path):
| Vehicle | Gravel, compacted | Dirt | Path |
|---|---|---|---|
| Sport | 15 | 8 | 5 |
| Touring | 20 | 12 | 6 |
| Adventure (the motorcycle default) | 25 | 18 | 10 |
| Enduro | 30 | 25 | 15 |
| Car (the car default) | 12 gravel, 15 compacted | 6 | — |
| 4x4 | 25 | 15 | — |
These are first estimates, to be corrected from rides. A posted speed limit and your top speed are never exceeded, a stretch the engine already plans faster keeps its speed, ground with no surface information counts as dirt, and bicycle and walking times are left as the engine plans them. Only the time changes: the route and its turns are exactly the ones the engine chose.
Ferries are timed by their sailings. The server works out when you reach each ferry (your departure plus the time to get there, and the waits of earlier ferries), finds the first sailing you can still catch, and counts the wait for it plus that sailing's own crossing time. "Can still catch" leaves you time to board: 5 minutes for a local car ferry, 15 for a national ferry or a fast vehicle boat, an hour for an international ship, or the operator's own check-in time where it publishes one (45 minutes for Brittany Ferries and Newhaven – Dieppe, 30 for Tallink Silja and Viking Line, an hour and a half for Tallink from Åland). The timetables come from the national open feeds, fetched once a day for the next two weeks: Norway's from Entur (which includes Fjord Line's Bergen, Stavanger and Kristiansand ships to Hirtshals); Sweden's road ferries from Trafikverket; France's open data for Brittany Ferries' Portsmouth – Caen, Corsica Linea's Marseille – Bastia, Île-Rousse and Propriano ships and Newhaven – Dieppe; Finland's for Tallink Silja's and Viking Line's Baltic ships (Helsinki – Tallinn, Turku and Åland – Stockholm); Ireland's National Transport Authority for the domestic ferries such as Killimer – Tarbert; Germany's DELFI, read once a week, for the island, river and lake ferries such as Norddeich – Norderney; Denmark's and the rest of Sweden's once their feeds are switched on. Viking Line's Birka Gotland takes no vehicles and is never offered; Helsinki – Stockholm, Helsinki – Mariehamn and Stockholm – Tallinn are timed from the map, because the map's ferry route uses a terminal those ships do not. Corsica Ferries' published timetable has no sailing after 11 October 2026, Brittany Ferries' other lines list sailings the company does not run, and Marseille – Ajaccio is shared with La Méridionale, whose ships are in no open feed, so those crossings are timed from the map for now. A ferry no timetable covers is timed as before, from the map: its crossing time plus 5 minutes of boarding. Where OpenStreetMap gives only a frequency ("every 30 minutes"), the wait is an estimate of half of it, or until the first crossing when the ferry is closed. Color Line, Stena, Grimaldi and DFDS's Dover crossings publish no open timetable, so their crossings are timed from the map. Every route the app asks for carries its departure: the planner's Departure (a row under the stops: Now, or a day and time from the phone's own date picker; the weather card's +1h…+12h chips set the same departure), else now; a round trip's way back leaves when the way out arrives; a reroute while you ride leaves now. See Ferries: the sailing, the wait and the choice below for what the planner and navigation show. The row comes from your garage: each bike has a Type for travel times in the garage editor (Sport, Touring, Adventure or Enduro; a car is Car or 4x4), and the app sends your default bike's row with every route it asks the server for — A → B, reroutes and followed tracks. A bike that never had one set is timed as its kind's default; a car route planned by a motorcycle rider is timed as Car. The ⓘ sheet names the row the route was actually timed with. Routes planned on the phone without a connection keep the engine's own times. A followed track keeps the times it was built with until it is built again; the pre-built TET trails are timed as Adventure. Follow-the-line stretches that could not be matched to roads use 35 km/h for motorcycles.
While you ride, the ETA learns your real pace. Every 4 km it compares your moving time with the planned time for the same stretch. Traffic lights, photo stops and a coffee break don't count. It keeps two separate estimates: one for slow stretches (tracks, gravel, anything planned under the pace split) and one for roads. The split is 35 km/h unless you change it in Settings → Routing → ETA — advanced → Pace split (30–50 km/h); changing it forgets the remembered pace, since a pace learned against one split does not hold for another. Fast tarmac riding therefore never shortens the trail estimate, and a slow gravel section never inflates the road estimate. The remaining time, the arrival clock, the next-stop ETA, and the CarPlay / Android Auto estimates all use it. A small your pace caption appears under the time metrics once your pace differs from the plan by 5 % or more. Before the first 4 km, and whenever you ride exactly to plan, the ETA is the planned one.
What you learn in a ride is kept across reroutes and direction switches. When navigation stops, the app remembers your pace per vehicle (from about 20 km of navigated riding on, weighing recent rides more). The next ride then starts from it, halfway between your usual pace and the plan, captioned your usual pace until the first 4 km of that ride take over. Before a ride, the route strip shows a second figure next to the planned time, e.g. 7:45 h · ≈ 5:10 h at your pace: the same number the HUD shows at the start line. The plan sheet's summary is one short line, time · distance · unpaved share (89:45 h · 2620.9 km · 34% unpaved), never cut; tap it, or its arrow, for every figure in full: total time, at your pace, distance, the unpaved share with its kilometres, and the kinds of road the route rides, one row each. Each stop row has the stop's name on one line and its leg's distance and time on the next.
Tap the ⓘ next to a planned route's total time, or the your pace caption in the HUD, for a short in-app explanation of how the ETA is estimated and what the app remembers about your pace. Settings → Navigation → Adapt ETA to my pace turns all of this off (planned estimate only, nothing remembered). Forget my pace, just below it, clears the remembered pace.
Ferries: the sailing, the wait and the choice
A route with a ferry gets a Ferries row in the planner, under the gates: how many crossings and how long you wait at the quays, then one line per crossing named by its quays (Tørvikbygd ferjekai – Jondal ferjekai): next 14:50 · wait 38 min · lands 15:10 and, on a line of its own, then 15:50, 16:50, 17:50 (a sailing on another day carries its weekday); every 30 min · about 15 min wait where the map gives only a frequency; or no timetable: crossing time from the map. The operator and the timetable's credit (Timetable © Entur (NLOD)) follow. If you change the Departure after planning, or the sailing has left, the row says The ferries are timed for leaving 09:00 and Time them for this departure plans again. A route planned on the phone without a connection has no timetable and no row.
When the server took a way round to avoid a long wait, the row says so once: Not waiting 1:05 h for Kinsarvik ferjekai – Utne ferjekai: the way round arrives 2:18 h sooner, 19 km longer. When it kept the route but a way round on a ferry with no timetable might arrive sooner, a quieter line names that ferry: A way round by Hirtshals - Larvik might arrive 1:21 h sooner; that ferry has no timetable (you may know its sailings). Neither line is spoken or shown on the car. The words are the desktop briefing's.
While you ride, the ferry is said with its sailing: Take the ferry at 14:50 (Prendi il traghetto delle 14:50), in every reminder and on the repeat button, and the turn before the quay says it too (Turn left onto Tørvikbygdvegen, then take the ferry at 14:50). The sailing said is the first you can still catch when you reach the quay at your speed, with the same boarding margin the planner used, so if you are running late you hear the next one; if none of the known sailings is still catchable, the engine's own line is said. The HUD shows the same words in place of the ferry's name, and CarPlay / Android Auto show them on the maneuver card. The HUD's time and the per-stop times include the wait, because the ferry's own time is the wait plus the crossing; with Adapt the ETA to my pace on, your pace changes the roads' times, never the wait or the crossing, and the time on the ferry is not learned as riding.
Speed alerts and speed cameras
Your two speed thresholds. Settings → Safety alerts has two thresholds. Each has its own Colour, Chime and Voice switches.
| Threshold | Default | What happens |
|---|---|---|
| Over the speed limit by a margin | +10 % (+20 % where the road only has the country's legal default limit). Set 0–30 % or, with Margin in km/h, 0–30 km/h. | The speed tile turns amber, the speed-limit sign pulses, one chime. Voice off by default ("Oltre il limite di velocità"). |
| Above a speed, whatever the limit | 130 km/h (0 turns it off) | The speed tile turns red, a chime, and the voice says your speed once ("Velocità 133"). |
A threshold sounds once when you cross it. It sounds again only after you have slowed down: 3 km/h under the limit threshold, 5 km/h under the speed threshold. The limit threshold also waits at least 20 s between chimes. The chime is two rising tones, so it never sounds like the camera beep. The colours show on the phone, on the console companion, and on the car screen. The car pairs the two readings in one small cluster in the bottom-right corner, the way Google Maps does: the posted limit in its round sign, your own speed beside it. The sign turns red when you are over the limit, and your speed turns amber over the limit threshold and red over the speed threshold. That number is the only colour a de-restricted road can give you on the car, where there is no limit to be over. The speed threshold also works off the route. The limit threshold needs the route's posted limit, so it is quiet while you are off the line.
Speed cameras: where warnings are not allowed. The phone warns of fixed speed cameras on the route (a beep, a banner and the voice; set the distance in Settings → Safety alerts). In some countries the law forbids a device that warns of speed checks while you drive. When your GPS position enters one of them, the phone changes the warnings by itself, offline, at the border, and says so once ("Avvisi autovelox spenti: non consentiti in Germania"):
| Country | What the phone does | The law (read 2026-10-11) |
|---|---|---|
| Germany | no camera warnings | StVO §23 (1c) |
| Switzerland | no camera warnings | SVG Art. 98a |
| France | dangerous sections only: "Tratto pericoloso tra 300 m", with no camera on the map and no camera limit on the sign | Code de la route R413-15 (décret 2012-3) |
| Cyprus, North Macedonia, Turkey, Liechtenstein | no camera warnings | as stated by navigation vendors; we have not read these laws ourselves |
"No camera warnings" means: no beep, banner, voice or car-screen pill, the cameras are not drawn on the map, and a camera's limit is not put on the sign. Your speed thresholds and the posted speed limit are not camera warnings and stay on everywhere. The list comes from the server with the offline pack updates, and the app carries a copy for the first ride.
You can turn the warnings back on in those countries: Settings → Safety alerts → Speed cameras by country → Warn where it is not allowed. It takes two steps. The switch asks first: it names the countries and says that using the warnings there is your responsibility. The choice is stored on this phone only, never in your account, a profile or a backup. Turning it off is one tap. In France you can also replace the danger-zone sentence with your own words.
Legal notice. Epona is a riding aid, not legal advice. Camera-warning laws change and differ by country; the table above is our reading on the date shown, and it may be incomplete. You are responsible for obeying the law of the country you ride in, and for the warnings you choose to turn on.
Off-route handling
While turn-by-turn is running, the app continuously projects your GPS position onto the active route polyline. If you stray further than the off-route threshold for several consecutive GPS ticks, one of two things happens. The defaults, before a margin for the GPS fix's own accuracy is added: in Adventure mode 75 m / 3 ticks for motor, 30 m / 3 ticks for bicycle and 38 m / 5 ticks for walking; in Google Maps mode 40 m / 1 tick, 24 m for bicycle. On a bicycle the app also counts a tick from halfway out when you are moving and clearly heading away from the route, so a wrong fork is caught within seconds instead of after the gap has opened up at cycling speed.
- Motorcycle, car, bicycle — the route is recalculated automatically from your current position to the destination. You hear "Off route. Recalculating." and the new route line replaces the old one on the map. No tap needed; your hands stay on the bars/wheel.
- Walking — the app surfaces a Tap to recalculate prompt instead. Pedestrians can safely stop and confirm, and the prompt also avoids triggering an expensive reroute every time you legitimately cut across a plaza.
Guidance never stops. A recalculation that fails (no signal, a server error, a timeout) says "Recalculation failed, continue riding", leaves the Off route banner up with its Recalculate button, and retries on its own 45 s later — and again every 45 s while you stay off the line. The same holds for a track (GPX / TET) ride, where the recovery rebuilds only the approach back onto the trail. Coming back onto the line clears everything within a few fixes, however long you were away. Stopping navigation during a slow recalculation stops it for good: the late answer is discarded, no new ride opens. Rerouting never resets the elapsed and traveled tiles — they count for the whole ride; hold either tile to reset both.
Killed mid-ride? The active route and your progress are saved as you ride. On the next launch the app asks Resume navigation? — Resume puts you back on the route at your last position with the clock still running; Discard forgets it. A saved ride older than twelve hours is dropped.
You can tune the sensitivity in Settings → Safety alerts → Off-route detection:
- Off-route threshold (50–400 m, default 75) — the motor-vehicle baseline. Bicycle uses ×0.4 of this, walking ×0.5.
- Off-route strikes (2–8, default 3) — consecutive bad fixes before triggering. Bicycle uses the baseline, walking ×1.5.
The line back to the route. While you are off the route, a dashed magenta line runs from you to the nearest point of the route, and the Off route banner says how far ("a 240 m dal percorso"). It goes away a few fixes after you are back on the line. Switch it off in Settings → Routing → Line back to the route (on by default).
The per-vehicle multipliers are not user-editable. Slower vehicles get a narrower threshold because a deviation opens up slowly at their speed; walking keeps a longer strike window so cutting across a plaza doesn't false-alarm.
Arriving
When you reach the destination (within 50 m, on the last instruction), the app asks whether to end navigation — You have arrived · End turn-by-turn navigation? — rather than leaving guidance running or ending it behind your back. On the phone it is the stop dialog, so a ride's capture session is closed the same way as when you stop by hand; with CarPlay connected the car screen asks too, and answering on either side clears the other. Continue navigating is an answer, not a snooze: you are not asked again for the same destination.
At a round trip's turnaround the app asks too: Turnaround · Middalen — Way back 234 km · at My location about 19:36, with Start the way back and End here, and the voice says it once. The question stays on screen until you answer it, while guidance carries on underneath. With CarPlay connected the car asks the same question, and answering on either side clears the other. On the way out the car's arrival estimate counts to the turnaround; after it, to the start. The car map draws the way back purple. You have arrived comes only back at the start.
Your own trails — the imported-tracks library
Any GPX you bring — from a trail publisher's download page, a forum, a friend on WhatsApp — lands in Imported tracks (Library → Import Track → From file, or share a .gpx to the app). The file stays on your phone: it is never uploaded, and a share of a track you imported from someone else's dataset withholds its route. On Android, tap the file where it is — the Files app, a mail attachment — and pick Epona: the app is offered for a GPX whatever the sending app calls it, and a file whose name has no .gpx (a mail attachment often has none) is recognised from its content. Another kind of file opened this way is not imported, and the app says so; KML, KMZ, GeoJSON and FIT go through the Library's own import.
Trans Euro Trail. Library → Import Track → From the Trans Euro Trail lists the 36 countries and opens the one you pick on transeurotrail.org inside the app, where you read their terms and safety notice and tap their Download GPX Track link. That tap is the only thing the app intercepts: it pulls the file from their server to your phone, shows the progress banner, and the file lands in Imported tracks as TET · Norway with each sub-trail as its own track, named the way the trail is (N-01 · Blåhø-Støa), whatever the file was called. No Safari, no Files app. The app acts as a browser: the file goes from their site to your phone on your tap, never through our servers, and we hold no copy. A button in the page's header opens the same page in your browser if you prefer.
The library is a two-level tree, and each level appears only when it helps:
- A file with several
<trk>tracks (a trail country file with its sub-trails, a multi-day itinerary) shows as a file row with its tracks under it. Each track is what you select, ride, roadbook and style — nobody rides fifteen legs at once, so the file row itself has no Ride. A file with a single track is just one entry, no folder. Files start open while the library is small and collapse once there are more than a few. - Country headers group the files once the library is big enough to need them (four or more entries in more than one country), from public-domain outlines of every European country, whether or not it has an offline pack. A Trans Euro Trail file is filed under the country its own track names carry. Any other file is filed by where its tracks actually run, not by the centre of the box around them (a country as long and bent as Norway has its box centre next door); the map is read in one-degree tiles, and a tile that straddles a border counts for both of its countries rather than against either, so an Alpine trail that never leaves Italy stays under Italy. A track that never leaves such shared tiles sits under both names, and a track outside every mapped country under Elsewhere. Tap a country header to fold that country away and tap it again to bring it back; the header keeps the count of tracks and kilometres while folded, and picking a track on the map unfolds its country. A trail that genuinely runs through two or more countries (its main country holds less than four fifths of it) sits under Across borders instead; a short hop over a border keeps a trail at home. A small library, or one all in one country, stays a flat list.
- Inside a country, three groups once there is more than one kind of thing: TET for the files recognised as Trans Euro Trail downloads, Trails for every other route or line, and Waypoints for the files that carry
<wpt>points. Each group folds like the country. Open a file under Waypoints to list its points (name, type, altitude): tap one to fly the map to it, tap the bookmark icon to keep it in your bookmarks. Waypoints are kept from the import onwards, so a file brought in before this shows none until it is imported again. - Imported tracks on the library map. The Library map's filter row has an Imported chip with the count of imported tracks in view; they paint and list next to your routes and bookmarks, with the same card (ride, roadbook, style, inject into the plan). Performances and GPX export are for server records only, and Delete on an imported track takes you to the imported-tracks screen, where the file is the unit of deletion.
- "% unpaved" on every line, without a button. Every line in the Library — a recorded ride, a planned route you saved, an imported GPX, a trail — carries its surface share on its card: 42 % unpaved · 18 km gravel · 4 km dirt · 3 km unknown, and the share as a small figure at the right of the row. It is the same number the plan sheet shows for a route: metres on gravel, compacted roads, dirt and paths over the metres with a known surface; ground the map knows nothing about is listed apart as unknown and never counted as paved. The server measures your lines by itself in the background (a new line has its share within a few minutes), so nothing needs tapping; a line the map cannot match — a track across open ground, a ride along a river — says not matched to the road network, and one the server has not reached yet says not yet measured. Full stats on a server line's card measures it again. A GPX kept only on the phone gets its share from its own line through the same surface trace the planner uses (after its turn-by-turn is built, or from Full stats on its card); the file itself is still never uploaded. The filter sheet gets a Mostly unpaved chip (50 % or more) and an Order row with Most unpaved first; both work offline, on the phone's own copy of the library.
- Point styles, like line styles. A waypoint (the dot at the start of its row) or a saved place (Style in the saved-places sheet, or the style action on its card on the library map) gets its own colour, size and icon, from the same palette the lines use and an icon library of the markers the map can draw (fuel, food, camping, water, viewpoint, pass, hazard and more). The icon shows in the list and on the map; a hidden point stays in the list but leaves the map. Styles survive re-imports and a waypoint keeps its look when you save it as a bookmark.
- While a file imports, a banner at the top of whatever screen you are on shows the file name, the phase (reading, reading the tracks, preparing, saving) and a percentage; tap it to fold it into a small ring in the corner, tap the ring to unfold it. A country file with a dozen tracks takes a few seconds and the app stays usable meanwhile.
- A dirt passage you keep (Save to library on a dirt passage's card, or on a gap group's card for the whole joined chain) lands in the Library as its own kind, with a dirt passage chip, its own colour on the map and its card's facts — the % unpaved, the gates, the grade, the climb, the warnings as they stood — kept with the date of the map data they came from. It lists, exports, shares and makes a roadbook like any other line. Saved out of signal, it is on the phone at once and goes to your account when there is a connection, never twice; the card itself says In the library once the passage is yours and opens the record. See Adventure basemap → Keep a passage.
- Rename any file or track from its card; a file's new name also becomes the prefix its tracks get when saved to the Library.
- Removing a file removes its tracks and any turn-by-turn built for them; the confirmation says how many. Files imported before the tree existed are split into their tracks the first time the list loads, from what the phone already stores — a file that cannot be split safely stays a single entry.
Riding a track in either direction
An imported GPX, a TET sub-trail or a Library line is a recorded path, not a route: ridden the other way, its drawing goes round roundabouts the wrong way and against one-way streets and divided carriageways. The app therefore keeps one built trip per direction, each a legal, turn-by-turn route:
- Built at import. Enhancing a track builds both directions in one request to
POST /grass/routing/track-direction: the original points are map-matched into continuous legal pieces, every gap (a roundabout half, a one-way, the wrong carriageway) is bridged with a legal route trimmed back and forward along the pieces, and the assembled line is validated by a second legal map-match. Stretches with no road underneath (a hiking trail, a field) stay follow-the-line and are flagged as such. A stretch the matcher cannot follow costs only that stretch, not the kilometres around it; a gap is matched again on its own points, so a road between two closed paths keeps its turns; and where the legal way across a gap would lead you along another road beside a line that has no road under it (a closed track, an unmapped path), the line stays follow-the-line instead of sending you somewhere else. Where the second map-match cannot confirm the line, only the instructions around that spot become follow-the-line; the rest of the track keeps its turns, however long it is. Tracks imported before this get their reversed trip built quietly the next time they are opened online, and so do tracks whose trips an earlier build could not confirm (every track over 200 km, between 14 September and the fix). - Private ways and closed gates stay follow-the-line. OpenStreetMap closes some ways to motor vehicles (
motor_vehicle=no, footpaths, tracks closed by a country's rules) and marks others private. The router never gives turn-by-turn on the first kind. Until now the map-match quietly gave turn-by-turn through private ways and through gates that are locked or private. It no longer does. Such a stretch becomes follow-the-line, flagged private or gate, unless it starts at the track's first point or ends at its last: that is usually your own drive or yard, and it keeps its turns. - The rider's access level (server). The server can also build a track at a rider's access level, at the rider's own risk. a keeps every ban; this is the default and what the app uses today. b gives turn-by-turn through ways closed to motor vehicles, but never through private ways or closed gates. c gives turn-by-turn through those too. Every stretch built through a lifted ban is listed on the trip, with the OpenStreetMap tag that closes it, so the app can warn before you reach it. The setting itself, with its warning, comes to the phone in a later update. Route planning never lifts a ban.
- Open either way. The direction picker (native, reversed, join here forward/backward) rides the matching built trip; a mid-track join slices it at your position instead of re-matching, so it works offline and starts instantly. Opening a track reversed with no built trip yet builds it on the spot when online; offline it rides the reversed drawing follow-the-line and tells you once to follow the road signs at roundabouts.
- Riding it backwards anyway. If you set off against the loaded direction (on the line, moving, course opposite to the track for about 8 s or 100 m), the app switches to the other direction's trip at your position, says "Riding the track in reverse now", and never reroutes for it. A short track (≤ 5 km) still opens as drawn, but the switch works during the ride.
- What you see. Chevrons along the track line show the ridden direction; where the legal line leaves the drawing by more than 30 m (a roundabout the other way round, a bridge across a stretch that cannot be ridden that way) the original drawing shows as a faint dashed ghost underneath, on the phone and on the car screen. Bridges report how much longer they are than the drawing; a built trip is never longer than the drawing by more than a few percent.
- Off-track on any track rejoins the track ahead of you in the ridden direction — including Library lines recorded or drawn on the desktop, which used to be replanned to their end.
- Realistic times on unpaved tracks. The router's own speed for an untagged track is 5–7 km/h, which made an imported trail with a lot of track look two or three times longer than it rides (a 169 km Italian sub-trail: 14 h 18 min). Trips built by the server therefore time unpaved ground with the vehicle table above (Adventure for a motorcycle: gravel and compacted roads at no less than 25 km/h, dirt 18, paths 10). A posted speed limit is never exceeded (a gravel road signed 20 stays 20), and the route and its turns are unchanged; only the time is. With the earlier 20 / 15 / 10 table the same trail planned at about 6 h 40 min. Trips the phone builds itself (offline) use the same table. While riding, the ETA then adapts to your own pace.
Verbal voice cues by vehicle
TTS announcements ride on top of Valhalla's verbal_pre_* / verbal_transition_alert_* strings when populated. For costings that emit empty strings (notably bicycle, which can leave all verbal fields plus the visible instruction empty), the app synthesizes a fallback line from the maneuver type and street name — e.g. "Turn left onto Bergstien" — so the rider isn't dropped into silence even when the routing service skips the prose.
Rally roadbook navigation (geometry-only)
Any track's roadbook (a saved ride, an imported GPX, a TET trail, a library record) has a Road ⇄ Rally toggle. In Rally mode a Ride button starts a navigation session driven by the track's shape alone — no map-matching, no routing tiles, no server. Each clustered bend becomes a maneuver classified by its total turn angle (kink 10–30°, mild 30–60°, sharp 60–90°, elbow 90–135°, hairpin >135°; two tight opposite bends link into an S-bend), and the normal turn-by-turn engine advances through them as you cover ground along the track.
The HUD swaps the road arrow for a tulip-style shape glyph (coloured by direction) and adds: the distance to the next note, the CAP — compass heading to hold out of the bend, e.g. CAP 135° SE — and a danger chip (! / !! / !!!) from radius, blindness and downhill grade. Spoken cues are rally calls ("hairpin left, 160", "S-bends") in your navigation voice language.
Generating a roadbook runs on the server as a job: the app asks for one and polls it, so a long track cannot time out mid-generation, and a book generated once for a given track and options is served again at once for thirty days — whoever asks. Desktop and CarPlay callers get the same book synchronously.
A library record's roadbook is made from its full stored line, not from the lighter line the Library map lists it with: every bend, junction and gate the record holds reaches the notes, and the Rally Ride follows that same line. An imported track's card opens the same book as the imported-tracks screen (made from its snapped line and kept with the track, so it reopens without the network). A record the phone cannot read right now (offline, never opened) says so and opens nothing.
A roadbook ride never replans: leaving the line shows the calm following your track hint with a one-time spoken cue, and guidance resumes when you rejoin — within a few fixes, however long the excursion. Mid-ride vehicle switches keep the track. The HUD writes the same localised call under the glyph; Settings → Navigation → Roadbook: show the spoken call turns that off for a glyph-and-CAP-only card on small screens. An advisory corner-speed / gear hint (v = √(μ·g·r)) exists but is off by default — enable it under Settings → Navigation → Roadbook speed hints and set the grip coefficient μ to your surface.
Reset to defaults
Tap ↺ Reset to defaults at the bottom of the planner to restore all routing options to their factory settings (vehicle, avoid flags, all moto sliders). Locations and waypoints are preserved; the computed route is cleared.
Circular route planner
The circular route planner generates a loop that starts and ends at the same point. Open it from the Navigate tab via Routing → Circular route.
Start point
Tap the Start point row to toggle between two sources:
| Icon | Source | Notes |
|---|---|---|
| 🛰 GPS position | Device GPS | Requires a GPS fix. Greyed out with "No GPS signal" when unavailable. |
| 🗺 Map center | Current map centre | Always available. Pan the map before tapping Generate (or Recompute in the preview panel) to start from any point in the world. |
Ride profile (motorcycle only)
The ride profile translates directly into Valhalla costing weights sent to the routing engine — every weight in this table is verified against the engine with A/B route measurements. Highways and Hills are 0–1 preferences (higher = prefer more strongly); Surfaces is how strongly rough ground (gravel, dirt, tracks) is penalised.
| Profile | Highways | Hills | Surfaces | Character |
|---|---|---|---|---|
| Balanced | 0.35 | 0.50 | strict tarmac | Comfortable all-round motorcycle route |
| Curvy | 0.20 | 0.80 | strict tarmac | Maximises curves and elevation change, avoids fast roads |
| Scenic | 0.15 | 0.65 | light trail use allowed | Prioritises landscape and viewpoints |
| Fast | 0.75 | 0.35 | strict tarmac | Faster roads, minimal climbing, smooth surface preferred |
| Road bike safe | 0.40 | 0.45 | strict tarmac | Strictly avoids unpaved and gravel surfaces |
| Custom | slider | slider | slider ("Trails and minor roads" — higher allows more rough ground) | Set your own percentages via the Advanced tuning panel |
The Hills weight rides on elevation-aware costing in the FastGIS routing engine (0.5 is neutral; below it the loop avoids gradient, above it seeks passes). It applies when the loop is generated online; loops generated fully offline on the device currently route as if Hills were neutral.
Ferries and tolls come from the motorcycle profile itself (the loop does not read the Route Planner's avoid toggles or its sliders); the one planner setting a loop follows is Dirt-first, below. A car, bicycle or on-foot loop sends no profile options at all — only the dirt-first preset.
Dirt-first (motorcycle and car)
The Dirt-first row under Ride profile shows the Route Planner's dirt-first preset — Off, Light, Moderate or Strong. It is one setting: tapping the row steps through the presets and changes the planner's too. With it on, the loop is asked the way a planned route is: the preset decides the surface (gravel and dirt sought, tarmac only to connect them) and the ride profile keeps its shape (Highways, Hills, ferries, tolls). A car loop uses the car's own strengths. Online and offline alike.
The loop still matches the length you asked for; on dirt it takes longer than a tarmac loop of the same length.
Choosing a profile also pre-sets the Avg speed used for ETA estimates (Curvy → 45 km/h, Fast → 75 km/h, etc.) — you can override this in Advanced settings.
Weave-ins — curvy roads and beaches
Include curvy roads (motorcycle and car) weaves the best-rated road near the loop into it as fixed via-points; the loop still converges on the target distance. When it is on, a Bends / Climb picker chooses which axis picks that road — bends is the classic curvature ranking, climb picks the biggest mountain road instead. Climb ranking always uses the server (on-device curvature data has no climb column). Include beaches does the same with beach-seeker beaches, with a sea / lakes / both filter.
Advanced settings
Expand ▶ Advanced settings (motorcycle and car only) to tune:
| Setting | Range | Effect |
|---|---|---|
| Avg speed | 15–120 km/h | ETA estimate only; does not cap actual routing speed |
| Waypoints | 2–12 | More waypoints → more varied loop shape and less chance of out-and-back detours |
| Reach depth | 0.30–1.00 | How far out waypoints are placed. 0.30 = tight radius; 1.00 = pushed to the furthest reachable edge. Lower values work better in fjord/valley terrain to avoid dead-end roads. |
| Avoid backtracking | toggle | Marks waypoints as Valhalla through stops — the engine passes through without U-turning, reducing same-road overlap |
| Force departure heading | toggle | Adds a directional heading constraint so the route departs in the chosen compass direction (±45°). Disabled when direction is set to Random. |
Tour direction
Tap Tour direction to open a compass rose and pick the preferred outbound heading: N, NE, E, SE, S, SW, W, NW, or R (Random). The engine biases waypoint placement in that direction but does not guarantee a straight outbound leg.
After generating
Once the route preview appears:
- The panel shows actual distance and estimated duration, then the loop's unpaved share ("62% unpaved", the same surface profile the Route Planner shows; "No unpaved roads on this route" when dirt-first was on and found none), the verdict on the length, and % ridden twice — how much of the loop rides the same road out and back.
- Two or three loops per ask. Online, one ask rides the heading you picked and its neighbours (N also tries NE and NW), and the panel lists what it found under Loops: a card per loop with its heading, length, time, unpaved share, % ridden twice, climb, the verdict on its length, and the badges it earned — Best match, Most unpaved, Least ridden twice, Most climbing. A badge is given only when the loops really differ on that number. The loop you asked for is on the map from the start; the others are drawn muted under it. Tap a card to bring that loop forward — ▶ Start then rides it.
- When fewer come back, the panel says so. A loop that repeats one already on screen, or that was not ready within the server's 10 s budget, is left out and named: "Only one loop here: the NE and NW loops were not ready within 10 s." Long asks in fjord country (Bergen, 200 km) regularly come back with one loop for that reason.
- Offline you get one loop, and the panel says the others need a connection. The on-device generator makes one loop per call, one after another, so each extra costs a whole generation — measured at Bergen, 100 km, dirt-first Strong: 19 s, 86 s and 6 s for three. If you would rather wait for them, Settings → Routing → Other loops offline turns them on; a loop that is not ready in time is still left out and named.
- Tap ▶ Start navigation to begin turn-by-turn guidance immediately.
- Tap ↺ Recompute to regenerate with the same settings — if you have panned the map and the start source is set to Map center, the recompute uses the current map centre, not the one when the panel first opened.
- Tap 💾 Save to store the route.
- Tap ⛰ Show elevation profile to fetch and display the elevation chart for the generated loop.
Scenic loop
The Scenic loop tile in the routing wizard builds a tour the other way round from the circular planner: you pick the places first, and the app finds the best order to ride them in and brings you back to the start.
- What to see: villages, historic and cultural sites, viewpoints, mountain passes, beaches, forgotten places. Villages are ranked by Wikipedia and need a connection; the sheet says so when you are offline. Everything else also works from downloaded data.
- Stops: Fuel (fuel stations) and Food (restaurants and cafés). Stops are listed apart from the places, under their own heading, and never take a place's spot in the list. They are picked spread out on the loop: one per direction, the one about halfway out, at most twelve of each. That puts them where a mid-ride break falls, not in the town you start from.
- Ride budget, in kilometres or hours. It sets how far the search reaches (a loop of length D reaches about D/π from its start). It does not limit the tour itself.
- Find places opens the results in their own panel, with markers on the map, so the list never pushes the loop settings out of reach. The results come in two groups: POI results, with one sub-group per category (and your Library points), and Stops, with Fuel and Food. Every group and sub-group shows how many cards it holds and opens or closes with a tap; the sub-groups start closed. Tapping a card zooms the map to it, and tapping a marker opens the results at its card. A card can show a short description, from the map data or from Wikipedia (with its licence and a link). The back arrow, or Back to loop planning, returns to the settings, where one line (for example 24 results · 3 in the trip) opens the results again. Add from Library adds your own saved points to the same results.
- Add to trip on each card you want, up to 15 stops. A fuel stop or a lunch stop is added like any place. As you add or remove stops, the running preview under the trip shows the tour's length and time, computed exactly as the final loop will be.
- Start: my position begins and ends the loop where you are; Start: first stop begins at the first stop you added, for planning a trip before you get there.
- Compute loop orders the stops into a closed tour and puts it on the map, ready to ride.
Curvy-road discovery
Tap 〰 Find Curvy Roads in the Navigate tab (via the Routing button → wizard).
- Rank by — Bends (default), Intensity, Tightness or Climb. All four
order the same set of roads from one curvature database; they are separate on purpose,
because the bendiest road near you and the biggest mountain road near you are rarely
the same road.
- Bends — the curvature score: total turning along the road, so long, winding roads rise to the top.
- Intensity — turning per km, fair across short and long roads (roads under 3 km are left out).
- Tightness — corners under 50 m radius per km: hairpin climbs first (roads under 3 km are left out).
- Climb — a 0–100 climb rating (elevation range, metres climbed per km, mean altitude): the biggest mountain roads first.
- Offline — when curvature data for the area is downloaded on the phone, the app searches it on the device, with or without a connection. Bends, Intensity and Tightness work there; Climb needs the server, because the on-device data carries no climb rating, so offline results ranked by Climb come back in curvature order.
- Preset — Twisty, Scenic, or Mixed sets the minimum curvature score a road needs (Twisty the highest, Scenic the lowest); Scenic also keeps only officially marked scenic and tourist routes. Change the threshold under Advanced. Twisty and Mixed also leave out roads that are built up for more than a quarter of their length (above 150 and 300 people per km²): a long pass through a village or two stays in, a town street does not.
- Search radius — 25–200 km around your GPS position or the current map centre.
- Tap Find roads near me → (or Search here → after panning the map).
- Results appear as a ranked list and coloured line segments on the map.
- Tap any road to expand its detail card:
- Stats: curvature score, length, distance from you, climb rating, elevation range, elevation gain, water proximity.
- ⛰ Show elevation profile — fetches and renders the full elevation chart inline. Tap a point on the chart to highlight that position on the map.
- Route actions: Start here, Add stop, Route to it, Add full segment.
Tap ▶ Advanced in the sheet to access fine-grained filters: road class, surface type, min sinuosity, population density, scenic-only, near-water, and elevation change thresholds.
Elevation data comes from the best available national DEM for the road's location (see the API reference).
Field capture
Switch to the Capture tab.
Starting a session
- Select or create a GRASS environment (e.g. a project area) from the More → Connection sheet.
- Tap Start Recording — the big green CTA on the idle screen — to begin a new GPS session with a default timestamped title. Tap the title in the recording header to rename it at any time.
- The GPS track records itself while the session is recording (every fix at least 5 m from the last one, the same filter the ride screens use). Use the bottom action bar to add samples: photo, video, audio, waypoint, note — and track point to force a point where you stand.
- Tap ■ End in the recording header when finished. If a voice note is still being dictated it is saved first. The session and all its samples upload when a server connection is available.
The navigation screen's pin, the joypad pin, the companion's Waypoint button and Siri also save the point to your Library (a waypoint named with the time), so it is on the Library map straight away, with or without a session; see Waypoints while riding under Navigate. The waypoint button in this tab's action bar saves into the session only, as before.
A ride recorded from the Navigate tab (Record ride, or turn-by-turn navigation) has a capture session of its own, and the Capture tab shows that session while the ride runs — photos, notes and waypoints taken here go into the ride's session; no environment needs to be selected. Start Recording while a session is still in progress asks before ending it. A session interrupted by the app being killed is picked up again at the next launch (a toast says so), in whichever environment it was recorded, or none.
A photo or video taken under a poor GPS fix is kept and marked approx. position on its card instead of being dropped.
Browsing past sessions
The idle screen lists your Recent sessions below the Start CTA. Each row shows the session title, status (recording / paused / ready / completed) and the timestamp of the last save.
-
Tap a row to open a dedicated session detail view. The view replaces the list and shows: session title and status header, publish-target metadata, and a samples list where each card expands on tap to show its media preview (photo, video thumbnail, audio waveform, note text). Tap the ‹ Back button at the top-left to return to the list.
-
Swipe a row left to reveal two row actions:
- Push (teal) — uploads any pending samples for that session to the configured FastGIS server.
- Delete (red) — removes the session and all its samples from this device. A confirmation dialog appears first so a stray swipe doesn't destroy work.
Both actions are disabled while another publish / delete operation is already in flight.
Where past sessions go after upload
Once a session has been pushed and there's nothing pending, it stays in the local list as a "synced" record so you can still browse the samples on-device. To re-sync (e.g. after a server reset), use the More → Sync sheet which exposes "Push all" and granular controls.
The Sync sheet's Clear local data removes only sessions the server already holds (they can be pulled back later); sessions that have never been synced are kept, and the sheet asks a second, explicit time before deleting those too. The session being recorded is never cleared. Fresh Start wipes the server first and stops — leaving the device untouched — if the server refuses.
Storage actions on a synced session
The session detail view (open a session row, or a capture card in the Library) offers three storage actions — all of them keep the captured data safe on the server:
- Remove from device — deletes the local copies of the session's captures to free space. The captures stay on the server and stream back into the same views (photo, video, and audio) whenever you're online. Only offered once the session is fully synced; removing several captures at once from the Capture tab skips unsynced ones and asks again before deleting them.
- Download for offline — the inverse: re-saves every streamed capture onto the device (rows and media files), so the session works without a connection again.
- Delete from library — removes the session from your listing, on this device and in the server's session list. This is a soft removal: the captured data and media stay stored on the server, and a permanent server-side delete remains a separate, explicit operation (swipe-delete in the sessions list, or the environment-wide Fresh Start).
Elevation profile tab
The Profile tab is a dedicated transect tool for detailed elevation analysis against server-side rasters.
- Load a GRASS environment that contains a DEM raster (More → Environment).
- On the Profile tab, choose the raster from the pill selector.
- Tap Start Transect Draw, then tap start and end points on the map.
- Tap Run Profile — the server executes
r.profileand the chart renders. - Tap Save Profile to Analyses to persist the result as an artifact.
This is different from the route/road inline chart: it uses the full-resolution server-side DEM rather than the automatic online elevation service.
Riding together — live sharing, voice, and group rides
FastGIS has a full social riding layer built on your friends and groups (More → Live sharing). All of it is opt-in and self-hosted — your location and voice never touch a third-party service.
Live location sharing
Share your live position with all friends, specific friends, and/or groups for a chosen duration (15 m up to "until I turn it off"). Friends appear on the Navigate map as avatars with a moving / stopped / stale status ring. You can also mint an expiring public link that anyone can open in a browser — no app or account needed.
Group voice — push-to-talk
Pick a group as your voice channel and talk walkie-talkie style. Riding-safe triggers: an on-map tap button (Navigate, turn-by-turn, and Active Ride), and a Bluetooth helmet media button. Only your active channel is audible, and a banner shows who is talking.
Live calls
Full-duplex calls — everyone talks at once, like a phone call:
- 1:1 calls to a mutual friend, and group calls for a whole group.
- While your call rings you hear the familiar ringback tone; if nobody picks up within about 45 seconds the call ends itself with a "No answer" notice.
- Join anytime: an ongoing group call shows a "call in progress — join" banner; one tap joins it. Calls persist while at least one person is in them.
- Background ringing: incoming calls ring on the lock screen with the native iOS call UI, even when the app is in the background.
- Calls list (More → Calls): every call in both directions — ↘ incoming (missed / answered / declined) and ↗ outgoing (including "No answer"); a missed group call that is still ongoing can be joined straight from the list.
- During a call, spoken navigation pauses (call > push-to-talk > nav voice); the repeat button on the nav HUD still speaks on demand.
Group Ride — convoy navigation
One rider (the leader) shares a planned route with a group; everyone rides the same road geometry, so the convoy stays together:
- Plan a route in Navigate, then open More → Live sharing → Group ride and tap Start ride on a group. Every member gets an invite.
- Accepting is a single consent: it joins the ride, shares your live location with the group, and selects the group as your voice channel. A green "In the convoy" strip stays visible with an instant Leave.
- The route heals itself. If the leader takes a detour or reroutes, the new route is pushed to every member automatically. If you drift off, the app quietly routes you back to a point ahead on the group's route — it never replans your own route to the destination.
- Leadership is handable. The leader can promote another member (Make leader). If the leader disconnects, the longest-connected member is promoted automatically (they can decline); with no leader the group simply keeps following the last shared route.
- Late joiners and reconnecting phones always receive the current route.
The convoy strip and a ride's invitation sit above the route strip at the bottom of Navigate, never over it, so the ▶ that starts the shared route stays in reach.
My events
More → My events lists the events you are on: invitations waiting for your answer first, then what is live, what is coming up, and what is over. The More row counts the invitations still waiting. Tap an event to open it.
Getting an invitation. Three things open an event on the phone: the notification an organiser's invitation sends, a join link someone sent you, and the event's QR code, read with the phone's camera. A join link or QR code puts you on the roster as invited and shows the invitation straight away, whether Epona was already open or the link starts it. Signed out, it asks you to sign in first. A link that no longer works (revoked, expired, or for an event that is over) says so in words, with a way to My events.
Answering. Accept asks one question before it sends your answer: whether the organisers should see your SOS. In Italian:
Condividere il tuo SOS con gli organizzatori? Se lanci un SOS, o l'app rileva una caduta, mentre «evento» è in corso, gli organizzatori e lo staff vedono dove sei. Solo durante l'evento; i tuoi contatti SOS vengono avvisati come sempre.
Accetta e condividi il mio SOS says yes, Accetta senza condividere says no, Annulla sends nothing. If an organiser has already turned SOS sharing on for you, the event says so, before you accept and afterwards, and the question is not asked. Decline asks you to confirm. After accepting, I can't come takes you off the roster until the event starts.
What the event shows. Its date and hours in the event's own timezone, where it meets, and your SOS line. Add to calendar opens the phone's own New Event sheet, filled in with the event's title, its start and end, where it meets, and the timed stops (briefing, regroup…) in the notes; tap Add and it is in your calendar. On an iPhone with iOS 16 the app asks once for access to your calendars. On Android it opens the event in your calendar app (Google Calendar: Add to Calendar, then which of your calendars). Share the calendar file sends the full calendar file instead, with an entry for each stop; importing it again after the organisers change the time updates the entries you already have. The documents are the ones the organisers attached, read through what is shared with you: a route opens in the planner ready to ride, anything else on the Library map. A document that opens on a date says when. After opening one, Back to the event at the top of the Library's list, or above the route on Navigate, returns to the event.
Attaching documents. If you are the event's owner or an organiser, Attach from my library under the documents opens your own records: routes and tracks, roadbooks, points, and photos and media, with a search. Tick one or several, pick what they are to the event (As: route, roadbook, waypoints, briefing, GPX pack or media; it starts on the one that fits what you ticked), and whether the roster can open them now or on a date in the event's timezone, then Attach. Each row of the list says when the roster will get less than you see: a photo reaches them as its name and place, never the photo itself, and a TET or imported track as its name only. Each attached record says when the roster can open it, and Take off, after you confirm, takes it away from the roster; the record stays in your library.
Attaching files. Beside it, Attach a file opens Files on any kind of file, and From Photos takes a picture from your photos, sent as a JPEG. A sheet names the file with its type and size, and says at once, before anything is sent, when it cannot go: over 60 MB, empty, a program, installer, script, web page, SVG or XML, or more than is left of the 1 GB your files share (files in the trash count). Choose As (a PDF starts on Briefing, a picture on Media) and now or on a date, then Attach: the sheet shows the upload's progress, and if the upload or the attaching fails it says why and nothing is attached. A GPX, KML, KMZ, GeoJSON or FIT file is imported instead: its tracks and points become records in your library and are attached, the points as Waypoints; the roster sees an imported track's name, not its line. Files you uploaded before are under Files in Attach from my library. On the event, a file document says its type and size ("Briefing · PDF · 1.4 MB"); tapping it downloads it and opens the iPhone's share sheet, where it can be previewed or sent to an app (on Android, the app that opens that kind of file). In the Library, your files are under the File chip, from everywhere, since a file has no place on the map; each says its type and size, with Open and Delete.
Where it meets. The event's Meeting place names the place its Start stop gives (or its briefing's, when it has no Start yet), and says A practice ground when that place is one. If you are the event's owner or an organiser, Change place moves it, from one of three sources: Practice grounds within 50 km of where the event meets now (or of you, when it has no place yet), a point already in your Library, or On the map — the map opens; press and hold the spot, it is saved to your library and the event comes back meeting there. Replacing a Start asks first. An event with a place but no date says that a ground's card will not list it until it has one, and the owner or an organiser gives it one with Set the date (Change the date once it has one) under the event's title, the same steppers as on the ground's card. Who sees it follows for the owner and organisers, and Publish for the owner while the event is a draft. Riders on the event see where it meets and nothing to change.
Inviting by link or QR code. The event's owner and organisers see Join link or QR code on the event while it is a draft, published or live. It opens a sheet: set how many days the link works (7 to 30, 14 to start with) with − and +, then press Make a join link. The link appears once, with its QR code to show at the meeting point, Share link (the phone's share sheet, with a line naming the event), Copy link and Done. The phone, like the console, keeps nothing that could show it again, so share or copy it before closing. Below, each link that still works says when it was made and by whom, until when it works and how many riders it brought, with Revoke, which asks first. Riders it already brought stay on the roster. A finished or cancelled event says it takes nobody new. Anyone who scans the code with the phone's camera, signed in, gets the invitation (see Getting an invitation).
On the day. When the event goes live you get a notification and the event's group ride invitation (see Group Ride above). While it is live your phone shares your position with the event's riders, and the event says so with a Stop sharing button; Share my position starts it again. A stop holds for that event until it ends. When the event finishes the sharing ends on its own; what you share with friends or other groups is left as it was. An organiser's or staff member's phone also gets an SOS raised during the event, and opens the event on it.
After the finish. The event lists your own recorded rides from its live window. Share with the riders makes one your result track: the event's riders see it. Take back removes it from the event; the ride stays in your library.
Your garage
More → Settings → Garage keeps your bikes and cars: the name, make, model and year, the tank and consumption, the mileage, which one is the default, and — on a motorcycle — its own routing knobs. Tap a card to open it: the spec sheet, the service schedule, and your own manual.
Picking it from the list
A motorcycle is picked from the motorcycle catalogue and a car from the 4x4 list — brand, then model, then year, each step ordered so the common answer is near the top. A bicycle and a walking entry have no list: there is nothing to pick from, so you type the make and the model yourself.
Picking a car fills its make, model, year and consumption, and sets its Type for travel times to 4x4, which you can change to Car. The fuel tank stays yours to fill in: no vehicle register records one. The card says what the register can actually support about the drive — on a model whose name also covers two-wheel-drive versions, a RAV4 or a Duster, it says 4x4 versions exist rather than claiming yours is one. A consumption figure from a register is the one the model was type-approved at, labelled with its cycle (WLTP, NEDC) and called a lab figure: expect a loaded car off road to drink more. Change the vehicle's type and a pick from the other list is dropped, since the model no longer describes it.
Fuel you carry
A car's editor has Fuel carried: how many cans and how big each one is, two cans of twenty litres. The litres and the kilometres they are worth are worked out under the boxes — you never type a total, so the two can never disagree.
It is a second range, beside the tank's and never added to it: fuel in a can is no use until you stop and pour it, so the range the car can actually reach while moving stays the tank's, and that is still what fuel-stop planning uses. The card reads both. The cans are your kit, not the manual's numbers, so picking a model never fills them in and never locks them; set the count to 0 when they come off.
Your service schedule, in your own language
Open a card and its service schedule lists what the service is and how often it falls due. Both halves are in your language — Olio motore · ogni 15.000 km o 12 mesi — and they are the same words Read it uses in the list below, so one card does not name the same service twice in two languages.
What makes that possible is a key stored beside the wording. Picking a bike from the catalogue keeps the catalogue's key for each service (oil change, air filter, valve clearance) alongside the sentence the catalogue publishes; the key is what gets translated.
- An item you typed in yourself has no key, and your own words are shown, in whatever language you wrote them. Nobody should rewrite what you called a job on your own bike.
- A vehicle saved before the key existed shows the wording it was saved with, until it is picked again or the key is recovered for it.
Each row is read out as one sentence — the service, then when it is due — so a screen reader never announces half the fact.
Your bike's own manual
A bike can carry your own owner's manual, so the book is with the bike rather than in a drawer at home. On the open card, Upload the manual picks a PDF out of Files (iCloud Drive, Dropbox, anything the Files app shows), up to 60 MB; the row says the limit before you pick, and a file that is too big or is not really a PDF is refused on the phone rather than after a long upload. While it goes up, the row counts the percent.
Once it is there the row shows its title, its pages and its size, and three things to do with it:
| Open | hands the PDF to the phone — on iPhone the share sheet, where you can read it or send it to any reader you have installed; on Android the PDF reader you pick (Drive's, for one) |
| Replace | picks another PDF; the old one is deleted outright, and so is what was read from it |
| Remove | asks first, then deletes the file and the read. There is no trash for it |
The manual is kept as a private document in your library: only you can fetch it, it cannot be shared or published, it travels in a download of your data, and it is erased with your account.
Read it — what your manual says
Read it asks the server to pull the specs and the service intervals out of your own PDF. It says where it is while it works — waiting its turn, reading — and then shows what it found:
- every figure with the page it was printed on. A figure whose line could not be found again on any page says no page, and is shown but never used for a service reminder: a page number nobody can check is worse than none.
- your manual's figure, and the catalogue's own number under it when your bike is a catalogue model, labelled as the catalogue's. Where the two differ the difference is shown, not settled — your own manual is the book for your own bike, and its figure is the one kept.
- the brand it was read as. When your bike says one make and the document prints another, you are told, and the figures are the document's.
- nothing invented. A spec your manual does not state has no row.
A manual it cannot read is still an answer, not a silence: a scan with no text in it, or a brand whose layout is not one we can read yet, says so plainly and notes the brand — that list is what decides which brand is taught next. Reading again is always there. Replace the manual and the read goes with the book it described.
The same manual, the same figures and the same Read it are on the desktop client; the doors behind them are in Accounts → Your own manual.
Settings and data reset
Open More → Storage → Reset app data. The dialog lists five categories with the space each one takes — App state & caches, Captures, rides & imported tracks, Routing & data packs, Offline basemaps, Synced layers — and deletes only the ticked ones. Caches and synced layers start ticked; the heavy packs and your own captures start unticked, so cleaning up never costs the gigabytes of tiles unless you ask for it. The packs category is refused while a download is running.
What is never touched: server credentials, app preferences, map style, bookmarks, track colours.
After tapping Reset, restart the app. Then use the Offline packs sheet to re-download fresh packs.
See also: Offline Data Tiles.