Stryd Power and Native Garmin Power

I'm told that in the past, Stryd Running Power was stored as native power data in the activity FIT file and accessible to CIQ apps using the standard "currentPower" and "averagePower" elements in the Activity.Info structure. Users tell me, when Garmin introduced watches with built in running power, CIQ apps could no longer see Stryd Running Power from Activity.Info. I don't have a Stryd sensor, so I don't know if those two claims are true.

Can anyone confirm that CIQ apps can't access Stryd power using Activity. Info?

If that is true, and I want to see Stryd power data, do I need need to setup a private Stryd sensor pairing from my CIQ app?

And if my app is connected to the sensor, then the Stryd data fields would not be able to concurrently see the Stryd data?

I do know that my Forerunner 955 has built in running power, but it took a couple of years before Garmin fixed it so CIQ apps could access built-in Running Power from our CIQ apps using Activity.Info. My FR955 is now running SDK/CIQ 5.1.

Do you know which Garmin Watches support native/built-in Running Power *AND* allow that running power to be accessed from a CIQ app. 

Garmin published a list of watches with built-in running power here. But I don't know if all these were fixed to allow CIQ to access the data.

https://support.garmin.com/en-US/?faq=bEu4VJxddU2ZcgFgDyifp7&searchQuery=running%20power

