Reference links on GPS technology
Description: Programmer's references for GPSD
Keywords: GPS, translator, GIS

Programmer's References

This page lists both onsite and offsite resources for programmers trying to understand GPS technology.

In the descriptions below, the adjective "evil" applied to the distribution terms of a standard or technical specification means that (a) it is not available for free download, and (b) it cannot legally be redistributed. The phrase "extremely evil" means that not only are the distribution terms evil, but that attack lawyers for the document publisher have been known to threaten people who quote it on the Web.

# GPS standards

NMEA 0183
  This is the official standard from the National Maritime Electronics Association describing how GPSes are supposed to report to computers over a serial or USB link. The distribution terms are extremely evil. Consequently, nobody on the GPSD project has ever looked at it.
NMEA sentences
  Because the NMEA 0183 standard itself is extremely evil, the GPSD project has collated comprehensive information on the prescriptions of that standard from various Web resources written by people who have read it and/or studied the behavior of GPSes claiming to conform to it. This is the result.
AIVDM/AIVDO protocol decoding
  This document describes AIVDM, a standard layered on top of NMEA 0183 and used for the marine Automatic Identification Syustem (AIS). The AIVDM standard is also evil, so the GPSD project is collecting information on it from non-evil sources as a public service.
NMEA data
  This is one of the sources for the above. Includes some information on vendor-specific quirks that we don't.
Navstar Global Positioning Interface Specification
  This is the official specification for interpreting radio transmission from GPS satellites. You do not need to read this unless you are trying to make sense of the raw 50BPS subframe data. Be warned: though this specification is not evil, it is complex and nasty.
Standard Positioning Service Performance Specification (2008)
  This document defines the levels of performance the U.S. Government makes available to civil users through the GPS Standard Positioning Service (SPS). The 2001 version is here
World Geodetic System
  Technical and historical summary of WGS84.
WAAS System Specification
  This is the official specification for the FAA's Wide Area Augmentation System. The original document is here.
RTCM Recommended Standards for Differential GNSS
  This is the ordering page for the official RTCM SC-104 standards, both the obsolescent 2.x and current 3.x versions. The distribution terms are evil. At least one of the GPSD project members has purchased official copies, so we do have full details of the message format. Copies of some of these have leaked onto the Web and may be found by searching for "RTCM 10402.3" or "RTCM 10403.1".
ITU-R M.823-2
  This specification documents some of the murky depths of rtcm-104, the specification used for broadcasting differential-gps corrections. Unfortunately, its distribution terms are also evil.
Galileo Open Service SIS ICD
  This is draft 0 of the Galileo Open Service Signal In Space Interface Control Document. The latest version of the official standard can be requested here.
Ntrip home page
  NTRIP is a protocol for shipping DGPS corrections that uses HTTP as a transport layer. The distribution terms for the NTRIP standard are evil, but a stripped down version of the document is freely available on the home page. Version 1.0 of the standard is poorly written, confusing and leaves too much open to the interpretation of the implementor. With the help of examples in the official standard (missing in the online version) and the C and Perl reference implementations, it is however possible to develop a working Ntrip client.
GPX Exchange Format
  GPX (the GPS Exchange Format) is a light-weight XML data format for the interchange of GPS data (waypoints, routes, and tracks) between applications and Web services on the Internet. The GPSD suite incluses a client, `gpxlogger`, that makes logs in this format.

# GPS operation

NAVSTAR Global Positioning and Surveying
  US Army Corps of Engineers, Engineer Manual 1110-1-1003 "provides technical specifications and procedural guidance for surveying and mapping with the NAVSTAR Global Positioning System (GPS). ... Procedural and quality control standards are defined to establish... uniformity in the use of GPS..." This document offers significant insight into error modelling; anyone who dares to ask "so how accurate is my GPS?" should be gently encouraged to study it.
Worldwide Beacon DGPS Status
  This paper dates from 1999 and some of the information in it is therefore probably out of date. Nevertheless, it's the best public documentation on the history and architecture of the worldwide DGPS beacon system we've found.
Inside assisted GPS: helping GPS help you
  Good article on techniques for cutting GPS startup latency and increasing precision, mostly focused on assistance via cellphine networks.
Worldwide list of NTRIP Casters
  Master list of sites that provide RTCM correction info over the Internet.

