| Interface Mode | 38/40/45XL | 12/12XL/48 | III/III+ | E-map | E-trex | Notes |
|---|---|---|---|---|---|---|
| None | Y | Y | Y | Y | Y | . |
| Garmin | Y | Y | Y | Y | Y | AKA GRMN/GRMN |
| None/NMEA | Y | Y | Y | Y | Y | NMEA out 0183 2.0 |
| NMEA/NMEA | Y | Y | Y | Y | N | NMEA in/out |
| Garmin DGPS | Y | Y | Y | Y | Y | Has Garmin Interface control |
| RTCM/NMEA | Y | Y | Y | Y | Y | . |
| RTCM/None | Y | Y | Y | Y | Y | DGPS input only |
| Text Out | N | N | III+, 12Map | Y | Y | 1200 2400 4800 9600 |
| RTCM/Text | N | N | III+, 12Map | Y | Y | . |
| NMEA 0180, 0182, 0183 1.5 | Y | Y | N | N | N | . |
Be sure that you have selected the correct mode and baud rate for
the program or unit you are trying to interface with. This is the
main problem with interface failures. For all moving map programs you
will likely need NMEA mode with the baud rate set to 4800. For
programs that upload and download data you should probably be in
Garmin mode with the baud rate set to 9600. Some digital cameras will
need text mode with a baud rate of 9600. In all cases set the data
width to 8, no parity, and 1 stop bit. Make sure the interface mode
is selected in the program and the correct com port is selected.
Hardware Connection
The hardware interface for Garmin units meets the NMEA requirements
and is sufficient to drive 3 NMEA loads. It is also compatible with
most computer serial ports using RS232 protocols. The interface speed
can be adjusted as needed by the particular interface but it usually
set automatically to the appropriate setting when the interface
selection is made. There is only a data in and data out line with
ground. There are are no handshake lines nor should you attempt to
set up a software handshake using xon/xoff as the unit does not
recognize this and may interfere with binary data uploads and
downloads.
In order to use the hardware interface you will need a cable. See the accessories chapter for the available cables. In some dedicated applications you may need to wire your own or perhaps you would just prefer to do that. The Garmin cable connector shown below will work for all of the handheld gps units except the etrex and emap.

