Garmin serial/USB protocol (garmin)
Prev | Chapter 3. The Formats | Next

## Garmin serial/USB protocol (garmin)

This format can...

- read and write waypoints

- read and write tracks

- read and write routes

This format has the following options: snlen, snwhite, deficon, get_posn, power_off, erase_t, resettime, category, bitscategory, baud, codec .

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 Garmin GPS receivers with USB include

Astro | Forerunner 205 | GPSMAP 60CSx | StreetPilot 2650
Edge 205 | Forerunner 301 | GPSMAP 60Cx | StreetPilot 2720
Edge 305 | Forerunner 305 | GPSMAP 76C | StreetPilot 2730
eTrex Legend C | Foretrex 201 | GPSMAP 76CS | StreetPilot 2820
eTrex Legend Cx | Foretrex 301 | GPSMAP 76CSX | StreetPilot 7200
eTrex Legend H | GPS 18[1] | GPSMAP 76Cx | StreetPilot 7500
eTrex Legend HCx | GPSMAP 195 | GPSMAP 96 | StreetPilot c310
eTrex Summit Cx | GPSMAP 276C | GPSMAP 96C | StreetPilot c320
eTrex Summit HC | GPSMAP 295 | Quest | StreetPilot c330
eTrex Venture C | GPSMAP 296C | Quest II | StreetPilot c340
eTrex Venture Cx | GPSMAP 378 | Rhino 520 | StreetPilot i2
eTrex Venture HC | GPSMAP 396 | Rhino 530 | StreetPilot i3
eTrex Vista C | GPSMAP 478 | Rhino 520 HCx | StreetPilot i5
eTrex Vista Cx | GPSMAP 496 | Rhino 530 HCx |
eTrex Vista H | GPSMAP 60C | StreetPilot 2610 |
eTrex Vista HCx | GPSMAP 60CS | StreetPilot 2620 |

the following Bluetooth Garmin products:

GPS 10[1] |  |  |

and most serial Garmin GPS receivers including:

eMap | eTrex H | GPS 12 | Rhino 110
eTrex Camo | Forerunner 201 | GPS 12XL | Rhino 120
eTrex Legend | Foretrex 201 | GPS III | Rhino 130
eTrex Summit | Geko 201 | GPS III+ | StreetPilot III
eTrex Venture | Geko 301 | GPS II | StreetPilot III+
eTrex Vista | GPS 12CX | GPS II+ |
eTrex (Basic Yellow) | GPS 12Map | GPS V |

The following Garmin GPS receivers are supported, but they do not support Garmin communication protocol and don't work with the `garmin` option. To use these receivers, read or write GPX files from the mass storage device as mounted on your computer.

eTrex 10[2] | Nuvi 255[2] | Nuvi 770[2] | Nuvi 1690T[2]
eTrex 20[2] | Nuvi 250W[2] | Nuvi 775T[2] | Nuvi 3750[2]
eTrex 30[2] | Nuvi 255W[2] | Nuvi 780[2] | Nuvi 3760T[2]
Colorado 300[2] | Nuvi 260[2] | Nuvi 785T[2] | Nuvi 3790T[2]
Colorado 400c[2] | Nuvi 265T[2] | Nuvi 880[2] | Oregon 200[2]
Colorado 400i[2] | Nuvi 265WT[2] | Nuvi 885T[2] | Oregon 300[2]
Colorado 400t[2] | Nuvi 260W[2] | Nuvi 1200[2] | Oregon 400c[2]
Dakota 10[2] | Nuvi 270[2] | Nuvi 1250[2] | Oregon 400i[2]
Dakota 20[2] | Nuvi 275T[2] | Nuvi 1260T[2] | Oregon 400t[2]
GPSMap 62[2] | Nuvi 300[2] | Nuvi 1300[2] | Oregon 450[2]
GPSMap 62sc[2] | Nuvi 310[2] | Nuvi 1350[2] | Oregon 450t[2]
GPSMap 62stc[2] | Nuvi 350[2] | Nuvi 1370T[2] | Oregon 550[2]
GPSMap 78[2] | Nuvi 370[2] | Nuvi 1390T[2] | Oregon 550t[2]
GPSMap 78s[2] | Nuvi 465T[2] | Nuvi 1350[2] | StreetPilot c510[2]
GPSMap 78sc[2] | Nuvi 500[2] | Nuvi 1490T[2] | StreetPilot c530[2]
Montana 600[2] | Nuvi 550[2] | Nuvi 2250[2] | StreetPilot c550[2]
Montana 650[2] | Nuvi 600[2] | Nuvi 2250LT[2] | StreetPilot c580[2]
Montana 650t[2] | Nuvi 650[2] | Nuvi 2350[2] | Road Tech Zumo[2]
Nuvi 30[2] | Nuvi 650FM[2] | Nuvi 2350LT[2] | Zumo 220[2]
Nuvi 40[2] | Nuvi 660[2] | Nuvi 2360LT[2] | Zumo 450[2]
Nuvi 50[2] | Nuvi 670[2] | Nuvi 2405[2] | Zumo 500[2]
Nuvi 200[2] | Nuvi 680[2] | Nuvi 2450[2] | Zumo 550[2]
Nuvi 205[2] | Nuvi 750[2] | Nuvi 2450LM[2] | Zumo 660[2]
Nuvi 200W[2] | Nuvi 755T[2] | Nuvi 2450LT[2] | Zumo 665[2]
Nuvi 205W[2] | Nuvi 760[2] | Nuvi 2450LMT[2] | Surely any Garmin product that Garmin actually sensibly designed after 2006 or so.[2]
Nuvi 250[2] | Nuvi 765T[2] | Nuvi 2505[2] |

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 workouts or calorie/fitness zone data. Furthermore, sporting models don't support track upload. When trying to upload tracks to these devices, GPSBabel converts them to courses on the fly and uploads these instead. When uploading waypoints at the same time, these are converted to course points by mapping them to the nearest track point on the track/course (no matter how far away from the track they are). Since course point creation requires time stamps for the track points, they are created automatically assuming a speed of 10 km/h for tracks that lack them.

