Course FIT file questions

I'm looking into course FIT files (with fitfileviewer.com) generated by different route planning platforms like Komoot, Garmin Connect and Garmin Explore iOS and I'm seeing some differences that somebody knowledgeable hopefully can explain to me.

- the course message contains a capabilities field. This is usually set to at least processed (0x1) and valid (0x2), but some courses also have navigation (0x200). What do these capabilities mean?

- course points included in a course from Komoot do not seem to contain the message_index field (254). Is this field required, and what is its purpose? Garmin Connect seems to include this field.

- is it needed to add course points for the start and finish locations of the course? Garmin Explore iOS seems to do this, together with the unnamed shaping points, but Connect web doesn't seem to do this. Of course different platforms may do different things, but just wondering what the FIT course file spec says about this.

  • There is not a spec per se.This was based off of a doc written in 2010. The timestamp is required, and the message_index is optional. But it is 2026, and the best practice would be to mimic Connect if you want your file to work with a Garmin device. Having both timestamp and messge_index is not going to have an adverse affect. LMK if you come across an instance that proves me wrong. I would be interested to hear about it.
    https://developer.garmin.com/fit/file-types/course/


    The message_index is just a zero based index, and all messages should either have one or not. It has nothing to do with start and finish points. I assume platforms will fallback to the timestamp if message_index values are not present. The timestamps are a random start time and then incremented by one. So they serve the same purpose. Most platforms probably just assume that the points are written to the file in the correct order and ignore both fields. There are for exceptions to this.