# Vendor protocols

Due to the inadequacies of NMEA, GPS chipset vendors have invented NMEA extensions or their own more tightly-designed reporting formats. This is a collection of descriptions of them. Many of these have already been used in the implementation of `gpsd`; others may be used in the future.

If you have access to a GPS vendor manual we don't already carry, please send it to us. If it's live on the web, mailing the URL will be sufficient. The names in this SHA1 checksums file should be a good clue which ones we already have.

Good manuals generate customer interest and loyalty. Judging by the legal notices in them, either (a) many GPS vendors are run by people who think that making their documentation hard to get and illegal to redistribute doesn't damage their sales prospects, or (b) many GPS vendors unthinkingly slap in a boilerplate notice that makes them look like they are run by the aforementioned sort of idiot. We are blithely ignoring all this nonsense here. If you are a a GPS vendor representative, be advised that if you so request, we will (a) remove your manuals, and then (b) laugh at and publicly mock you for having been so stupid as to demand this.

## SiRF and SiRF variants

SiRF Binary Protocol Reference Manual (2.4, November 2008)
  The binary protocol for the chip used by over 80% of consumer-grade GPS mice. For comparsion we also have older versions: 2.2 (December 2007), 1.7 (October 2005) and 1.6 (April 2005) .
SiRF NMEA Protocol Reference Manual (2.2, November 2008)
  SiRF NMEA Protocol Reference Manual (2.1, December 2007)
SiRF GPS Protocol Reference Manual (revision 1.30, undated)
  This what SiRF gives OEMs as a reference for SiRF's NMEA 0183 extensions. Notably, it describes the commands for switching to SiRF binary mode.
TIM GPS Receiver Macro-Component (offsite link) (version E1, April 2003)
  Describes the SiRFstarII chipset used by uBlox and some others. `gpsd` supports it. While obsolete, this file documents certain aspects of the protocol that SiRF has removed from current versions of the protocol documentation.
u-blox extension to SiRF binary protocol (March 2002)
  u-blox was an OEM-enhanced firmware variant of the SiRF-1 chip. `gpsd` supports it. It's been rendered obsolete by the SiRF 2 and 3 chips.

For completeness, we carry copies of many ancient manuals for various SiRF-based units here. Some of these document things SiRF no longer describes in its reference.

## Fastrax

NMEA Protocol Specification for iTrax02 Evaluation Kit (Rev 1.11, June 2003)
  Describes the NMEA extensions for the iTrax chipset used by Fastrax GPSes. Supported by `gpsd`.
iTALK protocol specification (Rev 1.5, March 2002)
  Describes the binary protocol for the iTrax chipset used by Fastrax GPSes. This documents version 2; version 3, which is not actually backward compatible, is documented at the iSuite developer website, iTrax2 is not supported by `gpsd`, iTrax3 is somewhat functional.

## Garmin

GPS 16/17 Series Technical Specification (offsite link) (Revision C, October 2005)
  Describes the extended NMEA, with GARMIN proprietary sentences PGRMB, PGRME, PGRMF, PGRMM, PGRMT, and PGRMV (and optional GPALM sentence), emitted by the Garmin GPS16 and 17. For programming purposes, effectively identical to their earlier reference on the Garmin 15H and 15L.
GARMIN GPS Interface Specification (May 2006)
  The binary protocol used by Garmin USB GPSes. We also have the December 1999 version here; comparing them may be useful. Supported by `gpsd`.
Garmin Simple Text Protocol
  Some digital cameras are alleged to use this very simple textual report format.

## Novatel

Novatel Superstar II User Manual
  Describes the OEM board, include some good general overview material on GPS technology. Doesn't describe control or reporting commands.
Superstar-II-Firmware Reference Manual
  Describes the Novatel Superstar II binary protocol. This chipset is part-supported by GPSD; the driver is in development.

## San Jose Navigation

FV18 user manual (October 2002)
  Describes NMEA extensions supported by the San Jose Navigation FV-18 GPS chipset. Supported by `gpsd`.
FV25 user manual (January 2005)
  Describes UBX binary protocol and NMEA extensions supported by the San Jose Navigation FV-25 (uBlox ANTARIS) GPS chipset. UBX is now supported by `gpsd`.

## Trimble

