[PROJECT] Bosch eBike live data on Suunto Race S — open source ESP32 bridge + SuuntoPlus app
-
Hi everyone,
I ride a Bosch eBike and I wanted a single place for all my training data: GPS, heart rate, and also what the bike is doing — cadence, motor power, battery consumption. The Suunto app is where I review all my activities, so the goal was to have eBike data recorded directly into the Suunto workout, available for analysis afterwards alongside the rest of the activity data. Seeing it live on the watch face during the ride turned out to be a nice bonus too.
After some digging into the Bosch BLE protocol I built a solution and I’m sharing it here in case it’s useful to others.
The problem: why an ESP32 is needed
Bosch eBikes broadcast live data over BLE using their proprietary Live Data Interface (LDI) protocol (a protobuf-encoded stream over a custom service UUID). Suunto watches don’t natively speak this protocol — they have no built-in way to connect to a Bosch drive unit and decode its data.
The only way to bridge the gap today is with a small piece of hardware in between. I used an ESP32 microcontroller (~€5–10) that acts as a transparent proxy: it connects to the bike as an LDI client, then re-exposes the same data stream as an LDI server that the Suunto can read through a SuuntoPlus app.
It works, but it means carrying an extra device on the bike. A small ESP32 dev board fits neatly zip-tied to the frame, powered from a USB power bank.
The result

A SuuntoPlus app that shows in real time:
Cadence rpm
Speed km/h
Motor power W
Battery %
Odometer km
Post-workout summary includes max and average cadence and power.What you need
A Bosch eBike with smart system and latest firmware from May 1st 2026
Any ESP32-WROOM-32 board (~€5–10)
A Suunto watch with SuuntoPlus support (Race, Race S, Vertical, 9 Peak Pro, …)
VS Code + PlatformIO (for the ESP32) and the SuuntoPlus Editor extension (for the watch app)
Both projects are open source on GitHub:ESP32 bridge: https://github.com/SellA/BoschEBikeESP32
Suunto app: https://github.com/SellA/BoschEBikeSuuntoA note on compatibility
I’ve only tested this on my own setup (my specific Bosch eBike and my Suunto Race S). The LDI protocol should be consistent across Bosch smart system bikes, but I can’t guarantee it works with every bike or every Suunto model. If you try it and run into issues — or if it works great — I’d love to hear back.
A wish for the future

The ESP32 bridge works well, but it’s an extra moving part. The LDI protocol is well-documented and publicly available. It would be fantastic if a future Suunto firmware update added native Bosch LDI support directly on the watch — no bridge required, just the watch connecting to the bike over BLE like any other sensor. I imagine a few other Suunto + Bosch eBike riders out there would appreciate it too. Just putting it out there for the Suunto team!

Ride safe, and happy to answer any questions.