Acknowledged
CIQQA-3459

bug: no way to set elevation unit on vivoactive 5

This probably should also be reported in the vivoactive 5 forum, but since that's not monitored by Garmin employees, I'll try here.

A user of one of my apps reported that they can't change the elevation unit from feet to meters. I told them to do it in the system settings (my app uses DeviceSettings.elevationUnits). But it turns out that Garmin left that possibility out from vivoactive 5.

The only settings (both on-watch and via Garmin Connect) are:
distance, weight, height, temperature, pressure.

Note, it's not a mistake, it's height, with cm or inches, and not elevation or altitude that's supposed to be meters or feet.

This is vivoactive 5 with FW version 14.15

Yes, there's no barometer in va5, but it doesn't matter, because the watch displays the correct elevation based on GPS, just in feet.

See also: https://forums.garmin.com/sports-fitness/healthandwellness/f/vivoactive-5-series/418980/bug-no-way-to-set-elevation-unit-on-vivoactive-5

  • >  Yes, there's no barometer in va5, but it doesn't matter, because the watch displays the correct elevation based on GPS, just in feet.

    Circling back to this.

    So the entire bug report is based on the fact that you thought GPS elevation is actually accurate in general, because you thought it happened to be correct in one case, except that the value returned by ActivityInfo.altitude was in feet (although it's documented as metres). This is despite the fact that it's well known that the ActivityInfo fields don't change their units for any reason (except for ActivityInfo.*cadence, which switches between steps per minute and rpm based on whether the activity is running or cycling :/, leading to various "half cadence" bugs over the years)

    So you thought that for 10+ years, Garmin had been hiding elevation data on baro-less watches and applying elevation corrections in Connect for no reason, and that you're the first person to discover this?

    But now that you realized on your own that GPS elevation is not accurate (even though Garmin and everyone else has been trying to tell you that), it's all good I guess.

  • "the difference in not caused by wrong unit!"

    You are literally the only person who suggested that this might be the case

  • which means that the elevation displayed in GC disregards the values the watch "gives" to CIQ apps.

    Yeah this is exactly what was already said:

    "This is why when an activity is synced to GC on a device without a baro, elevation correction is applied by default."

    > because the watch displays the correct elevation based on GPS, just in feet.

    > > Note: 24m ~ 78ft, so the difference in not caused by wrong unit!

    After reading your comment,  I think I finally understand what you meant by: "because the watch displays the correct elevation based on GPS, just in feet"

    1) DeviceSettings.elevationUnits was always metres

    2) you originally thought that the device was returning the *real* elevation in feet, despite 1), due to the fact that your true elevation was 23m, but the altitude field in ActivityInfo seemed to be returning 23m in feet (~76)

    First of all, that was not at all clear from your original post.

    What you should have said was that ActivityInfo.altitude has the correct elevation, just in feet, even though the documentation says it's in meters and DeviceSettings.elevationUnits is in metres.

    Second of all, you should know by now that the values of fields in ActivityInfo are never affected by the display units of the watch. So actually, the value of DeviceSettings.elevationUnits is irrelevant here.

    For example, ActivityInfo.currentSpeed is always in m/s, regardless of the display units for pace/speed.

    I will also say that it's irrelevant whether ActivityInfo.altitude returns the "real" elevation or not, in some isolated cases.

    What's important is that, for devices without a baro, GPS elevation is known to be unreliable, which is why Garmin hides all the elevation data on the watch itself and applies auto-correction in Connect.

    It's that simple fact which explains why there is "no way to set elevation unit on vivoactive 5".

    We already tried to explain that to you, but I don't think you listened.

    Idk, I feel like this entire bug report is based on 1 or 2 weird assumptions.

  • Note it's enhanced altitude (which I would've guessed means the auto corrected one),

    The "enhancedX" fields in the FIT file (enhanced_altitude, enhanced_speed, etc.) are simply a way to store more significant figures than the corresponding "basic" fields.

    For example, "basic" speed is16 bits, but enhanced_speed is 32 bits.

    See: https://www.thisisant.com/forum/viewthread/4561 

    Not sure how you would expect auto-corrected altitude to be in the FIT file, since the FIT is generated by the watch (and is not modified by Connect), but altitude auto-correction is done in Connect.

    So the 24m we see in GC is the auto correction (which BTW can't be turned off on this activity because it was recorded on fr55. On fr965 there's a way to disable it)

    I think everyone was already trying to tell you that for devices without a baro:

    1) everything related to elevation is hidden on the watch itself, although GPS elevation is still available to CIQ apps and it's still recorded to the FIT file. Again, afaik, there are no native elevation fields or glances on 

    2) elevation in Connect is auto-corrected. (it's not equal to the GPS elevation values recorded by the device)

    Because of 1), it makes sense for Garmin to omit the elevation units setting for devices without a baro.

    (Recall that Garmin doesn't really care about Connect IQ. And even if they did, it would look very strange for a device to have zero built-in elevation-related features, but to still expose an elevation units setting that would only be used for CIQ apps that do expose GPS elevation, which is otherwise hidden from the user)

    Glad you were able to verify this stuff for yourself tho.

    > However this proves that both ActivityInfo.altitude and DeviceSettings.elevationUnits return actual values.

    Nobody said otherwise. What was said is that native UI for watches without a baro does not expose elevation, so as far as the end user is concerned, it doesn't exist.

    You really haven't discovered or proven anything that wasn't already known.

    And I was wrong! The fit file does include the GPS "enhanced altitude":

    Nobody said otherwise

  • I did a test on a real fr55 (also without baro). Interesting results.

    I started a Walk activity with my Hiker DF on it. I waited for the GPS to become green, then started the activity. It displayed my elevation as 104m. It is incorrect, my actual elevation was 23m. However this proves that both ActivityInfo.altitude and DeviceSettings.elevationUnits return actual values.

    I saved the activity, and looked in Garmin Connect, where interestingly there was an elevation graph, and it showed 24m (which is very close to the actual 23m) which means that the elevation displayed in GC disregards the values the watch "gives" to CIQ apps.

    I looked at the fit file in fitfileviewer.com and it's even more interesting, because the same thing I see in device settings is also recorded in the fit file:

    User Profile: elev setting: metric

    And I was wrong! The fit file does include the GPS "enhanced altitude": 105.0, 104.8. Note it's enhanced altitude (which I would've guessed means the auto corrected one), but it actually has the values I saw on the device screen from ActivityInfo.altitude. So the 24m we see in GC is the auto correction (which BTW can't be turned off on this activity because it was recorded on fr55. On fr965 there's a way to disable it)

    Note: 24m ~ 78ft, so the difference in not caused by wrong unit!