TSIP reference (Revision C, 1999)
  Describes the TSIP binary protocol. Supported by `gpsd`.
CMR reference
  Describes the CMR protocol used by rimble to ship corrections for RTK (real-time kinematic) GPS. Not yet supported by `gpsd`.

For completeness, we also carry the manuals for the Trimble Ace 2, Copernicus, Lassen IQ, Lassen PT, Lassen SQ, Lassen PT, and SVeeEight GPS units. Some of these are more recent than the TSIP Reference and may document programming information that the does not.

## Other Current GPSes

CXD2951 Communication Command Specification (Version 1.7, 2004)
  Describes the extension command set supported by the Sony GPS CXD2951 chipset. Supported by `gpsd`.
Holux GM-210 GPS Receiver User's Guide (May 2003)
  Describes NMEA as emitted by the Holux GM210. This is a very generic NMEA GPS. Supported by `gpsd`.
GM-X205 GPS Receiver Module User's Guide (Issue D, August 2003)
  Describes the binary protocol emitted by EverMore GM-X205 GPS chipset. Supported by `gpsd`.
NavMan Jupiter (2005)
  Jupiters emit a variant of the obsolete Zodiac binary protocol. Probably supported by `gpsd`, though we have not been able to test with one of these yet.
Crescent Integrator's Manual (November 2005)
  Reference for the Hemisphere GPS from CSI Wireless. Has both an NMEA mode and a binary protocol. We have not been able to test with one of these, but the manual suggests `gpsd` should handle the NMEA mode just fine.
Thales A12/B12/C12 Reference Manual (Revision D, 2005)
  Reference for a line of Thales GPS modules appearently designed for embedded vehicle and cargo tracking. Uses a very extended dialect of NMEA they call the standard Ashtech command set. We have not been able to test with one of these, but the manual suggests `gpsd` should handle the NMEA mode just fine.
True North Revolution Compass Technical Reference (Revision B, August 2003)
  Interface spec for a digital magnetic compass that reports in NMEA. `gpsd` had support for this in versions up to 2.33; whether it keeps that status in later releases wiill depend on whether we can get test hardware.
WD-G-ZX4120 User's Manual (Version 1.0)
WD-G-ZX4125 User's Manual
  These files document a couple of modules based on NemeriX chips, and the NMEA extensions used. `gpsd` should just work in NMEA mode.
EB-230 User's Manual (Version 1.2)
  This file documents one elusive Mediatek GPS module, and the proprietary NMEA extensions used. `gpsd` should just work in NMEA mode.
Mediatek Packet User's Manual (Version 0.7)
  This file documents the proprietary Mediatek NMEA-ish protocol. `gpsd` should just work in NMEA mode.
LocSense Binary Message Protocol (Version 1.5)
  This file documents the LocSense binary message protocol. This protocol is currently unsupported. `gpsd` should just work in NMEA mode with LocSense based receivers.
Specifications for GPS Receiver GH-79L4-N
  Technical manual for the Furuno Electric GH-79L4-N. Probably representative for any other GPS using Furuno's chipset, which is however not identified.
Navcom Technical Reference Manual (rev. K, Aug 2008)
  Technical reference and protocol specifications for Navcom receivers.

## Obsolete products

Zodiac Serial Data Interface Specification (Revision 11, September 1996)
  Describes the binary protocol used by Rockwell/Conexant Zodiac chipsets. Supported by `gpsd`. Now obsolete; SiRF ate their lunch.
Axiom Sandpiper II Documentation (August 2000)
  We have archived the most complete available documentation on the Axiom Sandpiper II OEM module (discontinued, vendor has gone out of business). Supported by `gpsd`.
Motorola Oncore Eval Kit documents (Revision 3.2, June 1998)
  Describes Motorola's (apparently discontinued) OnCore GPS product. Supported by `gpsd` in NMEA mode only.

## Curiosities

Missile Applications Condensed Measurements
  An application note on a GPS protocol extension designed for real-time telemetry from ballistic missiles in flight. The complete spec is here.

# Other

ECEF-to-Geodetic C Code
  Sample C code for conversion from the Earth Centered-Earth Fixed coordinates reported by many vendor binary protocols to ordinary geodetic coordinates.
Aviation Formulary
  Compendium of formulas related to geodetic navigation, with examples.

Search for more information here:

Web | gpsd.berlios.de