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 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 . 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. It should not need any options. 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. 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. 9. 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. 10. 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. 11. 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.