gpsctl - control the modes of a GPS
gpsctl [-h] [-b | -n] [-x control] [-e] [-f] [-l] [-s speed]
[-t devicetype] [-D debuglevel] [-V] [serial-port]
gpsctl can switch a dual-mode GPS between NMEA and vendor-binary modes.
It can also be used to set the device baudrate. Note: Not all devices
have these capabilities.
If you have only one GPS attached to your machine, and gpsd is running,
it is not necessary to specify the device; gpsctl does its work through
gpsd, which will locate it for you.
When gpsd is not running, the device specification is required, and you
will almost certainly need to be running as root in order to have write
access to the device.
The program accepts the following options:
Put the GPS into binary mode. After the GPS resets itself, autobaud
to the new speed.
Change the GPS's cycle time. Units are seconds. Note, most GPSes
have a fixed cycle time of 1 second.
Generate the packet from any other arguments specified and ship it
to standard output instead of the device. This switch can be used
with the -t option without specifying a device. Note: the packet
data for a binary prototype will be raw, not ASCII-ized in any way.
Force low-level access (not through the daemon).
List a table showing which option switches can be applied to which
device types, and exit.
Put GPS into NMEA mode. After the GPS resets itself autobaud to its
Set the baud rate at which the GPS emits packets.
Use this option with caution. On USB and Bluetooth GPSes it is also
possible for serial mode setting to fail either because the serial
adaptor chip does not support non-8N1 modes or because the device
firmware does not properly synchronize the serrial adaptor chip
with the UART on the GPS chipset whjen the speed changes. These
failures can hang your device, possibly requiring a GPS power cycle
or (in extreme cases) physically disconnecting the NVRAM backup
Force the device type.
Send a specified control string to the GPS; gpsctl will provide
packet headers and trailers and checksum as appropriate for binary
packet types, and whatever checksum and trailer is required for
text packet types. (You must include the leading $ for NMEA
packets.) When sending to a UBX device, the first two bytes of the
string supplied will become the message class and type, and the
remainder the payload. When sending to a Navcom NCT or Trimble TSIP
device, the first byte is interpreted as the command ID and the
rest as payload. When sending to a Zodiac device, the first two
bytes are used as a message ID of type little-endian short, and the
remainder as payload in byte pairs interpreted as little-endian
short. C-style backslash escapes in the string, notably \xNN for
hex, will be interpreted; additionally, \e will be replaced with
ESC. This switch implies -f.
Change the sampling timeout. Defaults to 4 seconds, which should
always be sufficient to get a packet from a device emitting at the
normal rate of 1 per second.
Display program usage and exit.
Set level of debug messages.
Display program version and exit.
The argument of the forcing option. -t, should be a string which
should be contained in exactly one of the known driver names; for a
list, do gpsctl -l.
Forcing the device type behaves somewhat differently depending on
whether this tool is going through the daemon or not. In high-level
mode, if the device that daemon selects for you doesn't match the
driver you specified, gpsctl exits with a warning. (This may be useful
In low-level mode, if the device identifies as a Generic NMEA, use the
selected driver instead. This will be useful if you have a GPS device
of known type that is in NMEA mode and not responding to probes. (This
option was originally implemented for talking to SiRFStar I chips,
which don't respond to the normal SiRF ID probe.)
If no options are given, the program will display a message identifying
the GPS type of the selected device and exit.
Reset (-r) operations must stand alone; others can be combined.
Multiple opations will be executed in tis order: mode changes (-b and
-n) first, speed changes (-s) second, and control-string sends (-c)
Attempt to identify the device on USB serial device 0. Time out
after the default number of seconds. Adding the -f will force
low-level access and suppress the normal complaint when this tool
can't find a GPSD to work through.
gpsctl -f -n -s 9600 /dev/ttyUSB0
Use low-level operations (not going through a gpsd instance) to
switch a GPS to NMEA mode at 9600bps. The tool will identify the
GPS type itself.
SiRF GPSes can only be identified by the success of an attempt to flip
them into SiRF binary mode. Thus, the process of probing one of these
running in NMEA will change its behavior.
gpsd(8), gps(1), libgps(3), libgpsd(3), gpsprof(1), gpsfake(1).
Eric S. Raymond firstname.lastname@example.org. There is a project page for gpsd