Gpsd
Where
gpsd home: http://gpsd.berlios.de/
Current version: 2.94
The Mac port: version 2.38 http://gpsd.darwinports.com/
My Mac: MacBookPro running 10.6.3 (Snow Leopard).
What and why
gpsd is a service that listens to one or more gps receivers and makes the received data available over a network connection. It understands a wide variety of binary protocols.
The reason to run it on a Mac laptop is to make the signal available to programs needing time and location services in a way that is flexible and device independent.
I use virtual machines, so I should be able to let a program running on any virtual machine connect to the gpsd host running on the Mac.
Receivers
All the receivers I have currently are covered:
- DeLorme Earthmate
- Garmin
- NMEA
- SiRF
- Trimble TSIP
- UBX
For the Mac
In my case on my Mac, I will be plugging in usb devices or possibly using a bluetooth connection. I already know I can listen to BT devices using things that appear on ports /dev/tty.BT* when the devices are paired with the Mac so I won't go into that here.
Down the slippery slope.
Download, build, install in order
- libusb - required to talk to usb devices
- libemul - required to talk to DeLorme LT40 usb device
- gpsd-emul - required to connect together emul and gpsd
- gpsd - the thing that we wanted back in chapter 1. Remember?
Download libusb from http://sourceforge.net/projects/libusb/develop
./configure; make; sudo make install
To get the DeLorme LT40 going I seem to need gpsd-emul (emul = Earthmate userland). Trying to ./configure that, it tells me I need libemul. That's in the separate emul tarball. They are on the berlios.de site.
emul:
env CPPFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib" ./configure make sudo make install
Now that the dependencies are out of the way...
At version 2.94, gpsd builds out of the box on Snow Leopard.
unpack tarball ./configure make sudo make install
Starting it up
- Plug in a USB gps receiver, let's see, here's a DeLorme Earthmate LT40
- /usr/local/gpsd
What you get
Besides the daemon "gpsd", of course...
In /usr/local/bin, you will find
- lcdgps
- gpxlogger
- gpspipe
- gpsmon
- gpsdecode
- gpsctl
- cgps
Position
Time
Python integration
I want a short python script here...