gpsdecode (1) - Linux Manuals

gpsdecode: decode GPS, RTCM or AIS streams into a readable format


gpsdecode - decode GPS, RTCM or AIS streams into a readable format


gpsdecode [-c] [-d] [-e] [-j] [-s] [-t typelist] [-u] [-v] [-D debuglevel] [-V]


This tool is a batch-mode decoder for NMEA and various binary packet formats associated with GPS, AIS, and differential-correction services. It produces a JSON dump on standard output from binary on standard input. The JSON is the same format documented in gpsd(8); this tool uses the same decoding logic as gpsd, but with a simpler interface intended for batch processing of data files.

All sensor-input formats known to the GPSD project can be decoded by this tool. These include: NMEA, AIVDM (the NMEA-derived sentence format used by AIS, the marine Automatic Identification System), RTCM2, and all supported GPS binary formats (notably including SiRF). See gpsd(8) for applicable standards and known limitations of the decoding logic.

You can use this tool with nc(1) to examine AIS feeds from AIS pooling services, RTCM feeds from RTCM receivers or NTRIP broadcasters.


The -d option tells the program to decode packets presented on standard input to standard output. This is the default behavior.

The -j explicitly sets the output dump format to JSON (the default behavior).

The -e option option tells the program to encode JSON on standard input to JSON on standard output. This option is only useful for regression-testing of the JSON dumping and parsing code.

The -s option option tells the program to report AIS Type 24 sentence halves separately rather than attempting to aggregate them.

The -t accepts a comma-separated list of numeric types. Packets with a numeric AIS, RTCM2, or RTCM3 type are passed through and output only if they match a type in the list. Packets of other kinds (in particular GPS packets) are passed through unconditionally.

The -u suppresses scaling of AIS data to float quantities and text expansion of numeric codes. A dump with this option is lossless.

The -v enables dumping of textual packets to output as they are received on input, immediately preceding corresponding output.

The -c sets the AIS dump format to separate fields with an ASCII pipe symbol. Fields are dumped in the order they occur in the AIS packet. Numerics are not scaled (-u is forced). Strings are unpacked from six-bit to full ASCII

The -V option directs the program to emit its version number, then exit.

The -D option sets a debug verbosity level. It is mainly of interest to developers.


With the -c option, dump lines are values of AIS payload fields, pipe-separated, in the order that they occur in the payload. Spans of fields expressing a date are emitted as an ISO8601 timestamp (look for colons and the trailing Z indicating Zulu/UTC time), and the 19-bit group of TDMA status fields found at the end of message types 1-4 are are dumped as a single unsigned integer (in hex preceded by "0x"). Unused regional-authority fields are also dumped (in hex preceded by "0x"). Variable-length binary fields are dumped as an integer bit length, followed by a colon, followed by a hex dump.


Eric S. Raymond <esr [at]>.


gpsd(8), gpsctl(1), gpsdctl(8), gps(1), libgps(3), libgpsd(3), gpsprof(1), gpsfake(1),