Garmin serial/USB protocol (garmin)

This format can...

GPSBabel supports a wide variety of Garmin hardware via serial on most operating systems and USB on Windows, Linux, and OS X.

For serial models, be sure the GPS is set for "Garmin mode" in setup and that nothing else (PDA hotsync programs, gpsd, getty, pppd, etc.) is using the serial port.

Supported models on USB include

Edge 205Foretrex 201GPSMAP 60CSNuvi 350[1]StreetPilot 7500
Edge 305Foretrex 301GPSMAP 60CSXNuvi 360[1]StreetPilot c310
eTrex Legend CGPSMAP 195GPSMAP 60CXQuestStreetPilot c320
eTrex LegendCXGPSMAP 276CGPSMAP 76CQuest IIStreetPilot c330
eTrex Venture CGPSMAP 295GPSMAP 76CSStreetPilot 2610StreetPilot c340
eTrex Venture CXGPSMAP 296CGPSMAP 76CSXStreetPilot 2620StreetPilot c510[1]
eTrex VistaCGPSMAP 378GPSMAP 76CXStreetPilot 2650StreetPilot c530[1]
eTrex Vista CXGPSMAP 396GPSMAP 96StreetPilot 2720StreetPilot c550[1]
Forerunner 205GPSMAP 478GPSMAP 96CStreetPilot 2730StreetPilot i2
Forerunner 301GPSMAP 496Nuvi 300[1]StreetPilot 2820StreetPilot i3
Forerunner 305GPSMAP 60CNuvi 310[1]StreetPilot 7200StreetPilot i5

and most serial units including:

eMapeTrex VistaGeko 301GPS III StreetPilot III
eTrex CamoeTrex YellowGPS 12CX GPS III+ StreetPilot III+
eTrex LegendForerunner 201GPS 12Map GPS II  
eTrex SummitForetrex 201GPS 12 GPS II+  
eTrex VentureGeko 201GPS 12XL GPS V 

None of the GPSBabel developers has access to every model on that list, but we've received reports of success and/or have reasonable expectations that the above models work. If you succeed with a model that is not on that list, please send a message to the gpsbabel-misc mailing list with the details so that we may add it.

Not every feature on every model is supported. For example, while we do extract data such as heart rate and temperature from tracks on the sporting models like Edge and Forerunner, GPSBabel is not a fitness program at its core and does not support features like courses or calorie/fitness zone data.

To communicate with a unit serially, use the name of that serial port such as "COM1" or "/dev/cu.serial".

To communicate via USB use "usb:" as the filename on all OSes. Thus, to read the waypoints from a Garmin USB unit and write them to a GPX file:

gpsbabel -i garmin -f usb: -o gpx -F blah.gpx

If you have multiple units attached via USB, you may provide a unit number, with zero being the implied default. So if you have three USB models on your system, they can be addressed as "usb:0", "usb:1", and "usb:2". To get a list of recognized devices, specifiy a negative number such as:

gpsbabel -i garmin -f usb:-1

When reporting problems with the Garmin format, be sure to include the full unit model, firmware version, and be prepared to offer debugging dumps by adding "-D9" to the command line, like:

 gpsbabel -D9 -i garmin -f usb: -o gpx -F blah.gpx

Custom icons are supported on units that support that. Neither GPSBabel nor your firmware know what is associated with any given slot number. They don't know that the picture you placed in the first slot is a happy face, they only know they're in the lowest numbered slot. GPSBabel names the them consistently with Mapsource, so they are named 'Custom 0' through 'Custom 511'.

For models where the connection on the GPS is a serial interface, be sure the GPS is set for "Garmin mode" in setup and that nothing else (PDA hotsync programs, gpsd, getty, pppd, etc.) is using the serial port.

For models connected via USB, we recommend use of the 'usb:' filename. For this to work on Windows, you must install the Garmin driver. For Linux, this will fail if have the garmin_gps kernel module loaded. See the Operating System Notes for details.

snlen option

Length of generated shortnames.

This option overrides the internal logic to figure out how many characters an addressed Garmin GPS will support when using the '-s' smartname option. This should be necessary only if you have a receiver type that GPSBabel doesn't know about or if you want to "dumb down" one unit to match another, such as wanting waypoint names in a StreetPilot 2720 (which supports 20 character names) to exactly match those in a 60CS (which supports 10).

snwhite option

Allow whitespace synth. shortnames.

This options controls whether spaces are allowed in generated smart names when using the '-s' option.

deficon option

Default icon name.

This option specifies the icon or waypoint type to write for each waypoint on output.

If this option is specified, its value will be used for all waypoints, not just those that do not already have descriptions. That is, this option overrides any icon description that might be in the input file.

Value specified may be a number from the Garmin Protocol Spec or a name as described in the Appendix B, Garmin Icons.

This option has no effect on input.

get_posn option

Return current position as a waypoint.

This options gets the current longtitude and latitude from the attached GPS device and returns it as a single waypoint for further processing. For example, to return the current position from a USB Garmin to a KML file:

gpsbabel -i garmin,get_posn -f usb: -o kml -F myposition.kml

power_off option

Command unit to power itself down.

This command forces an immediate powerdown of the addressed Garmin receiver. It is ignored on hardware that does not support this command. Obviously, further processing once you have sent a "power off" command to a unit that supports it is rather futile, so place this option carefully in your command.

gpsbabel -o garmin,power_off -F /dev/ttyS0

category option

Category number to use for written waypoints.

This numeric option will force waypoints to be written with that category number when sending to a Garmin receiver that has category support. It is ignored on receivers without that capability.



[1] This unit uses GPX format, not Garmin protocol. Therefore one should communicate with it by reading and writing GPX files instead of using this format.