Scroll to navigation

GPSPIPE(1) GPSD Documentation GPSPIPE(1)


gpspipe - tool to connect to gpsd and retrieve sentences


gpspipe [-2] [-?] [-d] [-D debug-level] [-h] [-l] [-n count] [-o filename] [-p] [-P] [-r] [-R] [-S] [-s serial-device] [-t] [-T timestamp-format] [-u] [-v] [-V] [-w] [-x seconds] [-Z] [server [:port [:device]]]


gpspipe is a tool to connect to gpsd and output the received sentences to stdout. This makes the program useful as a pipe from gpsd to another program or file.

gpspipe does not require root privileges, and can be run concurrently with other tools connecting to the local gpsd without causing problems.

The output will consist of one or both of the raw NMEA or native gpsd sentences. Each line can be optionally time stamped. There is also an option to exit gracefully after a given count of packets.

Optionally a server, TCP/IP port number and remote device can be given. If omitted, gpspipe connects to localhost on the default port (2947) and watches all devices opened by gpsd.

gpspipe may be run as a daemon, but requires the -o flag for writing the output to a file.


-2 sets the split24 flag on AIS reports. Note: this option is experimental and may be changed or removed in a future release.

-? makes gpspipe print a usage message and exit.

-d causes gpspipe to run as a daemon.

-D [debug-level] set debug level..

-h makes gpspipe print a usage message and exit.

-l causes gpspipe to sleep for ten seconds before attempting to connect to gpsd. This is very useful when running as a daemon, giving gpsd time to start before attempting a connection.

-n [count] causes [count] sentences to be output. gpspipe will then exit gracefully.

-o [filename] option causes the collected data to be written to the specified file. Use of this option is mandatory if gpspipe is run as a daemon.

-p enables dumping of profiling information in JSON.

-P enables dumping of PPS drift JSON in NMEA and raw modes.

-r causes raw NMEA sentences to be output.

-R causes super-raw (gps binary) data to be output. This overrides NMEA and gpsd output modes.

-s option causes the collected data to be written to the specified serial device with settings 4800 8N1. Thus gpspipe can be used with -s and -r options to emulate a serial port hardwired to a GPS that gpsd is managing.

-S sets the scaled flag. This is for AIS and subframe data, but currently appears to do nothing.

-t adds a UTC timestamp to each sentence output.

-T sets the format of the timestamp. See strftime(3) for the available placeholders. Setting this option implies -t. Default setting is "%F %T"

-u usec resolution time stamp, implies -t. Use -uu to output sec.usec.

-v causes gpspipe to show a spinning activity indicator on stderr. This is useful if stdout is redirected into a file or a pipe. By default the spinner is advanced with every messages written; specifying -v more than once will double the number of messages required to rotate the spinner.

-V prints the version, then exits.

-w causes native gpsd sentences to be output.

-x [seconds] Exit after delay of [seconds].

-Z sets the timestamp format iso8601: implies '-t'

At least one of -R, -r or -w must be specified.

You must use -o if you use -d.


When gpsd is running, gpspipe -r -n 100 will send one hundred raw NMEA sentences to standard output, then exit.

When gpsd is running, gpspipe -x 5 -w|sed -n '/TPV/{p;q}' will wait at most 5 seconds for a TPV message, print it to stdout, then exit.


gpsd(8), gps(1), libgps(3), libgpsmm(3), gpsprof(1), gpsfake(1), gpsctl(1), gpscat(1). gpsmon(1).


Gary E. Miller <>.
14 Dec 2018 The GPSD Project