Garmin gps receivers may be used to interface with other NMEA devices such as autopilots, fishfinders, or even another gps receivers. They can also listen to Differential Beacon Receivers that can send data using the RTCM SC-104 standard.
Some of the latest computers no longer include a serial port but only
a USB port. Garmin receivers are known to work with Serial to USB adapters
and serial ports attached via the pcmcia (pc card) adapter.
NMEA
The National Marine Electronics Association has developed a
specification that defines the interface between various marine
electronic equipment. The standard permits marine electronics to send
information to computers and to other marine equipment. GPS receiver
communication is defined within this specification. Most computer
programs that provide real time position information understand and
expect data to be in NMEA format. This data includes the complete PVT
(position, velocity, time) solution computed by the GPS receiver. The
idea of NMEA is to send a line of data called a sentence that is
totally self contained and independent from other sentences. There
are standard sentences for each device category and there is also the
ability to define proprietary sentences for use by the individual
company. All of the standard sentences have a two letter prefix that
defines the device that uses that sentence type. For gps receivers
the prefix is GP. This is followed by a three letter sequence that
defines the sentence contents. In addition NMEA permits hardware
manufactures to define their own proprietary sentences for whatever
purpose they see fit. All proprietary sentences begin with the letter
P and are followed with a letter that identifies the manufacturer
controlling that sentence. For Garmin this would be a G.
Each sentence begins with a '$' and ends with a carriage return/line feed sequence. The data is contained within this single line with data items separated by a comma. The data itself is just ascii text and may extend over multiple sentences in certain specialized instances but is normally fully contained in one variable length sentence. An example sentence might look like:
$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*42
With an interpretation as follows:
GGA - Global Positioning System Fix Data
123519 Fix taken at 12:35:19 UTC
4807.038,N Latitude 48 deg 07.038' N
01131.000,E Longitude 11 deg 31.000' E
1 Fix quality: 0 = invalid
1 = GPS fix
2 = DGPS fix
08 Number of satellites being tracked
0.9 Horizontal dilution of position
545.4,M Altitude, Meters, above mean sea level
46.9,M Height of geoid (mean sea level) above WGS84
ellipsoid
(empty field) time in seconds since last DGPS update
(empty field) DGPS station ID number
*42 the checksum data, always begins with *
Each Data type would have its own interpretation that is defined in the
NMEA standard. This particular sentence provides essential fix data.
Other sentences may repeat some of the same information but will also
supply new data. Whatever is reading the data can watch for the data
sentence that it is interested in and simply ignore whatever sentences
that is doesn't care about. In the NMEA standard there are no commands
to indicate that the gps should do something different. Instead each
receiver just sends all of the data and expects much of it to be ignored.
On NMEA input the receiver stores information based on interpreting the
sentence itself. While some Garmin receivers accept NMEA input this
can only be used to update a waypoint or similar task and not to send
a command to the unit. There is no way to indicate whether the sentence
is being read correctly or to re-send some data you didn't get. Instead
the receiving unit just checks the checksum and ignores the data if
the checksum isn't correct figuring it will be sent again sometime later.
No error can be generated to the remote system.
The NMEA standard has been around for many years and has undergone several revisions. The protocol has changed and the number and types of sentences may be different depending on the revision. All Garmin receivers understand the latest standard which is called: 0183 version 2.0. This standard dictates a transfer rate of 4800 baud. Some Garmin receivers also understand older standards. The oldest standard was 0180 followed by 0182 which transferred data at 1200 baud. An earlier version of 0183 called version 1.5 is also understood by some Garmin receivers. Some Garmin units can be set to 9600 for NMEA output but this is only recommended if you have determined that 4800 works ok and then you can try to set it faster.
If you are interfacing a Garmin unit to another device, including a computer program, you need to insure that the receiving unit is given all of the sentences that it needs. If it needs a sentence that Garmin does not send then the interface to that unit is likely to fail. The sentences sent by Garmin receivers include:
NMEA 2.0
NMEA 1.5 - some units do not support version 1.5
This list is specific to the handheld units. Other Garmin units may send other sentences and some use proprietary sentences to send control commands to the units themselves. Note that Garmin converts lat/lon coordinates to the datum chosen by the user when sending this data. This is indicated in the proprietary sentence PGRMM. This can help programs that use maps with other datums but is not a NMEA standard. Be sure and set your datum to WGS84 when commuicating to other NMEA devices.
It is possible to just log view the information presented on the NMEA interface using a simple terminal program. If the terminal program can log the session then you can build a history of the entire session into a file. More sophisticated logging programs can filter the messages to only certain sentences or only collect sentences at prescribed intervals. Some computer programs that provide real time display and logging actually save the log in an ascii format that can be viewed with a text editor or used independently from the program that generated it.
NMEA has its own version of essential gps pvt (position, velocity, time) data. It is called RMC, The Recommended Minimum, which might look like:
$GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W*43
With an interpretation as follows:
RMC Recommended Minimum sentence C
123519 Fix taken at 12:35:19 UTC
A Status A=active
4807.038,N Latitude 48 deg 07.038' N
01131.000,E Longitude 11 deg 31.000' E
022.4 Speed over the ground in knots
084.4 Track angle in degrees True
230394 Date - 23rd of March 1994
003.1,W Magnetic Variation
*43 The checksum data, always begins with *
$GPWPL,4807.038,N,01131.000,E,WPTNME*31
With an interpretation of:
WPL Waypoint Location
4807.038,N Latitude
01131.000,E Longitude
WPTNME Waypoint Name
*31 The checksum data, always begins with *
Some of the things that you might be able to do using Garmin protocol include:
The most often used capabilities include the backup of critical user data such as waypoints and routes. To do this you would need to secure a Garmin capable program. These are available from Garmin or several third party sources. There are programs for pc's running dos, or windows, for macs, for unix, and for palm pilots. Once you have the correct program you can place your unit in Garmin mode and set the baud rate to 9600. Generally all programs accept this baud rate but some may support other rates and even change the rate. Cable the unit to the computer and make sure the computer program is set to the correct serial port and the baud rate to 9600. The standard serial port settings are 8N1, 8 bit data, no parity, 1 stop bit. Do not use xon/xoff since this may interfere with proper transfer of binary data. If the program cannot access the unit then check to ensure some other program is not using the port (the palm sync program is notorious for this) and that the port is configured correctly. This protocol is binary and requires handshaking so all three wires need to be hooked up correctly. Perhaps a null model adapter may be required to get the receive and transmit signals hooked up properly.
You cannot modify individual waypoints or routes using this interface. Instead you load the full set of routes or the full set of waypoints. If you wish to revise certain data you should download the full set and the revise the data you wish on your computer, clear all the waypoint data, and then reload the full set back. Otherwise you may get unpredictable results on some units. Most units will simply overwrite waypoints with the same name but the emap will create a new waypoint if the location is different. This can make updating a waypoint a bit frustrating. Similarly you load the full tracklog. On units with multiple tracklogs you may find them all concatenated together on download. Some programs may be able to upload saved logs directly but some may not. On units that support the uploading of maps the rule is similar. You must assemble all of the maps you wish to upload and then send them all at once replacing the previous upload.
Of course, the data in the computer program need not originate in your gps. It is quite possible, in some programs, to import external data to the program for later uploading or to edit the data files directly to provide this new information. It is also useful to modify and add comment data to waypoints using a computer keyboard instead of toggling it in with the unit keypad. Be aware that waypoints are always interpreted as using the WGS-84 datum for this interface.
One interesting use for this protocol is to transfer information between units. To do this you need a Garmin to Garmin cable (available from Garmin and other sources) to hook the two units together. One of the units is placed in Host mode and the other unit sends commands to upload and download data. The commands are shown on your units menu. They may include:
To ensure success make sure you download the upgrade using a binary mode. It comes as a zip file so if it unzips correctly you can be sure you downloaded it correctly. Make sure you have a good connection to the gps. Try one of the Garmin interface programs to backup your data. Generally an upgrade does not lose user data but this is not always the case so it is a good idea to back it up. Leave the unit in Garmin mode for the upgrade. Your pc baud rate should be set to "maximum rate" possible so that the program can increase the baud rate to minimize the download time. Expect to lose any customization that you may have performed on your unit. Be sure you have fresh batteries in the unit. Writing the firmware into the prom can use significant battery power and if the batteries are weak you may not get a good load or you may start out with a seemingly good load that will fail later. Do not abort the process once it has begun. It can take several minutes to do the upgrade so be patient. If the upgrade fails, try it again. You must get an good upgrade before your unit will be operational again.
If you lose power or connection during the upgrade you may have a unit without any code at all. If you were to attempt to power up the unit it will tell you the firmware is missing. Some have reported that this happened some time later. This is usually caused by weak batteries that were not able to burn the new code in the machine. To recover perform these steps:
If you are unsuccessful then call Garmin and arrange to return your unit for them to upgrade. If you feel that the upgrade has a bug in it and the older release is better you can generally use an earlier upgrade to downgrade your unit. Garmin generally does not keep older versions available but they are often available on the net from other users.

