Combining Garmin Forerunner 305, GNU/Linux and RunKeeper
I’ve been using the RunKeeper Pro application from a few months (since May exactly) to log my sport activities and see how I go improving (or not) over time, and thus to motivate me when I run.
With this method of logging the training you need to bring the phone with you, which is a bit annoying when you run, I have an armband to wear it on the arm, but it’s still a little uncomfortable. Furthermore, the mobile GPS doesn’t work as well as you would wish, and sometimes it loses the signal, or log your route wrongly, so that workout data will be incorrect. Another drawback is that at the place where I live, it rains a lot, and depending on the weather here, you can finish your workout with a nonfunctional, and completely wet phone. And with the price of these modern smartphones it’s not pleasant.
For these reasons, I was looking for a GPS + heart rate monitor watch, it endures the rain, and has a better coverage of GPS signals. In addition, I previously ran without a heart rate monitor, and sometimes it’s interesting to know the heart rate while doing sport. I was looking at different options, and taking into account quality, comments from people, and price, my preferred choice was a Garmin Forerunner 305. So I bought it.
The only drawback I saw was the connectivity. With RunKeeper, the mobile application automatically synchronize with the web service, it was to save your workout and everything was done. With the Garmin, you need to connect it to an USB adapter to get the data. You need some drivers and a Garmin plugin that only works on Windows/Mac, while the main operating system I use is GNU/Linux.
So there was a small dilemma: I wanted to use the Garmin to log the workouts, I wanted to continue using RunKeeper web service because I think that RunKeeper guys are doing a good job and are providing a great service, plus I have a paid RunKeeper Elite account, and finally, I also wanted to continue using my favorite OS, GNU/Linux.
Fortunately it’s possible to combine all three.
The first thing to do is to copy the training data from the Garmin to the computer using GNU/Linux. To do this, I found a great reference at braiden.org and I did everything, more or less, following the same steps, but our goal is to upload the data to RunKeeper.
To copy data from the watch you need several things:
- Garmintools. You can use the upstream version, or for example, if you use Ubuntu (like me), just install garmin-forerunner-tools from Synaptic.
- Java. You can find it from Synaptic too (sun-java-jre).
- Some scripts from braiden.org (you can download the latest code from the SVN: svn co http://linuxnerd.net/svn/trunk/projects/garmin-dev)
After you have these requirements met, the following thing to do is connect the Garmin Forerunner to the USB. I think it must be turned on, before transferring data, but it could work being off too.
- Run the following command: garmin_save_runs
- We go into the directory where you placed the scripts from braiden.org, and run: ./gmn2tcx /path/year/month/workout.gmn> workout.tcx
- Now with the .tcx format will be possible to upload it to RunKeeper. To import the workout to RunKeeper, follow these steps:
This will copy the training data in the folder where you run the command, with a folder hierarchy similar to year/month/workout.gmn
This data is in a binary format, and RunKeeper won’t accept it, so you have to convert to .tcx format.
The data will be converted to the appropriate format and will be saved to the run.tcx file (or the name you want).
In your RunKeeper profile press “Post New Activity”, select the right sport, and in the screen “Add map”, press “Import Map” button. Then, select the right file using the chooser from the left side of the screen, “Import from a GPX or TCX file”. And if everything is correct, all data from your workout (even heart rate data) with the Garmin will be available on RunKeeper.
It’s possible to automatize this process further and do it much easier, even with a small graphical application using simple steps. If the RunKeeper guys publish an API of their service, probably I can create something for that.
As the only drawback I’ve found so far is that RunKeeper doesn’t differentiate the total time from the elapsed time. Sometimes you need to stop at a light traffic or something else, and the Garmin watch auto-pause . That time is token by RunKeeper as training time. But hey, it’s not something very important because the pause time is usually very little. By the way, this is my RunKeeper profile, if you want to check my workouts.