GPS for Linux

Sharing my Linux GPS/HRM tracking setup, as it took a bit of effort - as all things do on Linux.
Posted: Wed 06 Jul, 2016, 17:32

After a typically long period of deliberation, I finally decided to buy myself a
proper GPS tracker for recording my MTB rides. I have had a GPS tracker/mapper
on my phone for some time now, but with the possibility for ranging further a
field on a potential bike-packing trip in future, I did not want to rely on my
mobile phone. I also wanted to get a wireless HRM that would work with the GPS
tracker so that I could understand how hard I was working on my various routes.

TRYWIN D2 - very good (except for me..)

First of all, I bought a TRYWIN
from Amazon as it had all the features I
needed. GPS, speed, altitude and ANT+ support to connect to a remote HRM
monitor. At the price of ?30 it was extremely well priced. I have to
confess it worked perfectly and it was with great reluctance that I decided to
send it back as there was no support for the file formats produced. The files
produced were binary and had the suffix .cpw, for which I could find no
documentation. There was a Windows CD provided, but I do not run a Windows

Garmin and Mio HRM

So I bought a Garmin Edge
along with a Mio Link HRM. So
far, I have been very impressed with both devices. I went out on my MTB this
morning and tracked the route on the Garmin. When I got back to my computer I
attached the Garmin using the USB and was able to browse about the directories -
no problems there. The Garmin produces
.FIT files that are binary files held
within an ACTIVITIES directory.

The ANT+ feature works perfectly and allows the Garmin to capture and display
your HR, which is then stored along with your other data.

FIT to gpx with gpsbabel

So, in order to use GPX viewer of choice, I wanted to convert the FIT file to
gpx so gpsbabel seemed like the obvious choice on Linux. It was with a fair
degree of disappointment that I discovered this was not going to be possible. I
even wrote a script to take care of it:


    gpxfile=`echo $fitfile | sed "s/FIT/gpx/"`

    if [[ $fitfile == "" ]]; then
      echo "Must provide a fit file"
      exit -1

    gpsbabel -t -i garmin_fit -f ${fitfile} -o gpx 

But alas gpsbabel returned the following error:

    Definition message reserved bits not zero 

After searching on the internet, there did not appear to be an easy fix for me.
Also, for a tool that pitches itself as the primary tool this job, I was just
surprised that it does not work for Garmin files - it is a very popular GPS
format. Also, when I looked at compiling the latest I discovered they require a
newer from of QT library that I had, which also concerned me, because as a
command line tool, QT should be unnecessary.

Enter TurtleSport

So after a bit more searching, I found
TurtleSport which is a Linux
friendly application for allowing you to view your GPS/Fitness data. I am
pleased to say it is excellent and as it is written in Java, it works without
any issues (i.e. no complex library dependencies). It is able to read the
native .FIT file format and then will save it out as .GPX without any problems.

Here is a screenshot of the report for my MTB route today.


So I can now record my MTB rides, with HRM data and save them to GPX, all on
Linux. This means I can actually keep a track on my exercise hopefully get
myself fit enough to the my planned bikepacking trip. Awesome, and all thanks
to TurtleSport.