Garmin eTrex Vista C communications protocols

As I mentioned a while back, I got a Garmin eTrex Vista C handheld GPS as a Christmas present and there’s code available from the Garmin website that lets you talk to it via its USB interface. There’s also a specification document for the protocols that it uses. At first glance this is great. I’ve seen better specifications but with a little trial and error I’ve managed to transfer the saved GPS tracks from the device to my code and I can set the device up to send it GPS position every couple of seconds (so I could use it as an external GPS receiver for mapping software) etc.

What’s more interesting is what the specification doesn’t include…

Garmin have a huge range of products and they’ve been going for a fairly long time and the protocols used have evolved. The latest units support the reporting of a ‘protocol array’ which basically tells you which version of which protocol the device supports. For example, the 2.50 firmware of the eTrex Vista C supports the A010 device control protocol, the A100 waypoint transfer protocol, the A800 PVT (position, velocity, time) protocol, etc. Earlier products don’t all support this discovery mechanism and there is a table in the docs that tells you which protocols to expect from them.

I had noticed that the protocol specification failed to mention any map data transfer protocols. The Garmin software allows you to transfer maps segments to the device and the device can then display these and generate routes from the routing information, etc. Obviously there must be a protocol to download this kind of data but it’s not mentioned in the specification…

The device does report the following undocumented protocols though; A900, A902, A903, A907 and A914… I expect these are the mapping and routing data protocols…

I sense another debugging tool may be about to be written so that I can snoop the official Garmin software whilst it talks to the device over the USB connection…