What works on Linux

We currently have four different garmin watches, a 305, a 405 a 310xt and a fenix plus various other garmin gps devices.

The 305 is a usb cradle connection with a miniUSB socket. That runs standard garmin protocol over USB and so is not a huge issue for Linux. The only warning is there is a kernel bug in the garmin driver that can cause trouble.

The 405 runs over ANT. However it is still running basically the old garmin packet protocol. It does not seem to respond to the new ANT-FS (file-share) protocols. With the right tools its quite usable under linux.

The 310xt also runs over ANT. It also has some garmin protocol commands, and seems to indicate it will transfer data with the old garmin commands, but doesn't seem to. Instead it uses the new ANT-FS protocol to transfer data. With the right tools this is quite usable on linux.

The Fenix (see my Fenix Review for more information on Fenux) has (yet another) mini-cradle connection to USB and will appear as a USB mass storage device so can easilly transfer to linux.

A GPSMap 60 has a mini-usb plug on the back and will work with gpsbabel.

An Etrex20 has a mini USB plug on the back and will appear as a USB mass storage device.

Doc and links

Historically, Garmin were really helpfull. There is an excellent document the Garmin Device Interface Specification, number 001-00063-00 Rev. C from May 2006. Likewise there is some really good documentation on the basic ANT protocol ANT Message Protocol and Usage, number D00000652 Rev 4.5. from 2011.

Sadly Garmin does not seem to have released an update of the Interface Specification document since 2006, though new packets and parameters have been added.

My tools

I have a number of tools. These are all written in 'C'.
Caveats: I've never seen a Garmin TCX file, only output from other linux tools, so the TCX should work, but is unlikely the same as a Garmin file.

I'll be uploading these tools as soon as I write some notes on how to use them, email if you are interested. [march 2013]

Other Peoples Tools

ANT with Garmin Protocol: There are some tools that can access the data. However I have been getting increasingly frustrated with them. The Garmin 405 can be accessed with gant. There are a few gant clones around. Most of the ones I've tried dont work. However the one on Klaus Ethgen's site seems to work as well as any.

Be warned that it will not run if compiled for 64bit. There is some rather creative code that assumes a pointer is 32bit. You will need 32bit libraries and to compile with -m32.

ANT-FS: There are some python tools that may work for you.

Issues with the Garmin 305

On older kernels the garmin_gps driver worked OK with the 305. On more recent kernels this is no longer true. If you are running tools that use this driver, I have a patch for the driver that you will need.
Feedback, email: