Onewheel handshake capture

For Floatface, a Garmin watch app that talks directly to your board.

What you'll need

Nothing you do here leaves your computer. The dongle talks to your laptop over USB, everything is decoded locally in your browser, and the only output is a small text file you save yourself. No server, no account, no upload.

Flash your dongle

If your dongle is already running the nRF Sniffer firmware (for example, if you set it up previously), skip this step -- nothing here is required twice.

👇Hold the dongle's button down
→
🔌Plug it in, then let go
→
💾A "UF2BOOT" drive appears

This puts the dongle into its bootloader -- a tiny built-in program (separate from the sniffer firmware) whose only job is accepting new firmware. To your computer, that bootloader looks exactly like a USB flash drive named UF2BOOT; that's normal, not a different mode. Copying the firmware file onto it is a real flash, not just a file copy that sits there -- the bootloader watches for the new file, programs it directly into the chip, and reboots into it automatically.

This is Nordic's official nRF Sniffer for Bluetooth LE firmware (v4.1.1), pre-packaged for the Makerdiary nRF52840-MDK dongle -- see firmware/NOTICE.md for exact provenance and license.

Advanced: use a different .uf2 file (other dongles)

This only works for boards with a UF2 bootloader like this one (the "shows up as a USB drive" style). A genuine Nordic dev kit using Nordic's own DFU bootloader (e.g. a PCA10059) needs different tooling entirely -- see the main README's manual instructions for that path.

Need firmware for a different UF2-bootloader nRF52840 board? Get it from Nordic directly: nRF Sniffer for Bluetooth LE (you'll need to convert their .hex to .uf2 yourself -- see the main README).

Capture the handshake

📴 Laptop Bluetooth off
🔁 Board power-cycled
📏 Board, phone & dongle all nearby

💡 Heads up: this often takes several tries (5+ isn't unusual) before it catches the handshake -- the sniffer has to catch your phone's connection at the exact right moment and then not lose sync, and it misses one or both fairly often. That's a real limitation of this class of BLE sniffer, not a sign your setup is broken. Some attempts won't even show a "CONNECT_REQ" line at all -- also normal, just try again.

🖱️Your browser will ask you to pick a device
→
✅Choose "nRF Sniffer for Bluetooth LE"
→
📱Then open the Onewheel app on your phone
👋
Ready when you are.
Tap "Start capture" whenever you're set.
Technical log

Got it!

Your board's unlock handshake, captured and decoded locally:



        

Drop the downloaded file into garmin-app/source/LocalConfig.mc in your Floatface checkout (it replaces the placeholder from LocalConfig.mc.example), then build and sideload as usual. This value is specific to your board -- see PROTOCOL.md for why it can't be shared or reused on a different board.