Skip to content

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

@nothingshocking

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

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