Complete

CIQQA-42

Connect IQ ANT apps are very weak / not usable compared to Garmin ANT native apps

I have a NRF52840 board where I did implement the firmware for ANT+ LEV (EBike) and that Garmin Edge firmware supports natively. This works perfectly and I am being using it since a few months ago, me and other users of our wireless EBike motor.

Now I decided to send and show on Edge data fields, the custom data from our motor that ANT+ LEV profile does not support. I did implement ANT generic channels after reading other users message for what should be done for data fields and I had as reference the many source code available on Github for data fields using ANT generic channels.

Having both ANT+ LEV and ANT generic channel working together, I had a big deception after testing and I found:

 ANT+ LEV data fields that are natively from Garmin works perfectly (connects quick in 1 or 3 seconds and never drops)

-  ANT generic data fields using CIQ are very weak / not usable (take up like 1 minute or more or simple do not connect, and drops randomly).

I took many days to verify and tweak the generic data fields using CIQ, after reading the suggestions done to others on this forum about ANT generic channel and/or data fields.

My final conclusion is that probably Garmin is providing the necessary power for their natively apps but reducing heavily for ANT CIQ apps, resulting in not usable ANT CIQ apps!!

Note that I tested with my Edge 830 and Fenix 6 Pro. I also used the simulator and there the ANT generic channel data fields connects quick and never drops.

My source code: https://github.com/OpenSourceEBike/TSDZ2_wireless/tree/6d3a77b7b6d7239bb789756932e7a41d7268a0c0/EBike_wireless_Garmin/source

And the firmware: https://github.com/OpenSourceEBike/TSDZ2_wireless/blob/6d3a77b7b6d7239bb789756932e7a41d7268a0c0/EBike_wireless_TSDZ2/firmware/main.c

I am developing technology for EBikes, to give the motors wireless communications and the project is OpenSource here: https://opensourceebike.github.io/ 

Parents
  • Thank you - I will test all this but:

    1. The ANT communication is for sending data for Garmin data fields that only update one per second (1 Hz) so I am using the period of 16384 that gives 2 Hz and ideally I do not want faster to save the battery power of the Garmin Edge.

    4. Yes, I am using ANT Public Network (NETWORK_PUBLIC) because I am not implementing ANT+ LEV. To be clear, I already have ANT+ LEV implemented and the Garmin Edge works very well with it but in parallel I need to communicate with data fields and Garmin says I need to use a unique ANT channel for each data field - I am trying to use 14 ANT channels for 14 data fields (yes, but then user will only be able to use 10, this is a limitation of Edge).

Comment
  • Thank you - I will test all this but:

    1. The ANT communication is for sending data for Garmin data fields that only update one per second (1 Hz) so I am using the period of 16384 that gives 2 Hz and ideally I do not want faster to save the battery power of the Garmin Edge.

    4. Yes, I am using ANT Public Network (NETWORK_PUBLIC) because I am not implementing ANT+ LEV. To be clear, I already have ANT+ LEV implemented and the Garmin Edge works very well with it but in parallel I need to communicate with data fields and Garmin says I need to use a unique ANT channel for each data field - I am trying to use 14 ANT channels for 14 data fields (yes, but then user will only be able to use 10, this is a limitation of Edge).

Children
  • Thanks and I would like some clarification:

    I highly recommend you to implement the proper ANT+ LEV profile and use the ANT+ network key. This will allow your app's channel searching to be "shared" with the searching the Edge will do internally for ANT+ sensors. If you use the Public Network key, then your apps channel search will be impacted as it will have to share the radio with the other non-Public network searches on the Edge.

    So I understand there are advantages to use ANT+ LEV instead and that may help to reduce the issues I have.

    You could try ensuring that all of your sensors paired natively to the Edge are connected / disabled / unpaired before entering the activity. This should allow your data field to not have to share searching with what the Edge will do natively. 

    So, if I go with ANT+ LEV for my data field, what should I do to the ANT+ LEV that will be detected by the Edge? keep it enabled or disable?

    If ANT+ LEV is the best way to go, then I will extend / add extra pages to send my custom motor data, that Garmin should ignore as it not part of the standard but I will receive that pages on my data field - I hope this is a good plan.

    1. Battery life impact of a 4Hz vs 2Hz ANT channel is likely negligible for your use case.  ANT is an ultra low power protocol.  Using the faster channel period will align with what is required by the ANT+ LEV profile and will improve search times + timeliness of updated data from the LEV.  If you stick with the Public network, you could even increase the channel period even higher to further speed up search acquisition.
    2. I highly recommend you to implement the proper ANT+ LEV profile and use the ANT+ network key.  This will allow your app's channel searching to be "shared" with the searching the Edge will do internally for ANT+ sensors. If you use the Public Network key, then your apps channel search will be impacted as it will have to share the radio with the other non-Public network searches on the Edge.  You could try ensuring that all of your sensors paired natively to the Edge are connected / disabled / unpaired before entering the activity.  This should allow your data field to not have to share searching with what the Edge will do natively. 

      Another thing to mention is that if you go the ANT+ LEV route (instead of using the Public network key) your app and firmware will need to be ANT+ Certified to ensure they remain interoperable with other ANT+ LEV devices.