Version française ici.
eScive is a mobile app that aims to be a third-party client for e-scooters with Bluetooth functionality, allowing an alternative interface with more features, and more importantly, without all the telemetry that is included in some official apps (generally Chinese ones 👀).
For now, the project specifically targets iScooter "i10" electric scooters, but is coded in a way that will allow other brands in the future. Communications between devices are based on reverse engineering of packets sent using the BLE protocols, and directly from the decompiled source code of official apps.

The app is not officialy available on the Play Store.
You can download it using the latest APK provided in the releases of this repository.
You can also join the closed beta to receive updates via the Play Store. You will have to wait to be accepted, so it is recommended to download the APK to start using the app.
The app is not available for iOS, and will probably not be for a while. I prioritized supporting Android to reduce development time, mainly because of the native features (widgets, Bluetooth...) that are more complex to implement and test.
However, the app can be compiled and installed on an iPhone by first running a build using Xcode on a Mac, and then by using the command flutter build ios
. Some features will be limited or not available, and others will not be as optimized as on Android.
You can directly open the app on your phone from a URL starting with escive://
. Depending on the URL, you can choose any predefined actions from the list below that will be done as soon as possible.
Path | Description |
---|---|
app | Open the app without any actions |
controls/lock/on | Lock the current associated device |
controls/lock/off | Unlock the current associated device |
controls/lock/toggle | Lock or unlock depending on the current state |
controls/light/on | Turn on the LED |
controls/light/off | Turn off the LED |
controls/light/toggle | Toggle the LED |
controls/speed/0 | Set speed profile on the mode #1 |
controls/speed/1 | Set speed profile on the mode #2 |
controls/speed/2 | Set speed profile on the mode #3 |
controls/speed/3 | Set speed profile on the mode #4 |
Kustom Variables
On Android, you can use eScive data in a custom homescreen widget or wallpaper with an app like like KWGT or KLWP using the function "BR - Broadcast receiver". Third-party app not affiliated with eScive.
Available variables:
Variable name | Type | Description |
---|---|---|
id |
String | Random UUID assigned for the current device |
name |
String | Name of the device, can be manually changed by the user |
bluetoothName |
String | Name of the Bluetooth device, cannot be changed from the app by the user |
protocol |
String | Protocol used by the current device |
state |
String | none , connecting or connected depending on the connection state |
battery |
Number | Between 0 and 100 , representing the battery level (in %) |
speedMode |
Number | Between 0 and 3 (0 = first speed profile, 1 = second speed profile) |
speedKmh |
Number | Represent the speed at the device is going (in km/h) |
light |
Boolean | Indicate if the LED is on or off with false or true |
locked |
Boolean | Indicate if the device is locked or unlocked with false or true |
$br(escive, speedMode)$
# Show: 2
MIT © Johan. Support this project if you want to help me 💙