Getting Data from a Garmin FR610 ################################ :title: Getting Data from a Garmin FR610 :date: 2015-02-05 :category: Software :tags: programming, python, running :slug: getting-data-from-a-garmin-fr610 :related_posts: :author: Chris Ramsay :status: published :language: en :show_source: True .. role:: highlight(code) :language: sh .. contents:: The Problem ----------- .. PELICAN_BEGIN_SUMMARY Since getting a Garmin Forerunner 610 I have been largely satisfied with the various aspects of getting the data from the said watch on to the Internet. It is a multi stage process, each with risks and issues very much dependent on non functional qualities, such as network and USB resilience, usability and so on. To give an example, I get the data from my watch using a `USB ANT+ stick`_, Mac computer, Garmin's Express software, `Garmin Connect online`_ service and finally, `Strava`_ via Strava's linked account capability. That's a lot of steps, and a lot of potential failures lying in wait. I am not going to get into my rather low estimation of both Garmin's Connect service and Express software; needless to say, I think they are both rather substandard at the moment. .. PELICAN_END_SUMMARY Now the usual method of getting data from the watch is a trivial affair when everything just works: wake up the Mac, plug in the ANT stick, fire up Garmin Express and put the watch within the vicinity. Just recently I had noticed that the occasional run session would not upload to the computer. The transfer progress bar would appear on the watch and then disappear almost immediately with the Garmin Express software announcing that the latest workout was uploaded to Garmin Connect. A small amount of research will tell you that, whilst Garmin gear is great when it works, there is frustratingly little in the way of support or information when things go wrong. A Solution ---------- Bear in mind (in case it's not obvious) that this article is written in the context of someone who is using a Unix / Linux based operating system. If you are running Windows then I am sorry - you have my sympathy. In the somewhat unlikely event that things are going wrong, and all you want to do is get the data off that damn watch, there is a solution to your woes. Bear with me, however, there's going to be some command line work involved... So, first things first, fire up a terminal session. Go ahead and make yourself a directory to do all the work in: .. code-block:: sh $ mkdir ~/Documents/garmin $ cd ~/Documents/garmin Now get the software you are going to need to get the job done - this involves downloading (cloning) some code from `Github`_: .. code-block:: sh $ git clone https://github.com/Tigge/openant.git $ cd openant $ sudo python setup.py install $ cd .. `openant`_ is a library that is a dependency for the `Garmin Forerunner Extractor`_ software. Below, you can see how you clone the code, install it and make it executable. .. code-block:: sh $ git clone https://github.com/Tigge/Garmin-Forerunner-610-Extractor.git GFR610 $ cd GFR610 $ sudo python setup.py install $ chmod u+x antfs-cli.py Now just run it as a test it to make sure that it works: .. code-block:: sh $ ./antfs-cli.py --help usage: antfs-cli.py [-h] [--upload] [--debug] [--pair] [-a] Extracts FIT files from ANT-FS based sport watches. optional arguments: -h, --help show this help message and exit --upload enable uploading --debug enable debug --pair force pairing even if already paired -a, --skip-archived don't download files marked as 'archived' on the watch Now get your ANT usb stick and plug it in to any port on your machine and then run the program again. Now start up your watch and put it somewhere nearby. Next, just watch the output in the terminal: .. code-block:: sh $ ./antfs-cli.py Driver available: [, , ] - Using: ant.base.driver.USB3Driver Request basic information... Capabilities: array('B', [8, 8, 0, 186, 54, 0, 223]) Starting system... Key done... Searching... Authenticating with Forerunner 610 (3890343564) - Pairing: OK Downloading 7 file(s) Downloading 1989-12-31_00-00-00_1_65535.fit: [..............................] ETA: 0:00:00 Downloading 1989-12-31_00-00-00_2_65535.fit: [..............................] ETA: 0:00:00 Downloading 1989-12-31_00-00-00_3_3.fit: [..............................] ETA: 0:00:00 Downloading 1989-12-31_00-00-00_3_1.fit: [..............................] ETA: 0:00:00 Downloading 2015-01-06_20-40-04_4_28.fit: [..............................] ETA: 0:00:00 Downloading 1989-12-31_00-00-00_9_65535.fit: [..............................] ETA: 0:00:00 Downloading 1989-12-31_00-00-00_10_65535.fit: [..............................] ETA: 0:00:00 You'll notice that there is a point where the terminal output mentions 'Searching' and then 'Authenticating [...]'. At this point the watch will ask you if you wish to pair the watch, at which point you select 'yes' on the watch screen. Once that is successful, you will see the files start to download. You will notice that there is a series of files with names beginning :highlight:`1989-12-31_00-00-00` - these are not workouts you did many years ago; they are system files which will appear each time you run this process and can be safely ignored. Finally, all the files that have downloaded successfully are placed in a directory in your home directory, named :highlight:`.config/antfs-cli/nnn`, where :highlight:`nnn` is, I presume, the device identifier of your watch. The files you will be interested in are those in the :highlight:`activities` directory. .. code-block:: sh $ ls -al ~/.config/antfs-cli/3890343564/*/* -rw-r--r-- 1 chrisramsay staff 65363 7 Jan 11:33 activities/2015-01-06_20-40-04_4_28.fit -rw-r--r-- 1 chrisramsay staff 46457 13 Jan 22:11 activities/2015-01-09_07-15-36_4_30.fit -rw-r--r-- 1 chrisramsay staff 10255 13 Jan 22:12 activities/2015-01-09_08-07-18_4_31.fit -rw-r--r-- 1 chrisramsay staff 9624 13 Jan 22:12 activities/2015-01-09_17-00-52_4_32.fit -rw-r--r-- 1 chrisramsay staff 48803 13 Jan 22:13 activities/2015-01-09_18-34-28_4_33.fit -rw-r--r-- 1 chrisramsay staff 61218 13 Jan 22:14 activities/2015-01-13_19-57-02_4_34.fit -rw-r--r-- 1 chrisramsay staff 3586 13 Jan 22:14 activities/2015-01-13_20-09-52_4_35.fit -rw-r--r-- 1 chrisramsay staff 573 7 Jan 11:28 settings/1989-12-31_00-00-00_2_65535.fit -rw-r--r-- 1 chrisramsay staff 1213 7 Jan 11:28 sports/1989-12-31_00-00-00_3_1.fit -rw-r--r-- 1 chrisramsay staff 1213 7 Jan 11:28 sports/1989-12-31_00-00-00_3_3.fit -rw-r--r-- 1 chrisramsay staff 125 7 Jan 11:33 totals/1989-12-31_00-00-00_10_65535.fit -rw-r--r-- 1 chrisramsay staff 72 7 Jan 11:33 weight/1989-12-31_00-00-00_9_65535.fit So now you can go ahead and grab those **.fit** files and upload them directly to `Strava`_ via their 'add manual entry' page. Note that these files will contain heart rate data if you used your heart rate monitor strap during your run. .. _`Garmin Connect online`: http://connect.garmin.com/ .. _`USB ANT+ stick`: http://www.dcrainmaker.com/2012/02/much-better-usb-ant-stick-for-your.html .. _`Strava`: http://www.strava.com .. _`Github`: https://www.github.com .. _`openant`: https://github.com/Tigge/openant .. _`Garmin Forerunner Extractor`: https://github.com/Tigge/Garmin-Forerunner-610-Extractor