NMEA Sentence Decoding
NMEA Sentence Decoding
Contents
All $GPxxx sentence codes and short descriptions
26 NMEA sentences output by GPS units
12 Garmin proprietary sentences output by GPS units
8 Garmin proprietary sentences received by GPS units
Format of Latitude and Longitude Coordinates
References
$GPDPT - Depth
$GPRPM - Revolutions
$GPRTE - Routes
[Top]
[Top]
$GPAAM
Waypoint Arrival Alarm
This sentence is generated by some units to indicate the Status of arrival (entering the
arrival circle, or passing the perpendicular of the course line) at the destination
waypoint.
$GPAAM,A,A,0.10,N,WPTNME*32
Where:
AAM Arrival Alarm
A Arrival circle entered
A Perpendicular passed
0.10 Circle radius
N Nautical miles
WPTNME Waypoint name
*43 Checksum data
$GPALM
GPS Almanac Data
Example 1: $GPALM,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,*CC
Example 2:
$GPALM,1,1,15,1159,00,441d,4e,16be,fd5e,a10c9f,4a2da4,686e81,58cbe1,0a4,001*77
$GPAPB
Autopilot format "B"
This sentence is sent by some GPS receivers to allow them to be used to control an
autopilot unit. This sentence is commonly used by autopilots and contains navigation
receiver warning flag status, cross-track-error, waypoint arrival status, initial bearing
from origin waypoint to the destination, continuous bearing from present position to
destination and recommended heading-to-steer to destination waypoint for the active
navigation leg of the journey.
$GPAPB,A,A,0.10,R,N,V,V,011,M,DEST,011,M,011,M*3C
where:
APB Autopilot format B
A Loran-C blink/SNR warning, general warning
A Loran-C cycle warning
0.10 cross-track error distance
R steer Right to correct (or L for Left)
N cross-track error units - nautical miles (K for kilometers)
V arrival alarm - circle
V arrival alarm - perpendicular
011,M magnetic bearing, origin to destination
DEST destination waypoint ID
011,M magnetic bearing, present position to destination
011,M magnetic heading to steer (bearings could True as 033,T)
$GPBOD
Bearing Origin to Destination
eg. BOD,045.,T,023.,M,DEST,START
045.,T bearing 045 degrees True from "START" to "DEST"
023.,M breaing 023 degrees Magnetic from "START" to "DEST"
DEST destination waypoint ID
START origin waypoint ID
Example 1: $GPBOD,099.3,T,105.6,M,POINTB,*48
Waypoint ID: "POINTB" Bearing 99.3 True, 105.6 Magnetic
This sentence is transmitted in the GOTO mode, without an active route on your GPS.
WARNING: this is the bearing from the moment you press enter in the GOTO page to
the destination waypoint and is NOT updated dynamically! To update the information,
(current bearing to waypoint), you will have to press enter in the GOTO page again.
Example 2: $GPBOD,097.0,T,103.2,M,POINTB,POINTA*4A
This sentence is transmitted when a route is active. It contains the active leg
information: origin waypoint "POINTA" and destination waypoint "POINTB", bearing
between the two points 97.0 True, 103.2 Magnetic. It does NOT display the bearing
from current location to destination waypoint! WARNING Again this information does
not change until you are on the next leg of the route. (The bearing from POINTA to
POINTB does not change during the time you are on this leg.)
$GPBWC
Bearing and distance to waypoint, great circle
eg1. $GPBWC,081837,,,,,,T,,M,,N,*13
BWC,225444,4917.24,N,12309.57,W,051.9,T,031.6,M,001.3,N,004*29
225444 UTC time of fix 22:54:44
4917.24,N Latitude of waypoint
12309.57,W Longitude of waypoint
051.9,T Bearing to waypoint, degrees true
031.6,M Bearing to waypoint, degrees magnetic
001.3,N Distance to waypoint, Nautical miles
004 Waypoint ID
eg2. $GPBWC,220516,5130.02,N,00046.34,W,213.8,T,218.0,M,0004.6,N,EGLM*21
1 2 3 4 5 6 7 8 9 10 11 12 13
1 220516 timestamp
2 5130.02 Latitude of next waypoint
3 N North/South
4 00046.34 Longitude of next waypoint
5 W East/West
6 213.0 True track to waypoint
7 T True Track
8 218.0 Magnetic track to waypoint
9 M Magnetic
10 0004.6 range to waypoint
11 N unit of range to waypoint, N = Nautical miles
12 EGLM Waypoint name
13 *11 checksum
$GPGGA
Global Positioning System Fix Data
eg1. $GPGGA,170834,4124.8963,N,08151.6838,W,1,05,1.5,280.2,M,-34.0,M,,,*59
Global Positioning System Fix Data. Time, position and fix related data for a GPS
receiver.
eg2.
$GPGGA,hhmmss.ss,ddmm.mmm,a,dddmm.mmm,b,q,xx,p.p,a.b,M,c.d,M,x.x,nnnn
$GPGLL
Geographic Position, Latitude / Longitude and time.
eg1. $GPGLL,3751.65,S,14507.36,E*77
eg2. $GPGLL,4916.45,N,12311.12,W,225444,A*31
eg3. $GPGLL,5133.81,N,00042.25,W*75
1 2 3 4 5
a = N or S
yyyyy.yy = Longitude of position
a = E or W
hhmmss.ss = UTC of position
A = status: A = valid data
$GPGRS
GPS Range Residuals
Example: $GPGRS,024603.00,1,-1.8,-2.7,0.3,,,,,,,,,*6C
$GPGSA
GPS DOP and active satellites
eg1. $GPGSA,A,3,,,,,,16,18,,22,24,,,3.6,2.1,2.2*3C
eg2. $GPGSA,A,3,19,28,14,18,27,22,31,39,,,,,1.7,1.0,1.3*34
1 = Mode:
M=Manual, forced to operate in 2D or 3D
A=Automatic, 3D/2D
2 = Mode:
1=Fix not available
2=2D
3=3D
3-14 = PRN's of Satellite Vechicles (SV's) used in position fix (null for unused fields)
15 = Position Dilution of Precision (PDOP)
16 = Horizontal Dilution of Precision (HDOP)
17 = Vertical Dilution of Precision (VDOP)
$GPGST
GPS Pseudorange Noise Statistics
Example: $GPGST,024603.00,3.2,6.6,4.7,47.3,5.8,5.6,22.0*58
$GPGSV
GPS Satellites in view
eg. $GPGSV,3,1,11,03,03,111,00,04,15,270,00,06,01,010,00,13,06,292,00*74
$GPGSV,3,2,11,14,25,170,00,16,57,208,39,18,67,296,40,19,40,246,00*74
$GPGSV,3,3,11,22,42,067,42,24,14,311,43,27,05,244,00,,,,*4D
$GPGSV,1,1,13,02,02,213,,03,-3,000,,11,00,121,,14,13,172,05*62
$GPHDT
Heading, True.
Actual vessel heading in degrees Ture produced by any device or system producing
true heading.
$--HDT,x.x,T
x.x = Heading, degrees True
$GPMSK
Control for a Beacon Receiver
$GPMSK,318.0,A,100,M,2*45
where:
318.0 Frequency to use
A Frequency mode, A=auto, M=manual
100 Beacon bit rate
M Bitrate, A=auto, M=manual
2 frequency for MSS message status (null for no status)
*45 checksum
$GPMSS
Beacon Receiver Status
Example 1: $GPMSS,55,27,318.0,100,*66
where:
55 signal strength in dB
27 signal to noise ratio in dB
318.0 Beacon Frequency in KHz
100 Beacon bitrate in bps
*66 checksum
Example 2: $GPMSS,0.0,0.0,0.0,25,2*6D
$GPR00
List of waypoint IDs in currently active route
eg1. $GPR00,EGLL,EGLM,EGTB,EGUB,EGTK,MBOT,EGTB,,,,,,,*58
eg2. $GPR00,MINST,CHATN,CHAT1,CHATW,CHATM,CHATE,003,004,005,006,007,,,*05
$GPRMA
Recommended minimum specific Loran-C data
eg. $GPRMA,A,lll,N,lll,W,x,y,ss.s,ccc,vv.v,W*hh
A = Data status
lll = Latitude
N = N/S
lll = longitude
S = W/E
x = not used
y = not used
ss.s = Speed over ground in knots
ccc = Course over ground
vv.v = Variation
W = Direction of variation E/W
hh = Checksum
$GPRMB
Recommended minimum navigation information (sent by nav. receiver when a
destination waypoint is active)
eg1. $GPRMB,A,0.66,L,003,004,4917.24,N,12309.57,W,001.3,052.5,000.5,V*20
eg2. $GPRMB,A,4.08,L,EGLL,EGLM,5130.02,N,00046.34,W,004.6,213.9,122.9,A*3D
1 2 3 4 5 6 7 8 9 10 11 12 13
1 A validity
2 4.08 off track
3 L Steer Left (L/R)
4 EGLL last waypoint
5 EGLM next waypoint
6 5130.02 Latitude of Next waypoint
7 N North/South
8 00046.34 Longitude of next waypoint
9 W East/West
10 004.6 Range
11 213.9 bearing to waypt.
12 122.9 closing velocity
13 A validity
14 *3D checksum
eg3. $GPRMB,A,x.x,a,c--c,d--d,llll.ll,e,yyyyy.yy,f,g.g,h.h,i.i,j*kk
1 = Data Status (V=navigation receiver warning)
2 = Crosstrack error in nautical miles
3 = Direction to steer (L or R) to correct error
4 = Origin waypoint ID#
5 = Destination waypoint ID#
6 = Destination waypoint latitude
7 = N or S
8 = Destination waypoint longitude
9 = E or W
10 = Range to destination in nautical miles
11 = Bearing to destination, degrees True
12 = Destination closing velocity in knots
13 = Arrival status; (A=entered or perpendicular passed)
14 = Checksum
$GPRMC
Recommended minimum specific GPS/TRANSIT data
eg1. $GPRMC,081836,A,3751.65,S,14507.36,E,000.0,360.0,130998,011.3,E*62
eg2. $GPRMC,225446,A,4916.45,N,12311.12,W,000.5,054.7,191194,020.3,E*68
eg3. $GPRMC,220516,A,5133.82,N,00042.24,W,173.8,231.8,130694,004.2,W*70
1 2 3 4 5 6 7 8 9 10 11 12
eg4. for NMEA 0183 version 3.00 active the Mode indicator field is added
$GPRMC,hhmmss.ss,A,llll.ll,a,yyyyy.yy,a,x.x,x.x,ddmmyy,x.x,a,m*hh
Field #
1 = UTC time of fix
2 = Data status (A=Valid position, V=navigation receiver warning)
3 = Latitude of fix
4 = N or S of longitude
5 = Longitude of fix
6 = E or W of longitude
7 = Speed over ground in knots
8 = Track made good in degrees True
9 = UTC date of fix
10 = Magnetic variation degrees (Easterly var. subtracts from true course)
11 = E or W of magnetic variation
12 = Mode indicator, (A=Autonomous, D=Differential, E=Estimated, N=Data not valid)
13 = Checksum
$GPRTE
Routes
eg. $GPRTE,2,1,c,0,PBRCPK,PBRTO,PTELGR,PPLAND,PYAMBU,PPFAIR,PWARRN,PMORTL,PLISMR*73
$GPRTE,2,2,c,0,PCRESY,GRYRIE,GCORIO,GWERR,GWESTG,7FED*34
1 2 3 4 5 ..
$GPTRF
TRANSIT Fix Data
Time, date, position, and information related to a TRANSIT Fix. The $GPTRF and
$GPGXA sentences became obsolete when the TRANSIT satellite navigation system
was replaced with GPS in 1996.
$--TRF,hhmmss.ss,xxxxxx,llll.ll,a,yyyyy.yy,a,x.x,x.x,x.x,x.x,xxx
hhmmss.ss = UTC of position fix
xxxxxx = Date: dd/mm/yy
llll.ll,a = Latitude of position fix, N/S
yyyyy.yy,a = Longitude of position fix, E/W
x.x = Elevation angle
x.x = Number of iterations
x.x = Number of Doppler intervals
x.x = Update distance, nautical miles
x.x = Satellite ID
$GPSTN
Multiple Data ID.
This sentence is transmitted before each individual sentence where there is a need for
the Listener to determine the exact source of data in the system. Examples might
include dual-frequency depthsounding equipment or equipment that integrates data
from a number of sources and produces a single output.
$--STN,xx
xx = Talker ID number, 00 to 99
$GPVBW
Dual Ground / Water Speed
$--VBW,x.x,x.x,A,x.x,x.x,A
x.x = Longitudinal water speed, knots
x.x = Transverse water speed, knots
A = Status: Water speed, A = Data valid
x.x = Longitudinal ground speed, knots
x.x = Transverse ground speed, knots
A = Status: Ground speed, A = Data valid
$GPVTG
Track Made Good and Ground Speed.
eg1. $GPVTG,360.0,T,348.7,M,000.0,N,000.0,K*34
eg2. $GPVTG,054.7,T,034.4,M,005.5,N,010.2,K*48
eg3. for NMEA 0183 version 3.00 active the Mode indicator field
is added at the end
$GPVTG,054.7,T,034.4,M,005.5,N,010.2,K,A*25
A Mode indicator (A=Autonomous, D=Differential,
E=Estimated, N=Data not valid)
$GPWPL
Waypoint location
eg1. $GPWPL,4917.16,N,12310.64,W,003*65
eg2. $GPWPL,5128.62,N,00027.58,W,EGLL*59
1 2 3 4 5 6
$GPXTE
Cross Track Error, Measured
eg1. $GPXTE,A,A,0.67,L,N*6F
A General warning flag V = warning
(Loran-C Blink or SNR warning)
A Not used for GPS (Loran-C cycle lock flag)
0.67 cross track error distance
L Steer left to correct error (or R for right)
N Distance units - Nautical miles
eg2. $GPXTE,A,A,4.07,L,N*6D
1 2 3 4 5 6
1 A validity
2 A cycle lock
3 4.07 distance off track
4 L steer left (L/R)
5 N distance units
6 *6D checksum
$GPZDA
UTC Date / Time and Local Time Zone Offset
Example 1: $GPZDA,hhmmss.ss,dd,mm,yyyy,zz,zz*cc
Example 2: $GPZDA,024611.08,25,03,2002,00,00*6A
[Top]
[Top]
$HCHDG
Compass Heading
This sentence is used on Garmin eTrex summit, Vista and GPS76S receivers to output
the value of the internal flux-gate compass. Only the magnetic heading and magnetic
variation is shown in the message.
$HCHDG,101.1,,,7.1,W*3C
where:
HCHDG Magnetic heading, deviation, variation
101.1 heading
,, deviation (no data)
7.1,W variation
$PGRMB
DGPS Beacon Information
$PGRMB,1,2,3,4,5,6,7,8,9*HH
1 = Tune frequency, Kilohertz (283.5 - 325.0 in 0.5 steps)
2 = Bit rate, Bits / second (0, 25, 50, 100, 200)
3 = SNR (Signal to Noise Ratio), 0 - 31
4 = Data Quality, 0 - 100
5 = Distance to beacon reference station
6 = Distance unit (K=Kilometres)
7 = Receiver communication status (0=Check wiring, 1=No signal, 2=Tuning,
3=Receiving, 4=Scanning)
8 = Fix source (R=RTCM, W=WAAS, N=Non-DPGS fix)
9 = DGPS Mode (A=Automatic, W=WAAS only, R=RTCM Only, N=None; DGPS
disabled)
HH = Checksum
$PGRMC
Sensor Configuration Information
Used to configure the GPS sensor's operation. The GPS will also transmit this sentence
upon receiving this same sentence or the $PGRMCE sentence.
$PGRMC,1,2,3,4,5,6,7,8,9,10,11,12,13,14*HH
1 = Fix mode (A=Automatic, 2=2D exclusively; host system must supply altitude, 3=3D
exclusively)
2 = Altitude above/below mean sea level, metres
3 = Earth datum index. If the user datum index is specified (96), fields 4 to 8 must
contain valid values, otherwise they must be blank.
4 = Semi-major axis, metres, 0.001 metre resolution
5 = Inverse flattening factor, 285 to 310, 10e-9 resolution
6 = Delta X earth centred coordinate, metres, -5000 to 5000, 1 metre resolution
7 = Delta Y earth centred coordinate, metres, -5000 to 5000, 1 metre resolution
8 = Delta Z earth centred coordinate, metres, -5000 to 5000, 1 metre resolution
9 = Differential mode (A=Automatic; output DGPS fixes when available otherwise non-
DGPS, D=Only output differential fixes)
10 = NMEA 0183 baud rate (1=1200, 2=2400, 3=4800, 4=9600, 5=19200, 6=300,
7=600)
11 = Velocity filter (0=None, 1=Automatic, 2-255=Filter time constant; seconds)
12 = PPS mode (1=None, 2=1 Hertz)
13 = PPS pulse length, N = 0 to 48. Length (milliseconds) = (N+1)*20
14 = Dead reckoning valid time, 1 to 30, seconds
HH = Checksum
$PGRMC1
Additional Sensor Configuration Information
Used to configure additional aspects of the GPS sensor's operation. The GPS will also
transmit this sentence upon receiving this same sentence or the $PGRMC1E sentence.
$PGRMC1,1,2,3,4,5,6,7,8,9*HH
1 = NMEA 0183 output time, 1-900, seconds (Not applicable to GPS16A)
2 = Binary phase output data (1=Off, 2=On)
3 = Position pinning (1=Off, 2=On)
4 = DGPS beacon frequency, Kilohertz, 283.5 to 325.0 in 0.5 steps
5 = DGPS beacon bit rate (0, 25, 50, 100, 200)
6 = DGPS beacon scanning (1=Off, 2=On)
7 = NMEA 0183 version 3.00 mode indicator (1=Off, 2=On)
8 = DGPS mode (A=Automatic, W=WAAS only, R=RTCM only, N=None; DGPS
disabled)
9 = Power save mode (P=Activated, N=Normal)
HH = Checksum
$PGRME
Estimated Position Error
eg. $PGRME,15.0,M,45.0,M,25.0,M*1C
$PGRMF
GPS Position Fix Data
$PGRMF,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15*HH
1 = GPS week number
2 = GPS seconds in current week
3 = UTC date, ddmmyy format
4 = UTC time, hhmmss format
5 = GPS leap second count
6 = Latitude, dddmm.mmmm format
7 = Latitude hemisphere, N or S
8 = Longitude, dddmm.mmmm format
9 = Longitude hemisphere, E or W
10 = Mode (M=Manual, A=Automatic)
11 = Fix type (0=No fix, 1=2D fix, 2=3D fix)
12 = Speed over ground, kilometres / hour
13 = Course over ground, degrees true
14 = PDOP (Position dilution of precision), rounded to nearest integer
15 = TDOP (Time dilution of precision), rounded to nearest integer
HH = Checksum
$PGRMI
Sensor Initialization Information
Used to set the GPS sensor's set time and position and then commences satellite
acquisition. The GPS will also transmit this sentence upon receiving this same
sentence or the $PGRMIE sentence.
$PGRMI,1,2,3,4,5,6,7*HH
1 = Latitude, dddmm.mmm format
2 = Latitude hemisphere, N or S
3 = Longitude, dddmm.mmm format
4 = Longitude hemisphere, N or S
5 = Current UTC date, ddmmyy format
6 = Current UTC time, hhmmss format
7 = Receiver command (A=Auto locate, R=Unit reset)
HH = Checksum
$PGRMM
Map datum
$PGRMT
Sensor Status Information
$PGRMT,1,2,3,4,5,6,7,8,9*HH
1 = Garmin product model and software version (eg. GPS 16 VER 2.10)
2 = ROM checksum test (P=Pass, F=Fail)
3 = Receiver failure discrete (P=Pass, F=Fail)
4 = Stored data lost (R=Retained, L=Lost)
5 = Real time clock lost (R=Retained, L=Lost)
6 = Oscillator drift discrete (P=Pass, F=Excessive drift detected)
7 = Data collection discrtete (C=Collecting, Null=Not Collecting)
8 = GPS sensor temperature (Degrees C)
9 = GPS sensor configuration data (R=Retained, L=Lost)
HH = Checksum
$PGRMV
3D Velocity Information
$PGRMV,1,2,3*HH
1 = True east velocity, metres / sec
2 = True north velocity, metres / sec
3 = Upward velocity, metres / sec
HH = Checksum
$PGRMZ
Altitude Information
eg1. $PGRMZ,246,f,3*1B
eg2. $PGRMZ,93,f,3*21
eg3. $PGRMZ,201,f,3*18
1 2 3
1 201 Altitude
2 F Units - f-Feet
3 checksum
$PSLIB
Tune DPGS Beacon Receiver
eg1. $PSLIB,290.5,100,J*33
eg2. $PSLIB,300.0,200,K*3C
These two sentences are normally sent together in each group of sentences from the
GPS.
The three fields are: Frequency, bit Rate, Request Type. The value in the third field may
be: J = status request, K = configuration request, blank = tuning message.
When the GPS receiver is set to change the DBR frequency or baud rate, the "J"
sentence is replaced (just once) by (for example): $PSLIB,320.0,200*59 to set the DBR
to 320 KHz, 200 baud.
$PSLIB,1,2*HH
1 = Beacon tune frequency, Kilohertz (283.5 - 325.0 in 0.5 steps)
2 = Beacon bit rate, Bits / second (0, 25, 50, 100, 200
HH = Checksum
[Top]
A few Garmin GPS receiver units are known to receive these sentences, including the
GPS 16 and GPS 17 modules.
[Top]
$PGRMCE
Sensor Configuration Information Enquiry
The unit will respond by transmitting a $PGRMC sentence containing the current
default values.
$PGRMCE*HH
HH = Checksum
$PGRMC1E
Additional Sensor Configuration Information Enquiry
The unit will respond by transmitting a $PGRMC1 sentence containing the current
default values.
$PGRMC1E*HH
HH = Checksum
$PGRMIE
Sensor Initialization Information Enquiry
The unit will respond by transmitting a $PGRMI sentence containing the current default
values.
$PGRMIE*HH
HH = Checksum
$PGRMO
Output Sentence Enable / Disable
$PGRMO,xxxxx,n*HH
xxxxx = Target sentence name (eg. GPGGA, GPGSA)
n = Target mode (0=Disable specified sentence, 1=Enable specified sentence,
2=Disable all output sentences except PSLIB, 3=Enable all output sentences except
GPALM, 4=Restore factory defaults)
HH = Checksum
[Top]
eg. 4533.35 is 45 degrees and 33.35 minutes. ".35" of a minute is exactly 21 seconds.
eg. 16708.033 is 167 degrees and 8.033 minutes. ".033" of a minute is about 2
seconds.
[Top]
References
This information on NMEA sentences has been obtained from many sites on the
internet amd is not guaranteed to be accurate or correct.
NMEA retires GPS sentences and adds new ones from time to time.