EX Custom iOS/Android App

didnt know the 1.7.0 is out right now... i have the 1.6.0 and no updates available
But I already do 😎
It's possible that the ability to connect was patched out in version 1.7.0, so be careful with the bike update for now if you want to continue using the app.
I have only this screen… (bluetooth connection hardening?)

IMG_0559.jpeg

IMG_0560.png

IMG_0561.jpeg
 
But I already do 😎
It's possible that the ability to connect was patched out in version 1.7.0, so be careful with the bike update for now if you want to continue using the app.
I have only this screen… (bluetooth connection hardening?)
Ah well most certainly its them enabling the new BLE stuff I saw before. When I have time I'll look into the 2.8.x app versions and see what it takes to replicate/support in Svag.
 
Actually some interesting changes in the latest app versions:
  • Added a ton more error and warning messaging for faults in the BMS, inverter, etc. Unclear if this is visible in the UI yet, but seems like they are trying to give users access to more information that was previously not shown.
  • Added a mechanism for firmware updates over Wi-Fi, I imagine this may be a mitigation strategy with the new BLE security stuff to avoid the possibility of bricking bikes.
  • Some indications for a new BLE data-transport format based on TLVs, don't really think this is used much yet.
For the authentication changes (probably just interesting to the handful of people building their own stuff off the BLE interface):
  • Enable notifications on 0x1001
  • Read 32-byte nonce from 0x1001
  • Compute auth payload using functions from 'libnativecrypto.so': buildAuthPayloadV2(vin, normalizedSoldDate, variant=2, nonce)
  • Write auth payload to 0x1001
This leaves two main complications moving forward, dealing with 'libnativecrypto.so' calls and passing a proper 'normalizedSoldDate' (in the form 19700101). There are various anti-tamper methods in the JNI module and in the end it was easier for me to just reverse engineer and port the functions to Rust (can provide the source if you message me, otherwise gets a bit weird with licensing). For the second, I believe this should be easy enough for users to guess/find and input before connecting for the first time.

I have a version of Svag which may support these changes, however it'll have to wait until my bike gets the firmware update for full testing.
 
Back
Top