You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+32-8Lines changed: 32 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,10 +1,32 @@
1
1
# EUC Planet
2
2
3
-
An open-source Android companion app for the **InMotion V14** electric unicycle.
4
-
5
-
Built because every other EUC app either asks for a monthly subscription, ships a crummy UI, loses connection, or locks useful features behind paywalls. This one is free, does the things I actually want while riding, and doesn't phone home.
6
-
7
-
> **Scope note:** right now this supports the **InMotion V14 only** (V2 BLE protocol, `Adventure-*` devices). The architecture is protocol-agnostic, so other InMotion wheels, and eventually other brands, can be added later.
An open-source Android companion app for **electric unicycles**, with a Wear OS companion for Galaxy Watch Ultra and other Wear OS 5+ watches.
10
+
11
+
Built because every other EUC app either asks for a monthly subscription, ships a crummy UI, loses connection, or locks useful features behind paywalls. This one is free, open source, no ads, no tracking, no upselling, no subscriptions, no telemetry phoned home, no nonsense.
> |**Preview**| Ninebot Z6 / Z10, plus legacy One E / E+ / S2 / Mini (read-only) | same; Ninebot Z uses the documented XOR keystream encryption |
24
+
> |**Experimental**| InMotion V11, V13, V9 | In the model registry; please file a wheel report if you try them |
25
+
> | Not yet | Onewheel and other non-EUC vehicles | Different protocol family, out of scope |
26
+
>
27
+
> Preview wheels are implemented from the spec docs in [`docs/protocols/`](docs/protocols/) (KingSong, Begode, Veteran, InMotion V1, Ninebot) but have not yet been tested against the actual hardware. If your wheel is in this tier and you can ride it, please connect through the app and file a wheel report via the orange in-app banner — telemetry verification is the fastest path to upgrading the tier.
28
+
>
29
+
> Want to help add a wheel that's not on the list? See the [BLE capture guide](docs/BLE_CAPTURE_GUIDE.md) — record one labelled riding session and we can usually map it in a single pass.
8
30
9
31
---
10
32
@@ -50,14 +72,16 @@ Built because every other EUC app either asks for a monthly subscription, ships
50
72
### Integrations
51
73
-**Flic 2 buttons**: pair up to two buttons.
52
74
-**Volume keys**: use the phone's physical volume up/down for extra shortcuts.
53
-
-
75
+
-**Wear OS companion**: full-bleed speed dial, three batteries (wheel/phone/watch), accent and unit settings synced from the phone, horn + light remote controls. Tested on Galaxy Watch Ultra; works on any Wear OS 5+ watch.
76
+
54
77
---
55
78
56
79
## Requirements
57
80
58
81
- Android 10 (API 29) or newer.
59
-
-InMotion V14 (firmware running the V2 BLE protocol, device advertises as `Adventure-…`).
82
+
-A supported wheel (see the support-tier table at the top of this README). The V14 and P6 are the most thoroughly tested today; KingSong / Begode / Veteran / InMotion V1 / Ninebot wheels work in preview and need community testing to graduate to "verified".
60
83
- Bluetooth + location permissions (location is required by Android for BLE scanning).
84
+
- Wear OS companion (optional): Wear OS 5 or newer, paired through the Wear OS by Google app.
61
85
62
86
## Install
63
87
@@ -82,7 +106,7 @@ I got tired of:
82
106
83
107
## Contributing
84
108
85
-
The BLE protocol layer is separate from the UI, so adding a new wheel is mostly: write a new protocol encoder/decoder and a new parser, then wire it into `WheelRepository`. PRs welcome. Bug reports go on [GitHub Issues](../../issues); feature ideas and votes live on the community board at [ideas.ried.no/euc-planet](https://ideas.ried.no/euc-planet).
109
+
The BLE protocol layer is separate from the UI: each brand family has its own `WheelAdapter` implementation in [`app/src/main/java/com/eried/eucplanet/ble/`](app/src/main/java/com/eried/eucplanet/ble/), and `CompositeWheelAdapter` routes connect-time by the BLE-advertised name. Spec docs for each family live under [`docs/protocols/`](docs/protocols/). To add a new wheel: write a parser + commands + adapter that implement `WheelAdapter`, register it in `CompositeWheelAdapter`, add the BLE-name pattern to `BleScanner`. The fastest path is the [BLE capture guide](docs/BLE_CAPTURE_GUIDE.md) — record a single labelled riding session and we can usually map a new wheel in one pass. PRs welcome. Bug reports go on [GitHub Issues](../../issues); feature ideas and votes live on the community board at [ideas.ried.no/euc-planet](https://ideas.ried.no/euc-planet).
0 commit comments