Thanks!

  • Garmin published a list of watches with built-in running power here. But I don't know if all these were fixed to allow CIQ to access the data.

    Do you not see this connection between this and:

    "Users tell me, when Garmin introduced watches with built in running power, CIQ apps could no longer see Stryd Running Power from Activity.Info."

    The reason Stryd power is no longer accessible via ActivityInfo.currentPower/averagePower/maxPower is because those fields are now used for built-in (native) running power, in run mode.

    The important thing to understand is Garmin doesn't use running power from any non-Garmin source.

    Even if you select "Accessory Only" as the running power source, it will only use Garmin accessories. I think there's some confusion amongst end users on this point, as I see people in the forums insisting that it makes a difference how Garmin running power is configured when they use their Stryd. No, it doesn't (not to Stryd Zones / the Stryd phone app / Stryd PowerCenter). The only difference is that if you enable Garmin running power, it will be used by 3rd party sites like Strava, regardless of whether Stryd power is present, which is why it actually makes sense to disable Garmin running power if you are using Stryd. But the people who think Garmin running power settings matter for Stryd typically enable Garmin running power and select "Accessory Only" as the source.


    TL;DR

    - As far Garmin is concerned, running power from Stryd (or any other 3rd party) is completely ignored. There is nothing you can do to get native Garmin running power features to use Stryd power.

    - Accessing Stryd power in CIQ data fields:

    -- If you want to access Stryd power in a Connect IQ data field, yes, you will have to make the connection yourself via the Ant.GenericChannel class (not AntPlus). You will connect to the Stryd and read data as if the Stryd was a bike power meter. This will not interfere with the Stryd Zones data field, as it uses its own proprietary ANT+ profile for reading Stryd data. It does mean that the Stryd cannot be paired natively as a (bike) power meter, or your data field won't work.

    -- In the past, in run mode, Connect IQ data fields could read Stryd power using ActivityInfo.currentPower/averagePower/maxPower, with the Stryd paired natively as a (bike) power meter, as you said. This doesn't work anymore due to the next point. You should still be able to read Stryd power in bike mode, using ActivityInfo.*Power, but that's fairly useless.

    -- Any CIQ data field which used to use ActivityInfo.currentPower/etc to access power from a Stryd natively paired as a bike power meter can no longer do so.

    Any CIQ data field which used a direct connection to the Stryd via Ant.GenericalChannel still works

    - Accessing native Garmin power in CIQ data fields:

    In run mode, CIQ data fields can simply access ActivityInfo.currentPower/etc.


    Details:

    I think we have already discussed some of this stuff before, but here goes again.

    - The Stryd sensor basically has 3 "modes" of operation which can all work at the same time:

    1) Stryd can be used as a standard ANT+ foot pod, including pairing via the native sensors menu

    2) Stryd can be used as a standard ANT+ bike power meter [*], including pairing via the native sensors menu

    3) Stryd has its own proprietary ANT+ profile, which only works with the Stryd CIQ apps, like the Stryd Zones data field. If you knew their protocol (or could somehow figure it out), you would be able to use this mode too, but you'd be preventing the official Stryd data field from working. I don't think anyone other than Stryd uses this.

    Again I will emphasize that all 3 of these modes can work at the same time.

    You can pair your Stryd as a foot pod (natively), bike power meter (natively) *and* via the Stryd Zones data field, all at the same time.

    I think the purpose of 1) and 3) is pretty obvious. I think the purpose of 2) is basically a convenience or bonus - it allows 3rd-party CIQ data fields to see Stryd power in run mode.

    With regards to running power in native activities and/or Connect IQ data fields...

    ...here's how it used to work:

    - there was no built-in running power in Garmin watches

    - running activities didn't even expose native power-related data fields

    - for running activities, if a Connect IQ data field accessed ActivityInfo.currentPower, averagePower, or maxPower, those fields would be populated from a natively paired bike power meter (including Stryd, which presents itself as a bike power meter)

    - CIQ data fields could access Stryd power either through ActivityInfo.*Power (with the Stryd natively paired as a bike power meter), or by making their own connection via Ant.GenericChannel

    ...here's how it works now:

    - Garmin watches have built-in running power

    - running activities do expose native power-related data fields, but they're only for native running power

    - for running activities, if a Connect IQ data field accesses ActivityInfo.currentPower, averagePower, or maxPower, those fields are populated with built-in running power, and never data from a natively paired bike power meter

    - CIQ data fields can only access Stryd power by making their own connection via Ant.GenericChannel

    ---

    [*] before you say that there should be no difference between a bike power meter and a running power meter as far as ANT+ is concerned, because "power is just watts", I will make the same points from the last time you said that:

    - the standard ANT+ profile for power meters specifically talks about bikes and has fields other than power that only make sense for bikes. The title of the profile is literally "Bicycle Power" and the logo is someone riding a bike.

    - the ANT+ Android SDK (for example) refers specifically to bike power

    - there is no standard ANT+ profile for running power

    - bike power (for the most part) is measured, while running power is always calculated

    - there is no single scientifically accepted definition of running power

    - different vendors have slightly different definitions / measurement methods for running power. they all produce different numbers

    - the fact that ActivityInfo.*Power now only reflects Stryd power in bike mode and not run mode kinda proves my point that ANT+ power meters are supposed to be bike power meters

  • Ofc, if your data field will directly connect to Stryd (as a bike power meter), your data field needs a way to determine the ANT+ ID to connect to:

    1) you can add a setting for the user to type in their Stryd's ANT+ ID. (If no ID / 0 is entered, you can either disable the connection, or just try to connect to the nearest bike power meter)

    You will notice that pretty much any established CIQ data field which still works for Stryd will have a setting to enter the ANT+ ID.

    Newer fields which only support CIQ 5.1.0 might use the following method instead of (or in addition to) to having a setting.

    2) you can use the new CIQ 5.1.0 feature which allows CIQ data fields to participate in the native sensor pairing process. This doesn't mean the sensor will be paired natively (in a way that blocks your app from talking to it), it just means that it will use the same UI for pairing as native sensors

    [https://developer.garmin.com/connect-iq/core-topics/pairing-wireless-devices/]

    --

    The disadvantage of not using 2) is  on newer watches, your data field will trigger an annoying security warning about using an open connection, even when you simply scroll to it when editing a data page and selecting from the list of CIQ fields. Hopefully that warning will be avoided if you use 2).

    So it might be a good idea to use 2) for watches that support it. 

  • Shorter answers to your questions:

    Can anyone confirm that CIQ apps can't access Stryd power using Activity. Info?

    Correct. CIQ data fields cannot access Stryd Power using Activity.Info fields currentPower, averagePower and maxPower.

    The reason are:

    - [for running activities] the Activity.Info.*Power fields are now used for built-in running power and nothing else 

    - built-in running power never uses power from any non-Garmin source, including Stryd

    I feel like the connection should've been obvious from this:

    "Users tell me, when Garmin introduced watches with built in running power, CIQ apps could no longer see Stryd Running Power from Activity.Info"

    If that is true, and I want to see Stryd power data, do I need need to setup a private Stryd sensor pairing from my CIQ app?

    Yes. Your data field needs to talk to the Stryd sensor as if it was a standard ANT+ bike power meter, using the Ant.GenericChannel class to make the connection directly (not via native sensor pairing). You also have to tell your users *not* to pair the Stryd as a bike power meter, in the native Sensors menu.

    --

    This is actually not so different than how it worked in the past, when some apps would look at Activity.Info.*Power for Stryd data, except:

    - the user themselves would pair the Stryd as a standard ANT+ bike power meter, in the native Sensors menu

    - the watch itself would populate Activity.Info.*Power with bike power

    From the POV of the Stryd sensor itself, there's no difference. It doesn't really care whether your app makes a direct connection or whether the watch's firmware makes the connection. Either way it's using the ANT+ bike power profile to deliver power data.

    Besides, even some older apps would make a direct connection to the Stryd sensor (as a bike power meter) anyway. This was useful to support watches which did *not* support bike power, as it wasn't possible to use ActivityInfo.*Power in that case.

    And if my app is connected to the sensor, then the Stryd data fields would not be able to concurrently see the Stryd data?

    Incorrect.

    Stryd data fields talk to Stryd using a proprietary ANT+ profile (not the standard ANT+ bike power profile), so your CIQ data field will not interfere with the Stryd Zones data field.

    Stryd can deliver data in 3 different ways, all at the same time:

    - as a standard ANT+ foot pod 

    - as a standard ANT+ bike power meter [for your app]

    - via proprietary Stryd ANT+ profile [for Stryd apps, like Stryd Zones]

    Do you know which Garmin Watches support native/built-in Running Power *AND* allow that running power to be accessed from a CIQ app. 

    It should be all of the "currently supported" watches now [whichever ones were still getting non-bugfix updates last year, which is around the time that ppl reported these changes]. e.g. FR255, FR955, Fenix 7 and newer watches

    Again, the fact that a watch doesn't show Stryd power in Activity.Info is directly related to the fact that it does show native running power in ActivityInfo. (Both of those things only apply to running activities, of course.)

    If Activity.Info.currentPower used to show power from Stryd, it surely can't be a coincidence that it stopped doing so around or after the time that native running power was introduced. The question should be: what does currentPower show now if it doesn't show power from Stryd anymore? Seems like it's should be super obvious it can only be native running power. What else would it be?

    Or if it's not obvious, then it's still strange that the question was not explicitly asked.