Here are the steps for installing gpsd and verifying its performance: 0. The only prerequisites you will absolutely need to build the suite are C and C++ compilers: C for the gpsd daemon itself and its client C library, C++ for the C++ client-library wrapper. Having the following optional components on your system will enable various additional capabilities and extensions: pthreads library -> support for PPS timekeeping on serial GPSes DBUS -> gpsd will issue DBUS notifications X windows + lesstif -> two test clients depend on this ncurses -> two more test clients depend on this Python -> most of the test and profiling tools are in Python For building from SVN, or if you change the man page source, xslt and docbook xsl style files are used to generate nroff -man source from docbook xml. The following packages are used in this process: libxslt -> xsltproc is used to build man pages from xml docbook-xsl -> style file for xml to man translation The build degrades gracefully in the absence of any of these. You should be able to tell from configure messages which extensions you will get. 1. Start by making sure you can get data from your GPS, otherwise the later steps will be very frustrating. In this command stty -F /dev/ttyXXX ispeed 4800 && cat . Under Ubuntu, you will require libmotif-dev, libxp-dev and libxaw7-dev in addition to the standard build-support packages. You can get all the build prerequisites intalled with "apt-get build-dep gpsd". To build from source, run ./autogen.sh (or sh autogen.sh if the script does not have execute permission). Mac OS X users may need to do "./autogen.sh --x-includes=/usr/X11R6/include" Note: if you are going to use the RTCM-104 support, you should compile with gcc4; if you don't have it installed as your default compiler, do this by specifying CC=gcc4 before the autogen.sh command. The rtcm.c file confuses the gcc-3.4.[23] optimizer at -O2 level, making it generate incorrect code. Then run make: libgps.so, gpsd, xgps, and xgpsspeed will be built. Copy the app-defaults files xgps.ad and xgpsspeed.ad to your home directory or to the system-wide X app-defaults directory. 4. Start gpsd. You'll need to give it as an argument a path to a serial or USB port with a GPS attached to it. 5. Once gpsd is running, telnet to port 2947. Type 'f' to see what device it will query. If you need to change the device, use 'f=' to do so (see the manual page for details). Now plug in your GPS. 6. Type "wr" to start raw and watcher modes. You should see NMEA data (text lines beginning with $) spewing out. You will also see lines with a GPSD prefix; these are sentence translations in GPSD protocol. Note that until your GPS has acquired a fix, typing "p" to get position will only return this: GPSD,P=? This response does not mean that gpsd is broken or that the GPS is not sending data, merely that gpsd has not yet seen any *valid* position data. You will have to wait for the GPS to acquire satellite lock. If you have raw or watcher mode on, it should be obvious when you get a lock. 7. Start the xgps client. Calling it with no arguments should do the right thing. You should see a GUI panel with position/velocity-time information, and a satellite display. The displays won't look very interesting until the GPS acquires satellite lock. 8. Now that you've verified that the code is working, "make install" will install it it in the system directories. "make uninstall" will undo this. (You won't need to "make install" if you installed from a binary package.) 9. To enable hotplugging of USB GPSes under Linux, do a 'make udev-install' or equivalent to put the appropriate udev rules and wrapper files in plases. 10. Check out the list of supported hardware at http://gpsd.berlios.de/hardware.html If your GPS isn't on the list, please send us information to add a new line to the table. Directions are included on that page. We can also use updates of the latest version number known to work with hardware already supported. 11. Note for small embedded systems and those without threading. It is possible to build gpsd without thread support if you configure with --disable-pps. You'll lose support for updating the clock from PPS pulses. It's also possible to build without Python via --disable-python, in which case you'd build won't make Python libraries and "make install" won't try to install Python tools. 12. Note for systems using DBUS: gpsd includes support for shipping fixes as DBUS notifications, but it is not compiled in by default. Configure with the option "--enable-dbus" to get it working. 13. The distribution includes a PHP script that you can use to generate a PHP status page for your GPS. You will need php and php-gd installed. To install it, copy the file 'gpsd.php' to your HTTP document directory. The first time it's invoked, it will generate a file called 'gpsd_config.inc' containing configuration information; edit to taste. Note that for the Google Maps feature work you need to set a valid Google API key in your config file. 14. There are regression tests to verify proper operation of gpsd, and it can be useful to run these to verify that all is well. To run the regression tests, first build gpsd from sources, and then run "make testregress". It is not necessary to install first. Python is required for regression tests.