xgps(1) test clients for gpsd

Other Alias

gps, xgpsspeed, cgps, lcdgps


xgps [-D debug-level] [-h] [-V] [-l [[d] | [m] | [s]]] [-u [[i] | [n] | [m]]] [server [:port [:device]]]
xgpsspeed [-D debug-level] [-h] [-V] [--speedunits {[mph] | [kph] | [knots]}] [server [:port [:device]]]
cgps [-D debug-level] [-h] [-V] [-l [[d] | [m] | [s]]] [-m] [-s] [-u [[i] | [n] | [m]]] [server [:port [:device]]]
lcdgps [-h] [-V] [-l [[d] | [m] | [s]]] [-u [[i] | [n] | [m]]] [server [:port [:device]]]
gpxlogger [-D debug-level] [-h] [-V] [-i track timeout] [server [:port [:device]]]


These are the demonstration clients shipped with gpsd. They have some common options:

The -h option causes each client to emit a summary of its options and then exit.

The -V option causes each client to dump the package version and exit.

The -l option, when present, sets the format of latitude and longitude reports. The value 'd' produces decimal degrees and is the default. The value 'm' produces degrees and decimal minutes. The value 's' produces degrees, minutes, and decimal seconds.

xgps, cgps, and ldcgps look at variables in the environment to figure out what units they should default to using for display --- imperial, nautical, or metric. Here are the variables and values they check:

    GPSD_UNITS one of: 
              imperial   = miles/feet
              nautical   = knots/feet
              metric     = km/meters
              en_US      = miles/feet
              C          = miles/feet
              POSIX      = miles/feet
              [other]    = km/meters
              en_US      = miles/feet
              C          = miles/feet
              POSIX      = miles/feet
              [other]    = km/meters

These preferences may be overridden by the -u option.

Where present, the -u option can be used to set the system units for display; follow the keyword with 'i' for 'imperial' for American units (feet in altitude and error estimates, miles per hour in speeds), 'n' for 'nautical' (feet in altitude and error estimates, knots in speed) or 'm' for 'metric' (meters in altitude and error estimates, kiliometers per hour in speeds).

The -D option, when present, sets a debug level; it is primarily for use by GPSD developers. It enables various progress messages to standard error.

By default, clients collect data from all compatible devices on localhost, using the defalt GPSD port 2947. An optional argument to any client may specify a server to get data from. A colon-separated suffix is taken as a port number. If there is a second colon-separated suffix, that is taken as a specific device name to be watched. However, if the server specification contains square brackets, the part inside them is taken as an IPv6 address and port/device suffixes are obnly parsed after the trailing bracket. Possible cases look like this:


Look at the default port of localhost, trying both IPv4 and IPv6 and watching ouput from serial device 1.


Look at port 2317 on example.com, trying both IPv4 and IPv6.

Look at port 2317 at the specified IPv4 address, collecting data from attached serial device 3.


Look at port 2317 at the specified IPv6 address, collecting data from attached serial device 5.

Not all clients shipped with GPSD are documented here. See also the separate manual pages for gpspipe(1) and gpsmon(1).


xgps is a simple test client for gpsd with an X interface. It displays current GPS position/time/velocity information and (for GPSes that support the feature) the locations of accessible satellites.

In the sky view, satellites are color-coded to indicate quality of signal; consult the data display to the left for exact figures in dB. Square icons indicate WAAS/EGNOS satellites, circles indicate ordinary GPS satellites. Filled icons were used in the last fix, outline icons were not.


xgpsspeed is a speedometer that uses position information from the GPS. It accepts an -h option and optional argument as for gps, or a -V option to dump the package version and exit.

The -speedunits option can be used to set the speed units for display; follow the keyword with knots for nautical miles per hour, kph for kilometres per hour, or mph for miles per hour. The default is miles per hour.


cgps is a client resembling xgps, but without the pictorial satellite display and able to run on a serial terminal or terminal emulator.

The -s option prevents cgps from displaying the raw data. This display can also be toggled with the s command.

The -m option will display your magnetic heading (as opposed to your true heading). This is a calculated value, not a measured value, and is subject to a potential error of up to two degrees in the areas for which the calculation is valid (currently Western Europe, Alaska, and Lower 48 in the USA). The formulas used are those found in the Aviation Formulary v1.43.

cgps terminates when you send it a SIGHUP or SIGINT; given default terminal settings this will happen when you type Ctl-C at it. It will also terminate on 'q'


A client that passes gpsd data to lcdproc, turning your car computer into a very expensive and nearly feature-free GPS receiver. Currently assumes a 4x40 LCD and writes data formatted to fit that size screen. Also displays 4- or 6-character Maidenhead grid square output.


This program collects fixes from gpsd and logs them to standard output in GPX, an XML profile for track logging.

The output may be composed of multiple tracks. A new track is created if there's no fix for an interval specified by the -i and defaulting to 5 seconds.

If D-Bus support is available on the host and GPSD is configured to use it, this program listens to DBUS broadcasts from gpsd. (org.gpsd.fix). Otherwise, it uses a conventional socket connection.

Presence of a server-port-device specification forces use of sockets even on a D-Bus capable system, though this is unlikely to be of interest to anyone except GPSD developers.


Remco Treffcorn, Derrick Brashear, Russ Nelson & Eric S. Raymond, Jeff Francis (cgps). Amaury Jacquot [email protected] & Petter Reinholdtsen [email protected] (gpxlogger). Chris Kuethe [email protected] (cgpxlogger).

This manual page by Eric S. Raymond [email protected] There is a project page, with xgps screenshots, at m[blue]berlios.dem[][1].