gpsd
— a GPS service daemon
gpsd
gpsd
is a service daemon that monitors one or more
GPSes or AIS receivers attached to a host computer through serial or
USB ports, making all data on the location/course/velocity of the
sensors available to be queried on TCP port 2947 of the host computer.
With gpsd
, multiple location-aware client applications (such as
navigational and wardriving software) can share access to receivers
without contention or loss of data. Also, gpsd
responds
to queries with a format that is substantially easier to parse than
the NMEA 0183 emitted by most GPSes. The gpsd
distribution includes a linkable C service library, a C++ wrapper
class, and a Python module that developers of gpsd
-aware
applications can use to encapsulate all communication with
gpsd
. Third-party client bindings for Java and Perl
also exist.
Besides gpsd
itself, the project provides auxiliary
tools for diagnostic monitoring and profiling of receivers and feeding
location-aware applications GPS/AIS logs for diagnostic purposes.
The goal of the gpsd
project is to create a solid
layer of open-source infrastructure for programs running under Linux
and other open-source Unixes that want to be location-sensitive. We
aim for simple, robust interfaces, unfussy operation, and an easy
learning curve for application developers. Applications that
presently use gpsd
include pyGPS, gpsdrive, Kismet, GPSdrive, gpeGPS, position, roadmap, roadnav, navit, viking, tangogps, foxtrot, opencpn, obdgpslogger, geohist, LiveGPS, geoclue, qlandkartegt, gpredict,
and firefox/mozilla.
Under Linux, gpsd
normally runs with zero
configuration. Binary packages for this program install hotplug
scripts that do the right thing when a USB device goes active,
launching gpsd
if needed and telling gpsd
which device to read data from. Then, gpsd
deduces a
baud rate and GPS/AIS type by looking at the data stream.
gpsd
is high-quality, carefully-audited code; see
our notes on reliability engineering. In
January 2010, the GPSD project won
the first Good Code Grant from the Alliance for Code Excellence.
Statistics about the code volume, commit history, and contributors associated with this project are available at Ohloh
Our development platforms are open-source Unixes — Linux, and
the *BSD family. Presently Linux and OpenBSD are directly supported.
We'll support proprietary Unixes if it's not too much work (and it
usually isn't). Apple's OS X is back in our good books, but it is
critical that you have all your USB drivers updated. Older drivers are
buggy and prevent gpsd
from being able to read from
USB-serial devices. No, we don't support Windows — get a better
operating system.
If you represent a GPS manufacturer interested in qualifying your device for use with Linux and other open-source operating systems, we are your contact point. We'll need (1) on-line access to interface documentation, (2) a few (as in, no more than three) eval units, and (3) an engineering contact at your firm. For more, see our page welcoming vendor cooperation.
There are simple installation instructions for people running distributions with binary package systems. See the FAQ for information on how to report bugs.
All advertising revenue from this site (on the optimistic assumption that we ever see any!) will go to the project's fund for buying test hardware and standards.
This web page was last updated on @DATE@. You can browse the project's news file or to-do list here. Note: because of the way this website is maintained, these files may reflect the state of the repository tip (development version) rather than the latest released stable version.
If you are using a Debian-based distribution (including Ubuntu) you
can probably install gpsd
through your regular package
manager or by typing "sudo apt-get gpsd"
at the command
line.
There are four project mailing lists:
gpsd
, including support
for application builders using gpsd
as a component.gpsd
developers.gpsd
repository.The following manual pages describe the code. Note: because of the way this website is maintained, these files will describe the state and features of the repository tip (development version) rather than the latest stable version.
gpsd
daemon.gpsd
test clients.gpsd
to talk to a GPS.gpsprof
program for plotting spatial scatter of fixes
and fix latency.gpsfake
test harness simulating a GPS.gpsctl
tool for tweaking GPS settings.gpscat
tool dumps output from a serial
device. Optionally, it can packetize the data.gpsmon
real-time packet monitor and diagnostic
tool. (This replaces the sirfmon
tool in older versions.)gpsd
reports and sends it to
standard output.gpsdecode
packet decoder.gpsd
daemon.Also, see the FAQ.
We have a list of compatible GPSses with some technical information. We also have a list of NMEA sentences.
There is a Hacker's Guide to the project philosophy, design, and code internals. You should read this if you want to contribute code.
We maintain a GPS Hall of Shame that describes particularly egregious vendor blunders.
Some of the developers hang out regularly on IRC at channel #gpsd at irc.freenode.net.
gpsd
from
client applications. Explains the theory, points at working example
source code, warns you what the edge cases and gotchas are.gpsd
is about, you might find this interesting.gpsd
2.0 rants in an at least
semi-humorous way about everything that's wrong with GPS standards
and vendors.gpsd
and vendor claims about binary protocols.gpsd
also works with some bluetooth
GPS receivers. Warning: there are serious problems with the
firmware in at least one family of Bluetooth implementations shipped
by Holux that may result in gpsd
bricking your GPS. See this
bug warning for a description
of the problem.
If you have an Android phone, it is possible to access its onboard GPS by pairing it as a Bluetooth device. Directions from Vargoville. There is also a GPS Tether app designed to work with GPSD, but it eems to be in early alpha.
The gGPSDproxy project is a small program which reads GPS data from a running gpsd process and forwards it to a remote server via an UDP connection. GPSDproxy is intended to be run on GPS enabled mobile devices.
You can read detailed instructions on Synchronizing ntpd to a Garmin GPS 18 LVC via gpsd. This may be a useful tutorial even if your actual device isn't a Garmin 18; many of the setup steps and caveats will be the same.
Diego Berge has written a prototype Qt-based client, basically
xgps
with a Qt look and feel.
You can find Debian-unstable packages here.
gpsd
is carried in the OpenBSD ports tree.
There's a Wiki page devoted to gpsd helper applications.
OpenStreetMap is a wiki aiming to build a freely available, world-wide streetmap.
Freedesktop.org is hosting a project called geoclue
that aims to provide a location service layer for all D-Bus-using
applications. It can use gpsd
as a source for location
info.
There used to be three Linux-based forks of gpsd
in the
wild, but this GPSD project reabsorbed one and the other two are now
defunct for unrelated reasons. You can read a brief history of the gpsd
project if
you are curious.
There is a project called gps3d that ships a gpsd with similar goals to ours, but which appears to be an independent development. There haven't been any releases since early 2002.
There is a GPSd project that is a GPS daemon written in Java and apparently intended to provide location information for browsers.
There is a gpsd
-like hack hosted under Microsoft
Windows. It provides gpsd service from data in netstumbler under
win32. This way programs such as JiGLE can still get GPS data from
netstumbler. This program is not genetically related to
gpsd
.
gpsfeed+ is a program that simulates the output of a GPS in motion, and can be used for testing GPS-aware applications.
We aren't Green Parrot Software Development, nor are we the Greenville Public School District nor the Greater Peoria Sanitary District, nor even the Greater Portland Soccer District, nor the Green Party of San Diego, nor do we have anything to do with the General Product Safety Directive, the Guiding Principles of Sustainable Design, nor the Glatt Plagiarism Self-Detection Program.