Skip to content

[FIT File Issue]: Coros Dura FIT files upload successfully but no gear assigned in Garmin Connect #80

Description

@nothingshocking

FIT File Upload

i143723345.zip Zip file contains sample Coros generated .fit file and the modified version created by running the fit-file-faker script.

Prerequisites

  • I have attached the original FIT file that fails to be recognized by Garmin Connect
  • I have searched existing issues to avoid creating a duplicate

Source Platform

COROS

Other Platform (if applicable)

No response

Problem Description

When processing FIT files from a Coros Dura, the activity uploads to Garmin Connect successfully but no gear is assigned. Inspecting the original and modified files shows that Fit-File-Faker successfully rewrites the file_id record but only partially rewrites device_info the product and product_name fields are never updated, leaving Coros branding intact. Garmin Connect uses device_info for gear association, so nothing gets assigned.
For comparison, files from a Hammerhead Karoo 2 process correctly and show the expected Garmin device in Garmin Connect.
Original vs Modified device_info:
[file_id]
manufacturer: 294 → garmin ✅ rewritten correctly
garmin_product: → 3122 ✅ rewritten correctly

[device_info]
manufacturer: 294 → garmin ✅ partially rewritten
product_name: COROS DURA ❌ NOT rewritten (parser aborted)
← FitParseError: Invalid field size 1 for type 'uint32' (expected a multiple of 4)

Command Used

fit-file-faker i143723345.fit --upload

Error Output (if any)

No errors or warnings during processing. The only warning is the expected HTTP 409 conflict on re-upload because this activity was previously uploaded: 
INFO     Processing "i143723345.fit"
INFO     Activity timestamp is "2026-04-26T12:25:37"
INFO     Saving modified data to "i143723345_modified.fit"
INFO     Uploading "i143723345_modified.fit" using garth
WARNING  ❌ Received HTTP conflict (activity already exists)

The root cause looks to be a silent parse failure inside device_info. The Coros Dura writes a non-standard field with an invalid size for its declared type (uint32 with size 1 instead of 4), causing the parser to abort mid-record without surfacing an error.

fit-file-faker Version

2.1.5 (released 2026-04-26)

Operating System

Windows

Additional Context

Source device: Coros Dura
Target device config: Garmin Edge 830
Attached: i143723345.fit (original) and i143723345_modified.fit (Fit-File-Faker output) for direct comparison

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingfit-fileHaving to do with FIT files somehow

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions