Warning
This is unsupported ultra-alpha firmware. It is shared so others can study it, build on it, or contribute patches.
GitHub Issues are disabled on purpose. Please do not report issues through this repository.
PlatformIO ESP-IDF firmware for a Bosch eBike smart system Live Data Interface accessory. The ESP device pairs with the bike, subscribes to Bosch Live Data, decodes the protobuf stream, renders a HUD when a display is fitted, and logs ride data when it runs headless.
In plain words: this is open-source firmware for building your own Bosch LDI accessory with common ESP32 boards. You do not need a specialized bike computer or a fixed display module. A small board can work as a headless datalogger, and a board with a screen can work as a ride HUD.
The source protocol document is
docs/20260501_LiveDataInterface_V1_28042026.pdf.
- Pairs with Bosch eBike smart system LDI over BLE.
- Handles bonding, reconnects, DLE, MTU, GATT discovery, encrypted reads, and notifications.
- Decodes Bosch Live Data protobuf frames into stable ride telemetry.
- Shows a readable HUD when the board has a display.
- Runs as a flash datalogger when the board has no display.
- Logs JSONL and CSV ride data for later export.
- Exports board, pin, sensor, display, logging, progress, and BLE stats.
- Supports commodity ESP32-S3, ESP32-C3, ESP32-C6, classic ESP32, and ESP32-P4 UI-shell builds.
- Keeps ESP32-P4 honest: it can host the UI, but needs an external BLE companion because P4 has no integrated BLE radio.
- Is MIT licensed so people can study it, fork it, and build on it.
Use this when you only need to prove the stack still builds:
pio test -e native
pio run -e esp32s3
pio run -e lilygo_t_dongle_s3Expected result: the native suite passes and each firmware environment ends
with SUCCESS.
For the full first-run path, flashing steps, and common build notes, use
docs/quickstart.md.
Start with one of these environments:
| Need | Environment | Notes |
|---|---|---|
| Headless S3 datalogger | esp32s3 |
BLE LDI plus flash logging, no display. |
| Small C3 datalogger | esp32c3 |
BLE LDI on a smaller chip. |
| Modern C6 datalogger | esp32c6 |
BLE LDI with C6 radio support. |
| Narrow built-in HUD | lilygo_t_dongle_s3 |
ST7735 SPI HUD path builds; real-screen tuning is still lab blocked. |
| Common pocket HUD | m5stack_m5stickc_plus2 |
ST7789 SPI HUD path builds on classic ESP32. |
| Large P4 UI shell | esp32p4_ref_rgb_full |
RGB HUD shell only; P4 needs a BLE companion for Bosch pairing. |
All supported and shortlisted boards are listed in
docs/reference/board_profiles.md.
Open the monitor at 115200 after flashing:
pio device monitor -e esp32s3| Key | Action |
|---|---|
p |
Start pairing advertising. |
b |
Clear BLE bonds and advertise again. |
s |
Print status export. |
h |
Print the current HUD/status export. |
e |
Toggle JSON export. |
x |
Export the stored ride log without using BLE. |
| Need | Read |
|---|---|
| Get the firmware running | docs/quickstart.md |
| Pick an environment or check display support | docs/reference/board_profiles.md |
| Check build flags, SDK defaults, and console commands | docs/reference/configuration.md |
| Consume JSONL or CSV output | docs/reference/export_shape.md |
| Understand the BLE, HUD, logging, and hardware split | docs/explanations/ldi_architecture.md |
| Add a real production board profile | docs/board_profile_template.md |
| Validate real hardware in the lab | docs/hardware_validation.md |
| Use ESP32-P4 with a BLE radio | docs/esp32p4_ble_companion.md |
| See the full documentation map | docs/README.md |
- ESP32-S3, ESP32-C3, ESP32-C6, and classic ESP32 can own the Bosch BLE flow.
- ESP32-P4 has no integrated BLE radio, so it needs an ESP32-C3/C6 companion or another external BLE controller.
- SSD1306, ST7789 SPI, ST7789 I80, RGB, ST7735, GC9107, and ILI9342C display paths build. ST7735, GC9107, and ILI9342C still need real-screen tuning.
- QSPI AMOLED boards are pinned and exported, but they are metadata-only until an AXS15231B or SH8601 panel driver is added.
- Real Bosch pairing, BLE sniffer traces, real payload fixtures, HUD photos,
and stored-export power-cut checks are still lab gates tracked in
TODO.md.
Parts of this firmware and documentation were coauthored with OpenAI Codex,
using codex-cli 0.128.0 with GPT-5.5 and XHIGH reasoning.