This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Road Bike Activites are stored as plain Bike activities

I was using a FR735 previously which had 3 different bike activities:
Bike, Road Bike and MTB.

Now I "upgraded" to the FR935 and there's only the Bike activity and MTB.
I tried to copy the "Bike" activity and renamed it to "Road Bike" - but the outcome is that activities in Garmin Connect will always have "Bike" and not "Road Bike".
Same if I create a "Other" activity + rename to "Road Bike".

Please note that I have the german version - and the activity is called "Radfahren" and should be "Rennradfahren" - so might be that my translation above is not 100% accurate.

Anyone who could help out here and give me a hint what I am doing wrong?

Thanks
  • Hello. I tried to follow your steps to change the watch type. The numeric value is 2503 which translates to 9C7 in hex. I could not figure out how to search for that instance with the Hex Fiend app. Any ideas on how to search for that string. Thank you.

  • Groups of bytes in FIT files are reversed ("little-endian"), so you want to search for C7 09.

    Having said that, I'm not sure if changing the watch type will work. For example, I changed the serial number of my custom road cycling activity to "1" (in order to avoid sharing my serial number), but when I copy the activity to the watch, it repopulates the serial number field anyway.

    ^ I'm assuming you're talking about an activity profile.

    However, if you're talking about an activity, then I think changing the watch type would work. Might be easier to just use the "device changer" in the FIT file tools website:

    https://www.fitfiletools.com/#/top

    Once you do that, you could compare the original and new FIT file (and the original and new CSV files) to see how the change was made.

  • Thanks. That site has not added the legacy watches yet so I was trying to change the watch type with a hex editor. So if I want to change a fr35 which is hex 33 35 30 31, I would search for 31 30 35 33.

  • I don't think so, as the device type is two bytes, not 4. You can kind of tell by looking at the product ID in the raw FIT data, but if you look at profile.xlsx in the FIT SDK, it's spelled out:

    garmin_product uint16

    (uint16 means unsigned 16-bit integer. 16 bits / (8 bits per byte) = 2 bytes.)

    FIT file tools only has options for fr35_japan, fr35_korea, fr35_apac, and fr35_hebrew, but when I chose fr35_hebrew and converted one of my activities, the device ID was 2650. (That's also what profile.xlsx has for fr35_hebrew)

    I'm not sure where you got: 33 35 30 31

    Are you converting each of the digits of the desired product ID as ASCII, to hex? e.g.

    0x33 = "3"

    0x35 = "5"

    0x30 = "0"

    0x31 = "1"

    3501? (I don't see it in profile.xlsx, but then again, profile.xlsx only has the four FR35s listed above and not whatever the "worldwide" FR35 is supposed to be, unless fr35_hebrew is worldwide.)

    You don't convert each of the individual digits (as ASCII characters) to hex, you convert 3501 as a decimal number to hex.

    e.g. 3501 in hex = 0xDAD = 0D AD (written as 2 bytes) => AD 0D after reversing the bytes

  • Thanks. I was trying to add a Legacy watch which the Avenger watch id is 3501. I was trying to use the FitCSVTools but it was exporting the .fit file with data fields labeled as unknown. I figured using a hex editor on the original file was easier than parsing through a .csv file.

  • Okay, but are you trying to edit an activity or an activity profile? As mentioned above, I think editing the device ID will work for an activity, but probably not for an activity profile.

    In your case, 3501 is the new device ID, not the original ID.

    If I were changing the device ID of an activity FIT file by hand (which I probably wouldn't want to do too many times), I would:

    1) Convert it to CSV to find the existing product ID (e.g. FR935 = 2691)

    2) Convert that product ID to hex (2691 = 0X0A83), reverse the bytes (83 0A) and search near the beginning of the file for this hex value.

    3) Replace the existing product ID with the new one

    4) Recalculate the FIT CRC and edit the FIT file's CRC to match

    5) Convert to CSV again, to make sure changes were made properly. (i.e. the only thing that should be different is the device ID)

    The other thing is that for activity FIT files, the device ID appears in multiple places. I count 19 total instances of "garmin_product" in one activity file. You probably wouldn't have to change all of these instances, but maybe you'd have to change more than one? Or maybe changing the first one would be sufficient? I honestly have no idea. (For what it's worth, FIT File Tools changes every instance of "garmin_product", based on the test I just did.)

    IMO that's a lot of trouble just to change the device type, especially if you have to do it for every activity. It might be easier to just to contact the owner of FIT File Tools and ask them to add 3501. But then again who's to say that Strava (or whoever) even has that device ID on file? It's def not in the latest FIT SDK profile.xlsx, as far as I can tell.

    EDIT: I do see that 3501 is part of the Connect IQ SDK part number for the first avenger watch. I wonder what Strava uses for its source of known devices.

  • Thanks. I think I got it. I was able to change all the FR235 instances to 3501. I changed the CRC value and read the file into the FitFileViewer. Everything seems to be okay except there is an additional Garmin product labeled 1689 which is not in the Profile spreadsheet either. Adding the legacy watches is in a future build for the SDK folks. Because the SDK does recognize all the output fields from a .fit file, it puts the label "unknown" in fields it does not know about. Because of that, you cannot convert csv file back to a fit file. I asked about this earlier today with them. I really appreciate the help on this. You have made this endeavor much easier. My next step is to export/delete and then reimport the event with the new watch information.

  • Because the SDK does recognize all the output fields from a .fit file, it puts the label "unknown" in fields it does not know about. Because of that, you cannot convert csv file back to a fit file.

    Yep, that's correct. In theory it would be pretty straightforward for a motivated dev to write a FIT to CSV (or JSON) (and vice versa) conversion tool that could work bidirectionally.

    I really appreciate the help on this. You have made this endeavor much easier.

    No worries!

  • Just out of curiosity, are you trying to get a "First Avenger" badge for Garmin Connect or something?

  • I was trying to get her the badge for International Women’s Day and with your help she got it.