To communicate with a Garmin GPS 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 receiver 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, specify 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 you have the garmin_gps kernel module loaded. See the Operating System Notes for details.

This module also supports realtime tracking which allows realtime position reports from a Garmin GPS receiver over USB or serial.

### Important

The following Garmin units do not follow the standard Garmin communications protocol and are not supported by GPSBabel.

Marine plotters:

GPSMap 420 | GPSMap 450 | GPSMap 530 | GPSMap 545
GPSMap 430 | GPSMap 520 | GPSMap 535 | GPSMap 550
GPSMap 440 | GPSMap 525 | GPSMap 540 | GPSMap 555

The PDA products

iQue 3000
iQue 3200
iQue 3600
iQue M3
iQue M4
iQue M5

### `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 longitude 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`

### `erase_t` option

Erase existing courses when writing new ones.

By default, GPSBabel makes effort in order to keep courses already present on the device, if any. This option allow to replace courses already present. If you don't mind to keep old courses, this option is recommended because it allows a faster transfer.

This option applies only to Garmin devices that support courses such as the Edge 305 or the Forerunner 305.

### `resettime` option

Sync GPS time to computer time.

This option is experimental and was added to solve a very specific problem. Certain Garmin units (the original black and white Vista is known to have this) will sometimes scramble their clock crazy far into the future (like 2066). When this happens, the GPS itself may or may not work and later conversations with GPSBabel may fail as the time overflows the documented range. The use of `resettime` brings the GPS's internal clock back close enough to reality that the GPS itself can then "fix" it when it has next a lock.

### `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.

### `bitscategory` option

Bitmap of categories.

This option is closely related to the 'category' option. While category allows you to choose a single category that waypoints should appear in, this options allows you to specify a bitmask to be used for the category. Options may be specified in either decimal or hex.

Example 3.11. Example for garmin bitcategory option to put all waypoints in categories 1 and 16.

The following two commands are equivalent. They place a the point in both the first and last of the sixteen available categories. `gpsbabel -i gpx -f PocketQuery.gpx -o garmin,bitcategory=32769 -F usb:` `gpsbabel -i gpx -f PocketQuery.gpx -o garmin,bitcategory=0x8001 -F usb:`

### `baud` option

Speed in bits per second of serial port (baud=9600).

Sets baud rate on some Garmin serial unit to the specified baud rate. Garmin protocol uses 9600 bps by default, but there is a rarely documented feature in Garmin binary protocol for switching baud rate. Highest option is 115200.

Download track log and waypoints 12 times faster than default: `gpsbabel -t -w -i garmin,baud=115200 -f /dev/ttyUSB0 -o gpx -F garmin-serial.gpx`

At the end of the transfer the baud rate is switched to back to the default of 9600. If the connection breaks and the unit is stuck at a high baud rate power cycling should restore the original baud rate.

This option does not affect USB transfer.

Because this feature uses undocumented Garmin protocols, it may or may not work on your device. The author reported success with eTrex Vista, GPSMAP 76s, and GPS V, but it seems likely to be problematic on older units and may be more problematic for writing to the device than reading data from the device.

### `codec` option

override codec to use for device.

This lets you override the default codec used for your device when reading or writing strings from or to your Garmin device. The default codec is device dependent, you can see what codec is being used with your device by adding the -vs option to the command line.

`gpsbabel -vs -w -i garmin -f usb: -o gpx -F garmin.gpx` `gpsbabel -w -i garmin,codec=windows-1251 -f usb: -o gpx -F garmin.gpx` `gpsbabel -w -i gpx -f garmin.gpx -o garmin,codec=windows-1251 -F usb:`

[1] This model does not support transfer of waypoints, tracks, or routes, but may be used with the realtime tracking feature.

[2] 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. Members of this class of products do not support realtime positioning protocol.

Prev | Up | Next
Garmin Points of Interest (.gpi) (garmin_gpi) | Home | Garmin Training Center (.tcx/.crs/.hst/.xml) (gtrnctr)