Device setup

Setting up your OpenTrailPaper

There are two parts, both handled here in the browser: flashing the firmware onto the head unit over USB, and building offline map tiles for its SD card. Everything runs locally on your computer — no data is uploaded.

This page needs a desktop Chromium browser. Flashing uses the Web Serial API, which is only available in Chrome, Edge, or Opera on a desktop. It will not work on a phone or tablet, or in Safari or Firefox.

01 — Flash firmware

Flash the firmware over USB

This writes the firmware to the head unit directly from the browser over a USB cable, using the Web Serial API — no separate installer or command line. It runs entirely on your computer; nothing is uploaded.

1
Connect the head unit

Plug it into your computer with a USB-C cable. Put it in flashing mode: hold BOOT, tap RESET, then let go of BOOT. Click Connect and pick the usbmodem / USB Serial port that appears.

Not connected.
2
Choose the firmware

Pick a version from the dropdown. The newest is already selected, so you can usually leave it as-is.

The latest release is selected by default.

3
Flash it

Click Flash firmware and wait for it to finish — it takes about a minute. When it’s done, tap RESET on the head unit and it boots into the new firmware.

02 — Generate an offline map

Build offline map tiles

Pick an area and the browser bakes the very same H3 map tiles the companion app builds — one .ebm per hexagon under /maps/tiles/<area>/ on the SD card. Everything runs locally from OpenStreetMap data (via Overpass); nothing is uploaded.

The companion app is the better way to do this. It builds the same tiles, additionally bakes in elevation (which powers the grade and ascent readouts — the one thing the browser version leaves out), and sends them to the head unit over Bluetooth with no SD-card shuffling. Use this page when you don’t have the app handy.
1
Choose your area

Pan and zoom to where you ride, then Draw a box (drag across the map) or Use current view. Keep it modest — a city or a county is fine; a whole state is too much data for one download.

Pan and zoom to your area, then draw a box or use the current view.

2
Generate the map

Click Generate map — it fetches the roads for your area and bakes the .ebm right here in your browser.

Pick an area to begin.
3
Download & drop on the SD card

Download the tiles, then unzip onto the SD card’s root and they land in /maps/tiles automatically — over the built-in USB-drive mode, or with a card reader. They show up on the map screen the next time you ride through that area.

03 — On the bike

Mounting it & the SD card

The head unit doesn’t come with a mount, but it doesn’t need a custom one either: stick a Garmin-style quarter-turn adapter on the back and it clips into any Garmin-compatible bike mount. (I tried 3D-printing a mount first and gave up — the adhesive adapters below are cheaper than the filament I wasted and hold better.) This is what I ride with:

You’ll also want a microSD card — it holds the offline map tiles from step 02 plus your recorded rides, and doubles as a USB drive when the head unit is plugged into a computer. Any name-brand card works; 32 GB, formatted FAT32 (how 32 GB cards ship) is more space than the maps will ever use.

04 — SD card files

SD card layout

The device uses ordinary files and folders. The app transfers them over Bluetooth, but you can also manage the card directly.

Card root

Folders are created as they are needed. Copy routes, workouts and firmware updates to the paths shown here.

/
├── rides/
│   └── YYYYMMDD-HHMMSS.fit
├── routes/
│   └── *.gpx
├── workouts/
│   └── *.erg or *.mrc
├── maps/
│   ├── tiles/
│   │   └── 862830/
│   │       └── 827ffffff.ebm
│   └── *.ebm
├── config/
│   └── dashboard.cfg
├── logs/
│   └── YYYYMMDD.log
└── firmware.bin
/logs Daily diagnostic logs.
/firmware.bin Only used for SD-card-based OTA updates. Other update methods do not require you to add this file.

File format

SD card file