Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

VO2 Max and Training Effect not updating #578

Closed
kelaban opened this issue Dec 23, 2023 · 20 comments
Closed

VO2 Max and Training Effect not updating #578

kelaban opened this issue Dec 23, 2023 · 20 comments
Assignees
Milestone

Comments

@kelaban
Copy link

kelaban commented Dec 23, 2023

Describe the bug
In the last week VO2 Max and Training Effect has stopped reporting in Garmin Connect.

To Reproduce
Steps to reproduce the behavior:

  1. Do an activity that would normally qualify (e.g 45 minute Power zone ride)
  2. View Cycling VO2 Max in Garmin

Expected behavior
I have a Fenix 7. Up until this past week the default p2g settings have triggered Garmin to update training load and VO2 Max.

Logs
N/A

Installation (please complete the following information):

  • OS: linux
  • Method: docker
  • Version: 4.0.0

Additional context

As an experiment, I tried re-reporting workouts using my own Fenix 7 device profile which did not fix the issue.

I can confirm all workouts have HR, Power, cadence, and distance data reporting as expected from p2g

@kelaban kelaban added the bug label Dec 23, 2023
@seesomak
Copy link

I just posted a response to another discussion thread about this, but I was wondering why the training effect stopped updating in Garmin for all synced Peloton activities (cycling, strength, etc.) all of a sudden this week. Sounds like it is the exact issue you're facing.

@gbassani
Copy link

gbassani commented Dec 24, 2023

Same experience for me, last activity that worked was on 12/20 for me for cycling. Also no calculated load for the activity.

Edit: Using the docker version, attempted both automatic and manual syncs, default settings. Epix 2 for watch.

Edit2: Also tried using the github sync workflow, still no training effect/load.

@seesomak
Copy link

@mgsimon
Copy link

mgsimon commented Dec 25, 2023

Same issue for me.