*** More To be supplied
Text Mode
Text mode is a simple output mode that supplies velocity and position
information in realtime. Currently this is primarily used by certain
digital cameras to include this data on the picture. In the future
many other uses will be found for this mode which requires very little
processing on the part of the device receiving the data. An example
is shown below.
@000607204655N6012249E01107556S015+00130E0021N0018U0000
@yymmddhhmmss Latitude Longitude error Altitude EWSpd NSSpd VSpd
Each item is of fixed length making parsing by just counting the number of characters an easy task. It is grouped by use permitting a digital camera, for example, to just read the first 30 characters and report the time and position. Some of the data will require some programming to make meaningful for most users, such has the speed which is devided into the X, Y, and Z components. This is the only format that provides vertical speed which should be a great boon for ballonists.
A more formal description of the fields are:
| FIELD DESCRIPTION: | WIDTH: | NOTES: | |
|---|---|---|---|
| Sentence start | 1 | Always '@' | |
I M E |
Year | 2 | Last two digits of UTC year |
| Month | 2 | UTC month, "01".."12" | |
| Day | 2 | UTC day of month, "01".."31" | |
| Hour | 2 | UTC hour, "00".."23" | |
| Minute | 2 | UTC minute, "00".."59" | |
| Second | 2 | UTC second, "00".."59" | |
O S I T I O N |
Latitude hemisphere | 1 | 'N' or 'S' |
| Latitude position | 7 | WGS84 ddmmmmm, with an implied decimal after the 4th digit | |
| Longitude hemishpere | 1 | 'E' or 'W' | |
| Longitude position | 8 | WGS84 dddmmmmm with an implied decimal after the 5th digit | |
| Position status | 1 | 'd' if current 2D differential GPS
position 'D' if current 3D differential GPS position 'g' if current 2D GPS position 'G' if current 3D GPS position 'S' if simulated position '_' if invalid position | |
| Horizontal posn error | 3 | EPH in meters | |
| Altitude sign | 1 | '+' or '-' | |
| Altitude | 5 | Height above or below mean sea level in meters | |
E L O C I T Y |
East/West velocity direction | 1 | 'E' or 'W' |
| East/West velocity magnitude | 4 | Meters per second in tenths, ("1234" = 123.4 m/s) | |
| North/South velocity direction | 1 | 'N' or 'S' | |
| North/South velocity magnitude | 4 | Meters per second in tenths, ("1234" = 123.4 m/s) | |
| Vertical velocity direction | 1 | 'U' (up) or 'D' (down) | |
| Vertical velocity magnitude | 4 | Meters per second in hundredths, ("1234" = 12.34 m/s) | |
| Sentence end | 2 | Carriage return, '0x0D', and line feed, '0x0A' | |
Notes on the table: