daveb.net : garmintools

Overview

This software provides Linux users with the ability to communicate with the Garmin Forerunner 305 via the USB interface. While this is the only Garmin unit that I own, I did implement all of the documented Garmin protocols as of Rev C (May 19, 2006) over the USB physical link. This means that if you have a Garmin with a USB connection to a PC, you ought to be able to use this software to communicate with it.

If you're looking for a complete solution to all of your Linux Garmin GPS needs, this is not it. I own a Garmin Forerunner 305 and wrote this code specifically so I could download and save data from that particular GPS unit to my Linux machine. I tried gpsbabel, but found that it did not have command line options specific to the Forerunner run and lap data - all I could do was get the tracklog. That's how all of this got started. I also wanted a few other things, like the ability to convert a track log into a Google maps encoded polyline, and (eventually) the ability to generate PNG images of heart rate and elevation data.

21 Jul 2007 - Garmintools is hosted by Google Code Hosting at this location. Current capabilities:

  • Get basic information from the Garmin unit, such as its software version and supported protocols. To do this, use garmin_get_info.
  • Save runs and associated track logs from the Garmin unit to disk. To do this, use garmin_save_runs. Files are saved with the extension .gmn and are named by the run start time (e.g. 20070121T151814.gmn). The .gmn file format is a binary file format that can be unpacked with the same functions that unpack the raw data from the Garmin unit itself. It is substantially more efficient than the bloated XML format that Garmin uses.
  • Dump the contents of a .gmn file. To do this, use garmin_dump. The output of garmin_dump is XML-like, and is mainly meant to be used for debugging.
  • Print, in an XML-like format, the encoded polyline representation of a .gmn file (for Google maps) along with other information such as the start and center latitude/longitude, and the lat/lon bounding box. To do this, use garmin_gmap on a .gmn file.


© 1999-2009 by Dave Bailey