Installation
From a bare board to live power, speed and cadence on your fitness gear. About 15 minutes, no soldering for the recommended hardware.
This guide covers boards with the Adafruit bootloader — the easy way: Adafruit Feather nRF52840 Express, Seeed Studio XIAO nRF52840, and anything from this list that has an nRF52840 chip. For other boards (e.g. Nordic DKs), see the project README.
Step 1 — Put your board into bootloader mode
- Adafruit Feather: plug in the USB cable. Push and hold both buttons, let go of the reset button and keep holding the other one. Wait for a new USB drive to appear.
- Seeed Studio XIAO: press and hold the tiny button next to the USB port, plug in the USB cable, wait for a USB drive to appear.
Verify the new USB drive contains CURRENT.UF2, INDEX.HTM and
INFO_UF2.TXT. If not, try again — it sometimes takes a couple of attempts.
Step 2 — Update the bootloader (first install only)
Open INFO_UF2.TXT on the USB drive. It looks like this:
UF2 Bootloader <version>
Model: Seeed XIAO nRF52840
Board-ID: nRF52840-SeeedXiao-v1
Date: Jun 22 2026
SoftDevice: S140 X.Y.Z
If the last line says SoftDevice: S140 7.3.0, your bootloader is up to date —
skip to step 3. Otherwise:
- Note the
Model:line and find it in the supported boards list to get the matching name in theBoardcolumn. - Go to the
BEStie bootloader release
and download the
.hexfile named after thatBoardvalue, ending in_s140_7.3.0.hex. For examplefeather_nrf52840_express_bootloader-vX.Y.Z_s140_7.3.0.hexorxiao_nrf52840_ble_bootloader-vX.Y.Z_s140_7.3.0.hex. - Flash the bootloader file using step 3 below, then flash the BEStie firmware the same way.
Step 3 — Flash the BEStie firmware
- Download
bestie_nrf52840.hexfrom the latest BEStie release. - Make sure the board is still in bootloader mode (the USB drive with
INFO_UF2.TXTis visible — it times out after a few minutes of inactivity). - Open the BEStie firmware uploader in a browser with WebSerial support (Chromium or a recent Firefox).
- Click Connect Serial. Allow USB access if the browser asks. There should be exactly one port on the list.
- Click Single .hex (auto detect), pick your
.hexfile, then Upload and wait. For a bootloader update, wait an extra 30 seconds after the upload finishes, then repeat with the BEStie firmware file.
Step 4 — Verify the installation
- Unplug USB and plug it back in. The board should boot normally — no USB drive appears. If a USB drive shows up instead, the bootloader is fine but failed to boot the application.
- Install Nordic's nRF Connect app: Android · iOS.
- Scan for devices — one named BEStie should appear. Tip: tap the icon next to its name so a red star appears; you can then find it quickly via “show preferred devices” in the filter menu.
You can connect to it if you like — inside you'll find a Fitness Machine service. Once a bike is connected, enabling notifications (the triple-arrow button next to the FTMS characteristic) shows live power, speed and cadence.
Step 5 — Pair BEStie with your bike
On a fresh boot BEStie enters an enhanced pairing mode that boosts the chance of a successful pairing. It ends with the first successful bike connection. It's best to power-cycle the board before adding a new bike — all existing pairings are kept.
- Make sure BEStie is flashed and visible in an nRF Connect scan (steps above).
- Bring BEStie, the bike and your phone with the Flow app close together — about arm's reach.
- Do the pairing away from other fitness devices (HR straps, cycling sensors) if possible, and make sure only the bike you want to pair is turned on.
- In the Flow app select the correct bike, then: gear icon → components → blue Add component link → Accessories.
- Let the scan run — a single scan can take up to 2 minutes. Repeat it 2–3 times before rebooting anything. Eventually a device named BEStie appears; tap Connect.
- Open the component list again and tap BEStie. Wait for the connection dot to turn green — the bike is now fully bonded (up to 90 s the first time; much faster afterwards).
Step 6 — Connect your watch or cycling computer
The exact menu names vary by device (the process below was tested on Garmin Edge computers and a Garmin Enduro watch; Wahoo and other brands are similar). The general process:
- Pair the bike first (step 5). Once the bike link is up, BEStie switches to focused smart-trainer advertising, which your fitness device finds much faster.
- On your device open Sensors (Garmin: drop-down shade or Settings → Connectivity), then Add new → Search all.
- Within ~90 seconds a smart trainer named BEStie appears — add it. The first “connecting to new device” can take a while on older devices; let it finish.
-
Do a test “ride”: turn the fitness device and the bike off (keep BEStie on), then turn the
fitness device back on and start an activity with speed and cadence fields on screen.
Within 30–60 s you should see “trainer connected”. Turn the bike on and watch the values
go from
--to0.0. Spin the cranks for ~10 s — speed and cadence come alive.
Something not working? Check the FAQ & troubleshooting.