Flexible and Interoperable Data Transfer (FIT) Activity file (garmin_fit)

This format can...

  • write waypoints

  • read and write tracks

This format has the following options: allpoints, recoverymode .

GPSBabel supports reading and writing of tracks in the .fit format used by products based on the Garmin ANT+ protocol.

As in case of Garmin Training Center, FIT files contain courses with laps etc. which don't exactly match GPSBabel's waypoints, tracks, and routes. An attempt is made to extract and transform data than can be handled by GPSBabel like heart rate etc. and conversion from waypoints to course points and vice versa. Note that routes are not handled, so they should be transformed to tracks first before converting to FIT. Also, track segments are not supported, so all segments in a track get concatenated and written as a single continuous track without gaps.

When writing a FIT file, waypoints are converted to course points by inserting them at the nearest location in the track/course. By default, generic course points are written unless the waypoint name contains one of the following words in which case course points of type left/right are emitted:

left, links, gauche, izquierda, sinistra
right, rechts, droit, derecha, destro

FIT courses typically contain speed information. If the original track contains neither speed information nor timestamps which may be used to derive the speed, a speed of 10 km/h is assumed and assigned to the course.

allpoints option

Read all points even if latitude or longitude is missing.

This option specifies that all points in the input .fit-file should be read. The default behavior is otherwise to skip points without gps coordinates. This is especially useful for devices that do not contain a gps, e.g., Garmin Vivosmart HR.

recoverymode option

Attempt to recovery data from corrupt file.

In the default mode the reader will issue a fatal error if it encounters indications of a corrupt file. These indications include:

  • a bad Header or File CRC

  • a bad endian field

  • an attempt to use a message type that hasn't been previously defined

  • an attempt to read when the data section doesn't have sufficient data

  • an attempt to read past the end of file

In recovery mode if we encounter a CRC error we will ignore it. If we encounter one of the other errors we will abort read processing and continue. This allows any writer to use data that was recovered previous to the read abort.