GPS NMEA info

You may find some useful information here if you are trying to use the NMEA output of a GPS receiver. I am making an in car navigation system (just for fun really) using a GPS receiver. I had great difficulty in finding information about how to interface the GPS to a computer. Eventually by collecting bits of information here and there as well as by trial and error, I found out most of what I needed. Here I'm just collecting all those bits of information and putting them together.

The GPS I'm using is the GARMIN GPS II+. I have also used the GPS 12XL which in terms of the NMEA interface is 100% identical. All the sentences which do not start with PG are universal NMEA sentences. The ones which do start with PG apply only to specific Garmmin receivers.

This is by no means an authoritative description of the standard, however I think it contains most of what is needed to interface a Garmin GPS to a computer.

There are various information which I do not know (for example the GPRTE sentence). If you know this missing information, please inform me so I can update this page.

If you find any of the information on this page usueful, please email me so at least I will know I was not just wasting my time putting this together. Also if you need further information you may ask me, maybe I will know.

I have also done some investigation on the accuracy of the GPS and how it correlates to the EPE it gives. I have also made some subrouteines to read the GPS sentences and interpret them as well as convert them to UTM/UPS metric grid.

Garmin has put on their homepage very detailed specifications of their proprietary format. This allows up/downloading of routes/tracklogs/waypoints and some other facilities. It can also be used for receiving position and speed info instead of the standard NMEA interface, though its a bit more difficult to use.

I have written some Amiga software both for decoding the NMEA output as well as using the proprietary interface to up/download waypoints, tracklogs and routes. I think it should be quite possible to convert to Unix or even windoze format. If you arre interested, email me so I send you the sources - however I havent written any docs yet.

General information about the data format

Physical interface

The interface is compatible with normal RS232. Though not really adherent to the RS232 standard, the NMEA output of GPS equipment usually works perfectly with RS232.

The interface is three wire, using just the Ground, TxData and RxData lines. The speed is 4800 baud with 2 stop bits and no parity. No handshaking is used.

General message format

NMEA devices communicate in messages known as sentences. Each sentence is a sequence of plain ASCII characters starting with a dollar sign and ending in a CR/LF (ie character 13 and 10). The sentence is divided into a number of fields separated by commas.

The first field is a five character word. The first two characters indicate the equipment which is sending the message, and the next three give the type of message. In my case, with the Garmin GPS II+, the first two characters will always be GP or PG. GP is the prefix used for all standard GPS messages. PG is used for messages which are specific to the Garmin GPS. PG meaning Proprietary Garmin. A detailed description of the message types is given further on.

The fields following the first five character field contain the actual data that the GPS is issuing. This consists mainly of numbers which are formatted as normal ascii representations in decimal as well as some other ascii characters indicating for example the units of measure.

Finally, the sentence is terminated with an asterisk '*' followed by a two digit hexadecimal checksum.

Other info

To set up the communication, set the GPS Interface option to NMEA/NMEA. The GPS will send a group of messages every two seconds. This occurs automatically at regular two second intervals, so you do not need to send any message to the GPS from the computer. I think it is also possible to send commands to the GPS by the NMEA interface, but I have no idea what these commands are. (In case of GARMIN receivers, you can use a proprietary protocol which is described in great detail on their homepage)

Specific information on each sentence

Here is a description of each sentence the GPS II+ issues. Example data is included:

Page last updated on 27th May 1999

Note: This page was written when the USAF was still applying Selective Availability. The selective availability has since been removed and the accuracy of GPS in general has greatly improved. This page has not been comprehensively updated since then, therefore anything relating to accuracy issues is likely to be obsolete, especially the part regarding accuracy statistics. (30 Jun 2002)


Back to front page,