VO2 Max, training load and intensity are not calculated anymore. :-(

Main device: Fenix 7 Pro

Latest P2G version / Docker / default device used.

@philosowaffle
Copy link
Owner

Keeping an eye on this, but currently I'm thinking this is an issue on Garmin's side of things.

@seesomak
Copy link

seesomak commented Jan 2, 2024

Someone on the Zwift forums seems to have isolated the issue to the modified device ID causing the issue:

https://forums.zwift.com/t/no-training-effect-in-garmin-connect-for-some-trainings/619745

My rides currently show up as TACX rides when I sync.

@philosowaffle
Copy link
Owner

Historically the TACX Device worked in convincing Garmin that it should generate TE for a given workout. But maybe that has changed? Folks can test out other devices by playing around with the DeviceInfo configuration option in P2G.

If we find one that works I can update the default that P2G uses.

@mgsimon
Copy link

mgsimon commented Jan 2, 2024

Garmin support FAQ

...
Qualifying activities from the following apps can contribute towards your VO2 Max:

Tacx Training™ App | Tacx Training™ Desktop app
Zwift
TrainerRoad
ROUVY
...

@philosowaffle
Copy link
Owner

I don't remember these restrictions being in the documentation before... I wonder if my memory is just bad or if these are new? If they are new requirements, that would explain why things stopped working:

Activities recorded from these apps do not generate a VO2 Max reading by themselves. The activities are post processed using a Garmin device and Garmin Connect to generate a reading. For your VO2 Max to update from a supported fitness app, you must meet these requirements:

The app must be linked to your Garmin Connect account. Tacx apps are linked by default.

Your VO2 Max capable Garmin device must be listed in your Garmin Connect account. This allows the activity recorded from the other app to sync with the device to allow post processing.

Your VO2 Max capable Garmin device must have an activity of the correct activity type saved on it. It is recommended to have a recently recorded activity to provide the most accurate information.

If these requirements are met, Garmin Connect will sync the activity data to your Garmin device. The device will then process this data and if conditions are met, an updated VO2 max reading will be generated. If you are using an Edge device, you must sync your device twice for an updated VO2 Max to display in Garmin Connect.

@seesomak
Copy link

seesomak commented Jan 2, 2024

Progress....

I was trying to troubleshoot this yesterday and saved my last two outputted .fit files onto a shared drive which I happened to have access to today (I'm not my desktop where the github actions are run).

I used fitfiletools.com to change the device for the two .fit files: (1) Manufacturer = Zwift; (2) Manufacturer = TACX, but did not indicate a specific Device. I reuploaded the two activities directly on connect.garmin.com, refreshed my Garmin Connect app, and training effect was processed. When I look at the activity on connect.garmin.com for the TACX import, it shows Tacx App (Windows) Software 1.30, which is the same as when it was imported through the Github action, but maybe not specifying the "Device" itself was the difference?

Edit: I even got a "First Tacx Ride" badge for the manually imported TACX ride.

@philosowaffle
Copy link
Owner

Interesting find. P2G actually does not use the TACX manufacturer ID, but instead the Garmin Manufacturer Id with the TACX Device. So perhaps that is the crux of the issue.

@kelaban
Copy link
Author

kelaban commented Jan 2, 2024

That sounds correct. I just verified steps @seesomak mentions. Using runalyze.com to view the output files here is the difference between P2G uploaded file and a fitfiletools.com modified file.

Original

==
= TYPE=0 NAME=device_info NUMBER=23
--- timestamp=1072289641=2023-12-23T18:14:01Z
--- serial_number=1=1
--- manufacturer=1=garmin
--- garmin_product=20533=20533
--- device_index=0=creator
--- source_type=5=local
--- product_name="TacxTrainingAppWin"
--- software_version=130=1.30
==

Modified

==
= TYPE=0 NAME=device_info NUMBER=23
--- timestamp=1072982998=2023-12-31T18:49:58Z
--- serial_number=1=1
--- manufacturer=89=tacx
--- product=20533=20533
--- device_index=0=creator
--- source_type=5=local
--- product_name="TacxTrainingAppWin"
--- software_version=130=1.30
==

Tacx Manufacturer ID

@kelaban
Copy link
Author

kelaban commented Jan 2, 2024

Following up I was able to fix reporting from P2G by going to Settings -> Conversion -> Advanced and setting the device info to this profile.

<Creator>
  <Name>TacxTrainingAppWin</Name>
  <ManufacturerId>89</ManufacturerId>
  <UnitId>1</UnitId>
  <ProductID>20533</ProductID>
  <Version>
    <VersionMajor>1</VersionMajor>
    <VersionMinor>30</VersionMinor>
    <BuildMajor>0</BuildMajor>
    <BuildMinor>0</BuildMinor>
  </Version>
</Creator>

@philosowaffle
Copy link
Owner

Perfect, let's use that as a temporary workaround until I can apply the needed change to P2G (hopefully in next day or so).

@philosowaffle philosowaffle self-assigned this Jan 2, 2024
@philosowaffle philosowaffle added this to the 4.1.0 milestone Jan 2, 2024
@seesomak
Copy link

seesomak commented Jan 2, 2024

This is a newbie docker question, but does anyone know what "DeviceInfoPath" I should be pointing to when using docker through Synology Container Manager?

I've tried pointing to:

/volume1/docker/p2g/deviceInfo.xml
/app/deviceInfo.xml

Neither seems to process the training effect. If there isn't an easy fix, I will wait for version 4.1.0.

Thanks all!

@philosowaffle
Copy link
Owner

Assuming you're using the WebUI docker image:

  1. Map the volume in the API container (not the UI container). Let's say you're mapping looks like this:
    1. - /volume1/docker/p2g/deviceInfo.xml:/app/deviceInfo.xml
  2. In the WebUI, go to Settings > Conversion > Advanced, now update the device info path to be /app/deviceInfo.xml

@philosowaffle
Copy link
Owner

philosowaffle commented Jan 2, 2024

Just merged the proposed change. Y'all can switch over to the latest tag to get it right away. I have a few more things I want to knock out before releasing 4.1.0 officially.

Thank you everyone for doing the elbow grease to investigate this issue!

@dkostecki
Copy link

Quick observation: I just updated my fork to the latest commit in main, deleted my activities in Garmin Connect and from my Forerunner 955 and then ran the sync workflows action. Looks like the manufacturer was still set to Garmin (1) in the fit file, but changing it manually as @seesomak described seemed to work. Is the intention that one would need to change the DeviceInfo to get this working via actions?

@philosowaffle
Copy link
Owner

The GitHub action does not actually use the code from the repo, it pulls from the published Docker image. So this line needs to be updated to console-latest. console-stable won't get these changes till the next release is officially cut.

@dkostecki
Copy link

The GitHub action does not actually use the code from the repo, it pulls from the published Docker image. So this line needs to be updated to console-latest. console-stable won't get these changes till the next release is officially cut.

Got it, makes sense, thanks @philosowaffle

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants