= gpxlogger(1)
Amaury Jacquot; Petter Reinholdtsen; Chris Kuethe
:email_1: sxpert@sxpert.org
:email_2: pere@hungry.com
:email_3: chris.kuethe@gmail.com
:date: 1 December 2022
:keywords: gps, gpsd, gpx, gpxlogger
:manmanual: GPSD Documentation
:mansource: GPSD, Version {gpsdver}
:robots: index,follow
:sectlinks:
:toc: macro
:type: manpage

include::../www/inc-menu.adoc[]

== NAME

gpxlogger - Tool to connect to gpsd and generate a GPX file

== SYNOPSIS

*gpxlogger* [OPTIONS] [server[:port[:device]]]

*gpxlogger* -h

*gpxlogger* -V

== DESCRIPTION

*gpslogger* program collects fixes from *gpsd* and logs them to standard output
in GPX format, an XML profile for track logging.  It does not need
to run as root, but can run as root.

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

*gpxlogger* can use any of the export methods that *gpsd* supports. For
a list of these methods, use the *-l* or *--exports* option. To force
a method, give the *-e*, *--export* option folloed by one of the
colon-terminated method names from the *-l*, *--exports* table.

== OPTIONS

*-?*, *-h*, *--help*::
  Print a summary of options and then exit.
*-d*, *--daemonize*::
  Run as a daemon in background. It requires the *-f, --output*
  option, which directs output to a specified logfile.
*-D LVL*, *--debug LVL*::
  Sets the debug level, it is primarily for troubleshooting. It enables
  various progress messages to standard error.
*-e METHOD*, *--export METHOD*::
  If D-Bus support is available on the host, GPSD is configured to use
  it, and *-e dbus*, or *--export dbus* is specified, this program
  listens to DBUS broadcasts from *gpsd* via org.gpsd.fix.
+
With *-e sockets*, or if sockets is the method defaulted to, you may
give a [server[:port[:device]]] specification as arguments.  See the
*ARGUMENTS* section below for more details.
+
With *-e shm, --export shm* this program will listen to the local
*gpsd* using shared memory.

*-f OUTFILE*, *--output OUTFILE*::
  Output the GPX logg to file file OUTFILE, instead of to stdout..
  You may use strftime(3) options int OUTFILE.
*-F INFILE*, *--filein INFILE*::
  Read *gpsd* JSON from file INFILE, instead of from a *gpsd* daemon.
*-g*, *--garmin*::
  Enable Garmin extensions to GPX format.  This allows depth to also
  be logged in the gpx output.  Not compatible with Google maps.
*-i SECONDS*, *--interval SECONDS*::
  A new track is created if there's no fix written for an interval of
  SECONDS. Defaulting to 5 seconds.
*-l*, *--exports*::
  List all possible options for *-e, --export*.
*-m MINMOVE*, *--minmove MINMOVE*::
  Sets a minimum move distance in meters (it may include a fractional
  decimal part). Motions shorter than this will not be logged.
*-r*, *--reconnect*::
  Retry when GPSd loses the fix. Without *-r*, *gpxlogger* would quit in
  this case.
*-V*, *--version*::
  Dump the package version and exit.

== ARGUMENTS

By default, clients collect data from the local *gpsd* daemon running
on localhost, using the default GPSD port 2947. The optional argument
to any client may override this behavior: *[server[:port[:device]]]*

For further explanation, and examples, see the *ARGUMENTS* section in
the *gps*(1) man page

== RETURN VALUES

*0*:: on success.
*1*:: on failure

NOTE: spxlogger sends error messages to the system log, not to
stderr.

== EXAMPLES

To daemonize, and  output the gpx log to a date stamped filename:

$ gpxlogger -d -f "out-%c.gpx"

== SEE ALSO

*gps*(1)

*strftime*(3)

*gpsd*(8)

== RESOURCES

*Project web site:* {gpsdweb}

== COPYING

This file is Copyright 2013 by the GPSD project +
SPDX-License-Identifier: BSD-2-clause
