Skip to main content

Roll camera

· 3 min read
Massimo Di Stefano
FastGIS author

Riders already carry an action camera. Until now it was a separate device with its own app, its own battery anxiety and its own timeline that never quite lined up with the ride.

Not any more.

Action-camera control

Epona now controls GoPro over BLE and the Insta360 X4 through its SDK. Start and stop recording from the app, from the CarPlay screen, or from a helmet button — without taking a hand off the bars, which is the only interaction model that matters at speed.

Two cameras, two entirely different integrations. The GoPro speaks a documented BLE protocol; the X4 needs Insta360's own SDK compiled in. Presenting them as one feature took more work than either one alone.

Every shot is written to a shot log and dropped into the ride as a GPX waypoint. When you sit down to edit — days later, looking at four hours of identically-named files — you already know which clip was the pass and which was the roundabout you filmed by accident.

That is the part we are most pleased with. The camera integration is convenient; the log is what turns a pile of footage back into a ride.

The two cameras are genuinely different, and the app now respects that instead of pretending otherwise: only the GoPro gets the Wi-Fi transport switch, and the X4 shows a read-only camera card rather than offering settings that BLE cannot deliver. Better to say "not available here" than to fail silently after a tap.

Android Auto, and one-command releases

Two scripts that will save more hours than they look like: release-to-phones.sh builds one release with CarPlay enabled and installs it to both dev phones, and release-to-android.sh produces one release APK with Android Auto on and pushes it to any adb target.

Small tools, enormous effect. The gap between "the build works" and "the build is on a bike" was twenty minutes of remembered incantations, and a twenty-minute gap is why field testing happens on Saturdays instead of on Tuesdays. It is now one command.

Overpass keeps itself current

Daily Geofabrik diff updates on the self-hosted Overpass instance, applied automatically. The POI data behind fuel, food and services now ages in days rather than quarters — so a fuel station that opened last month is a fuel station you can route to.

And the admin-database gate

A pipeline fix worth naming, because it was a genuinely nasty one. Valhalla treats a missing administrative database as a warning, not an error. A tile build pointed at a path that did not exist finished successfully and shipped tiles with no country data at all — which silently switched off legal-speed defaults and mph display hints across the app.

The pipeline now builds admin.sqlite explicitly, forces the host path, and hard-fails any build whose log mentions a missing admin database. A green exit is not a result.

Where we are

Camera, car screen, helmet, phone, desktop — the ride is becoming one continuous thing rather than five devices you reconcile afterwards.

There is a lot more of this to come.


Dig deeper: the rider app guide, and riding together for the CarPlay and safety side.