Jump to content

WheelDash - Garmin App


Blkfri

Recommended Posts

Hi,

I had already mentioned this application in the Garmin standalone EUC client thread, but I think it deserves its own dedicated thread to avoid confusion with other potential future apps. :D

WheelDash is a standalone application for Garmin bike computer and smartwatch. It is 100% free and open source.

Currently supported EUC brands are:

-Gotway/Begode/Extreme Bull

-Leaperkim

-KingSong (currently not supporting pin code, disable it if you want to use WheelDash)

I'm currently working on Inmotion support (beta testers wanted 😁).

For the most up to date information about WheelDash check the website:

https://blkfribourg.github.io/

If you like my work and want to contribute you can visit my ko-fi page ( https://ko-fi.com/wheeldash ).

If you need some support, want to join the beta testers community, or want to suggest new features feel free to contact me!

Edited by Blkfri
  • Like 1
  • Thanks 2
Link to comment
Share on other sites

  • 1 month later...

Just a few updates on WheelDash current development progress!

I have recently updated WheelDash (developer version 0.4.0) to support InMotion V11 (firmware 1.4 only) and VESC-based PEV (firmware 6.02)! While this support is still very experimental (limited functionality, it is mainly limited to displaying/recording main EUC/PEV values, you cannot access settings or turn lights on/off for now), it should work.

If you own a compatible EUC or watch, feel free to try it and report any issues, bugs, or suggest new features!

 

  • Thanks 1
Link to comment
Share on other sites

I am learning on a week old V11Y and am interested in being a beta tester so let me know if there's anything you want me to try. I am able to connect WheelDash Dev to it but get a PWM error soon after. I'm not sure what the differences are in firmware between the V11 and the V11Y but I believe the boards are different so maybe that's why.

I pulled the repo on Git and have thought about playing around a bit. I'm a C# developer but have no experience with Monkey C or hardware, though.

I love my Epix and think it's pretty awesome you wrote this app for us to enjoy! Thank you!

  • Like 1
Link to comment
Share on other sites

2 hours ago, uniKevin said:

I am learning on a week old V11Y and am interested in being a beta tester so let me know if there's anything you want me to try. I am able to connect WheelDash Dev to it but get a PWM error soon after. I'm not sure what the differences are in firmware between the V11 and the V11Y but I believe the boards are different so maybe that's why.

I pulled the repo on Git and have thought about playing around a bit. I'm a C# developer but have no experience with Monkey C or hardware, though.

I love my Epix and think it's pretty awesome you wrote this app for us to enjoy! Thank you!

Perhaps the BLE packets of the V11Y are structured in the same way as for the V13 (V11 and V12 are similar, but in V13 the PWM value is a few bytes further). @Seba, do you know anything about this?

As you are a developer, here are a few technical details about the issues with InMotion EUCs. Perhaps you can help me to understand a few things!

First, there seems to be a hardware incompatibility between InMotion EUCs prior to V11 and Garmin watches. For some reason, they cannot be paired together and sadly we can't so anything about this.

Secondly, I suspect that there is an issue during the MTU request/negotiation between the watch and the InMotion EUCs. Garmin watches can only support an MTU of 23 bytes, but based on the limited data I have gathered from one of my beta testers, it appears that InMotion EUCs are either unable to support an MTU of 23 bytes or the MTU negotiation fails somehow. The EUC sends packets of 60+ bytes, while any Garmin watch will only consider the first 20 bytes. This results in the loss of a lot of valuable information, which is why I am unable to display mosfet temperatures or total mileage for InMotion EUCs at this time.

I would really like to know if an InMotion EUC is capable of sending data using a 23 MTU. Would you be able to assist me with this (I can provide guidance if needed)?

We have a Telegram group for WheelDash beta testers (invite-only). Please let me know if you are interested in joining.

Edited by Blkfri
Link to comment
Share on other sites

15 hours ago, Blkfri said:

Perhaps the BLE packets of the V11Y are structured in the same way as for the V13 (V11 and V12 are similar, but in V13 the PWM value is a few bytes further). @Seba, do you know anything about this?

As you are a developer, here are a few technical details about the issues with InMotion EUCs. Perhaps you can help me to understand a few things!

First, there seems to be a hardware incompatibility between InMotion EUCs prior to V11 and Garmin watches. For some reason, they cannot be paired together and sadly we can't so anything about this.

Secondly, I suspect that there is an issue during the MTU request/negotiation between the watch and the InMotion EUCs. Garmin watches can only support an MTU of 23 bytes, but based on the limited data I have gathered from one of my beta testers, it appears that InMotion EUCs are either unable to support an MTU of 23 bytes or the MTU negotiation fails somehow. The EUC sends packets of 60+ bytes, while any Garmin watch will only consider the first 20 bytes. This results in the loss of a lot of valuable information, which is why I am unable to display mosfet temperatures or total mileage for InMotion EUCs at this time.

I would really like to know if an InMotion EUC is capable of sending data using a 23 MTU. Would you be able to assist me with this (I can provide guidance if needed)?

We have a Telegram group for WheelDash beta testers (invite-only). Please let me know if you are interested in joining.

I am interested in joining the beta testers group. I just joined Telegram so let me know what you need for the invite. 

Regarding the MTU I have no idea but maybe we can figure it out. While reading through some of the Garmin SDK documentation I came across this link: https://developer.garmin.com/connect-iq/core-topics/bluetooth-low-energy/ If I understand this correctly, it looks like I might be able to use my laptop to sniff what's coming out of the EUC's BT. Maybe you have already done this and that's how you know about the packet size? Let me know if you think that will help. Otherwise, let me know what you'd like for me to try. I have no technical experience with BT so I may have some questions along the way.

 

Link to comment
Share on other sites

7 hours ago, uniKevin said:

I am interested in joining the beta testers group. I just joined Telegram so let me know what you need for the invite. 

Regarding the MTU I have no idea but maybe we can figure it out. While reading through some of the Garmin SDK documentation I came across this link: https://developer.garmin.com/connect-iq/core-topics/bluetooth-low-energy/ If I understand this correctly, it looks like I might be able to use my laptop to sniff what's coming out of the EUC's BT. Maybe you have already done this and that's how you know about the packet size? Let me know if you think that will help. Otherwise, let me know what you'd like for me to try. I have no technical experience with BT so I may have some questions along the way.

 

I've sent you a PM with the invite link for the telegram group. While some of the users only speak French, English is the main language, feel free to ask for translation of you think you're missing important information! 

You can use the SDK simulator and mimic a BLE capable device but you will need a nrf52 based USB dongle/card. It's useful during app development but it's not mandatory as you can just build the app and copy it to your watch.

I'm just using my phone and an app like LightBlue or nrf connect to connect to EUCs and log the BLE data exchange. If you owns an Android phone you can request a specific MTU size (not sure for iOS). Then you will have to subscribe to notifications from the characteristic with the UUID "6e400003-b5a3-f393-e0a9-e50e24dcca9e" and write the following hex packet to the characteric with UUID "6e400002-b5a3-f393-e0a9-e50e24dcca9e" : AAAA14010411. It will request the live data packet that contains voltage, current, PWM, mileage, etc...

The answer data packet will be notified on characteristic 6e400003-b5a3-f393-e0a9-e50e24dcca9e.

Right now, my main question is whether or not an Inmotion EUC supports MTU changes. The only beta tester who tested this had an error message when requesting an MTU change, but he also experienced some connection issues from time to time, so it's unclear whether or not the error message was related to the MTU.

  • Like 1
Link to comment
Share on other sites

On 12/24/2023 at 1:34 AM, Blkfri said:

Perhaps the BLE packets of the V11Y are structured in the same way as for the V13 (V11 and V12 are similar, but in V13 the PWM value is a few bytes further). @Seba, do you know anything about this?

No, I'm still waiting for someone with V11Y to report if it works with EUC World or not :( @uniKevin, do you have an Android phone so you could install EUC World and check if it connects to your V11Y?

On 12/24/2023 at 1:34 AM, Blkfri said:

Secondly, I suspect that there is an issue during the MTU request/negotiation between the watch and the InMotion EUCs. Garmin watches can only support an MTU of 23 bytes, but based on the limited data I have gathered from one of my beta testers, it appears that InMotion EUCs are either unable to support an MTU of 23 bytes or the MTU negotiation fails somehow.

I think this may be a limitation of Garmin watch. When working with Garmin, I found it's BLE stack to be very unreliable and limited. Anyway, finding an old Android phone with Bluetooth 4.0 harware would give answer if the V11 BLE board (which is nRF-based and using Nordic UART service, just like newer Ninebot wheels) supports BLE 4.0 23-byte  only MTU.

Link to comment
Share on other sites

@Seba Yes, EUC World works on a Samsung Galaxy. The logs look good. 

Regarding using Nordic UART, I believe that is what we tried today. @Blkfri thinks it's an issue with the MTU. The watch accepts a max of 23 20 bytes but the wheel sets it at 247 and so some of the data may get truncated. I'm wondering if we created a companion app on the phone that could accept a larger MTU and then forward pared a down dataset/packet to the watch.

 

Edited by uniKevin
Link to comment
Share on other sites

13 hours ago, uniKevin said:

I'm wondering if we created a companion app on the phone that could accept a larger MTU and then forward pared a down dataset/packet to the watch.

Creating companion proxy app that will use Garmin Connect Mobile's HTTP is a solution for many problems, but eliminates what is one of key advantages of @Blkfri's WheelDash - being a standalone app. A standalone app that connects directly do the wheel is a significant advantage in terms of reduced alarm latency and overall reliability. Relying on the phone that may fail at some point (battery discharged, app being killed by the OS etc.) is a limitation of "classic" approach with companion apps.

13 hours ago, uniKevin said:

The watch accepts a max of 23 20 bytes but the wheel sets it at 247 and so some of the data may get truncated.

Still, reading the first 20 bytes of the realtime data frame gives information about voltage, current, speed, torque and PWM/safety margin in V11, V12 and V13. Distance can be obtained from total distance that is sent in another frame, so it's enough to store initial total distance at the connection and then use difference as a trip mileage. Actually the only limitation is that we can't read temperatures, but it's not a big problem. Wheel will provide warnings and finally will tilt back on overtemperature.

Anyway, Inmotion V11, V12 and V13 support is the only problem here. Still, all King Song, Gotway/Begode and Veteran wheels use BLE 4.0 frames with up to 20 bytes of data. 

  • Like 1
Link to comment
Share on other sites

22 hours ago, Seba said:

Anyway, finding an old Android phone with Bluetooth 4.0 harware would give answer if the V11 BLE board (which is nRF-based and using Nordic UART service, just like newer Ninebot wheels) supports BLE 4.0 23-byte  only MTU.

Thanks ! As uniKevin stated, requesting a 23 bytes MTU fails on inmotion eucs (at least on V11 and V11Y). I doubt it will work on other models. So I guess were out of luck for a "complete" inmotion WheelDash support.

5 hours ago, Seba said:

Actually the only limitation is that we can't read temperatures, but it's not a big problem.

Yes you're right, I'll have a to find a new use for that temperature bar in my UI for inmotion eucs :D.

Link to comment
Share on other sites

52 minutes ago, uniKevin said:

@Seba Here is a screen shot of EUC World with the V11Y. Let me know if you want to know/see anything specific. 

Seems like battery level isn't correctly decoded. Please PM me with your EUC World username or email address that is associated with your EUC World account. I will increase a support log verbosity so you'll be able to send me an issue report containing raw V11Y frames for inspection.

Link to comment
Share on other sites

PM sent. I wasn't sure about the board temperature, either. At least, it was showing 200 degrees when I had just turned the wheel on. I haven't noticed them changing, at least. It is about 68F degrees in my garage.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...