Skip to content

Repository files navigation

RideFlux app icon

RideFlux

A live dashboard for electric unicycles — with an optional AR-glasses HUD.

Speed · Battery · Temperature · PWM alerts · Trip recording · Rokid HUD

English  ·  繁體中文  ·  Website  ·  Privacy  ·  Docs

Get it on Google Play

Latest release Android CI Quality gate License: GPL-3.0-or-later Android 9+ 18 languages


Live dashboard Live charts Trip details with route Alert settings HUD view for AR glasses

Screenshots show sample data, not a real ride.


What it does

RideFlux connects to your electric unicycle (EUC) over Bluetooth Low Energy and shows what the wheel is doing, live, on your phone — and, if you have them, on AR glasses.

⚡ Live dashboard Speed gauge, battery %, voltage, current, power and temperatures, plus BMS details, live charts, and parameter and event pages.
🛡️ Safety alerts Overspeed, over-temperature, low battery and high PWM load. Debounce, cooldown and hysteresis stop a value hovering on a limit from spamming you. Defaults: 45 km/h · 80 °C · 25 % · 90 % PWM, all adjustable.
🗺️ Trip recording Starts by itself when the wheel starts moving. Every ride keeps its route plus speed, voltage and current. Export a trip as CSV or GPX, or back up all trips and settings to a ZIP.
🥽 AR glasses HUD An optional heads-up display on Rokid AR glasses, so you can keep your eyes up. A Bluetooth ring can show or hide it. More ↓
🎛️ Wheel controls Headlight, horn, speed limit, calibration and more — where the wheel supports them, and locked while you are moving.
🔒 Private by design No internet permission, no ads, no analytics, no accounts. Everything stays on your phone unless you export it.
🌍 18 languages Follows the device language automatically, including right-to-left Arabic and Urdu.

AR glasses HUD

flowchart LR
    W["🛞 Electric unicycle"] -- "BLE" --> P["📱 RideFlux phone app"]
    P -- "BLE bridge · 1 frame / s" --> G["🥽 HUD app on Rokid glasses"]
    R["💍 BLE ring"] -. "show / hide" .-> G
Loading
  • One link to the wheel. The phone holds the wheel's single BLE connection and relays a compact frame (speed, battery, voltage, trip, stale flag) to the glasses, so two devices never fight over the wheel. The glasses can also read the wheel directly when no phone is around.
  • Only your phone. The glasses pair to a token that the phone mints on first run, not to a Bluetooth address that rotates every few minutes, and the phone only streams to glasses you approved.
  • Hands-free. A Bluetooth ring paired to the glasses reveals or blanks the HUD. A safety alert still breaks through a blanked HUD.
  • Optional. The phone app is a complete dashboard on its own.

How the bridge works, byte by byte: docs/BRIDGE_PROTOCOL.md.

Supported wheels

Brand Models Status
Begode / Gotway / ExtremeBull A2 ✅ Verified on hardware — a few readings (trip distance, PWM) are known to be off and are being fixed
Other models, dual-BMS 🧪 Experimental
KingSong — 🧪 Experimental
Veteran Sherman, Abrams, Patton, Lynx, Oryx, Nosfet 🧪 Experimental
Ninebot One, E+, S2, Mini · Z, ZT, KickScooter Z 🧪 Experimental
Inmotion V5, V8, V10 · V9, V11, V12, V13, V14 🧪 Experimental
  • ✅ Verified on hardware means the developer connected a real wheel of that model and checked the app against it.
  • 🧪 Experimental means the decoder is implemented from open-source references and recorded test frames, but has not been tried on a real wheel. It may misread values on yours. Compare it with your wheel's own display before you rely on it for safety.
  • Own one of the experimental wheels? A short report helps a lot — open an issue with the model, firmware, and what RideFlux showed against what the wheel's own display showed.

The wire formats and GATT layouts behind each family: docs/PROTOCOLS.md.

Get RideFlux

📱 Phone app Google Play — Android 9 (API 28) or later.
🥽 Glasses HUD app An APK on GitHub Releases, for sideloading on Rokid glasses.
🛠️ From source See docs/BUILDING.md.
./gradlew :app:assembleDebug        # phone APK
./gradlew :hud-app:assembleDebug    # glasses APK
./gradlew test                      # JVM unit tests

Built with Kotlin, Jetpack Compose, Hilt, Room and DataStore. You need JDK 17 or 21; newer JDKs are not verified.

Privacy

  • No internet access. The app declares no INTERNET permission, so it cannot send anything off your phone.
  • No tracking. No ads, analytics, crash reporting or accounts.
  • Location only while recording. It is used to draw a trip's route, runs as a visible foreground service, and is never requested in the background. Deny it and trips are still recorded, without a route.
  • Your data, your call. Trips stay on the phone until you export them; Android cloud backup is switched off for the app.

Full text: PRIVACY.md.

For developers

The technical reference that used to fill this README now lives in docs/, word for word.

Document What is in it
Architecture Module layering, design rules, repository layout
Wheel protocols Wheel families, GATT topologies, where the protocol knowledge comes from
Phone ↔ glasses bridge Pairing token, startup ordering, scan budget, frame layout
Localization The 18 translations, the coverage test, how to add a string or a language
Building & releasing JDK and SDK, signing and secrets, tests, Sonar, dependency verification
Play Store assets Store graphics and the scripts that regenerate them
Website The GitHub Pages site in site/ and how it is built

Disclaimer

RideFlux is an independently developed third-party application. It is not affiliated with, endorsed by, or sponsored by any of the wheel manufacturers or Rokid named above; those names are trademarks of their owners and appear only to say which products RideFlux can talk to. Pay attention to the road while you ride and do not operate your phone while riding.

License

Distributed under the GNU General Public License v3.0 or later. Source files carry SPDX-License-Identifier: GPL-3.0-or-later. See LICENSE for the full text.

Additional permission: Rokid CXR SDK

The RideFlux project contributors, as the copyright holders of the RideFlux source code, grant the following additional permission under section 7 of the GNU General Public License, version 3. It applies to the RideFlux source code in this repository; the GPL applies unchanged otherwise.

If you modify this Program, or any covered work, by linking or combining it with the Rokid CXR SDK libraries (com.rokid.cxr:client-m and com.rokid.cxr:cxr-service-bridge) (or a modified version of those libraries), containing parts covered by the terms under which Rokid provides them, the licensors of this Program grant you additional permission to convey the resulting work.

This permission does not:

  • give you any rights in the Rokid libraries. They are Rokid's proprietary software and are not licensed by this project; Rokid's own terms govern whether and how you may use and redistribute them (see NOTICE);
  • reach material that other people wrote, such as the third-party material listed in NOTICE, which stays under its own license.

As section 7 of the GPL allows, you may remove this additional permission from your copy of the Program, or from any part of it.

Acknowledgements

Some protocol test data comes from WheelLog, and the Rokid CXR SDK is Rokid's own software. Credits and terms are in NOTICE.

About

Modern Android AR Heads-Up Display (HUD) and real-time BLE telemetry dashboard for Electric Unicycles (EUC), built with Kotlin and Jetpack Compose.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages