Updating maps … to outdated data

I caved, and bought a Garmin nüvi 1490. Not that my GPSMap 60CSx wasn’t great at routing, but remembering to update maps before travel and its fiddly mounting requirements were a pain.

So, two hours of downloading map updates, and I fire it up … to find that the three year old hotel in Dartmouth, NS we were staying in was in the wrong place on the map:

Compare with OpenStreetMap:

So now, back near home, I ask it to find a post office. Here’s me parked outside one; do you see it on the screenshots?

Again, compare with OpenStreetMap:

So I thought I’d help Garmin out, but their Report a Map Error page needs me to know the type of my GPS, its serial number, the type and revision of my map, my name and e-mail address, and the coordinates of the error. OSM has me spoiled: at best, I can go in and edit; at second best, I can drop markers on OpenStreetBugs to flag errors for others to fix.

Garmin already has my name, e-mail address, GPS type, serial number and map revision through myGarmin™. The company could just as easily have a web-based map correction system that would be point-and-click. Follow the Leader is one of Garmin’s mottoes. In terms of user correctability of maps, however, they’re only the leader because they don’t know they’ve been lapped.


APRS is go!

Automatic Packet Reporting System — APRS — is rather clever. It’s a way of reporting position, status or messages via the amateur radio 2m band. Data is relayed via digipeaters, and routed to/from the internet APRS-IS system to any user worldwide.

It’s a little fiddly to set up, even with a very polished (read: $$) handheld radio like the Kenwood TH-D72A. I’m a bit disappointed that the purported SiRFstar III GPS in this radio takes forever to get a lock, but it’s a nice radio despite this.

The screenshot above shows‘s tracking of my handheld (VA3PID-7) last night as I walked to Toronto Mappy Hour.


Garmin vs Arduino GPS dance-off

So I built a GPS logger. It’s an Arduino Uno with the SparkFun microSD and GPS shields. No display, massively unwieldy, but it does spit out a track point every second and logs it fairly reliably to microSD. It works as well as my expensive old Garmin GPSMap 60Csx, as a walk around the block shows:

Excuse the noise at the top of the trace; both units were brought inside. While they keep a tenuous lock, they certainly don’t give much accuracy. I think the Arduino did rather well; certainly better than my BlackBerry

Now all I need is a case and a more useful power supply. I was disappointed that a USB MintyBoost charger didn’t seem to work for long, causing the GPS to lock up.


fixing garmin file dates

While the Garmin GPSMap 60csx is a lovely unit, it saves its tracks on the card with a date just slightly younger than I am. The following Unix one-liner will correct the file dates to the actual dates the data were collected:

for f in 20??????.gpx; do touch -t ${f%.gpx}2359.59 $f; done

I remember having a really awesome reason for making the time for each file 23:59:59, but I’ve completely forgotten what it was. Since all I remember was the awesomeness, I see no reason to change it …

Update 2013-09-25: changed the call to basename with a Bash internal string function.


Interfacing the Pharos GPS-500 to Mac OS X

Update 2015: This is very old. I don’t know the status of a decent OS X 10.10 driver for the Prolific PL-2303 in this GPS.

I’m stopping short of calling this “Using the Pharos GPS-500 to Mac OS X” because all I’ve been able to do is read raw NMEA sentences from the device. But that might be of use to you.

The Source is clearing out copies of Microsoft Street & Trips with GPS 2008 for $20. The GPS is a very simple USB Pharos GPS-500, which uses the SiRF III chipset. Between the USB cable and the GPS is a small black box which looks suspiciously like a serial to USB converter. I have no use for the software, but the GPS is a bargain, considering a similar bare unit costs $60.

Plugging it into a Mac does nothing beyond being recognized as a “USB-Serial Controller D” from Prolific Technology, Inc. The ancient driver on Pharos’ website identifies the serial chipset as the Prolific PL2303. The only driver I could get to work with Snow Leopard was the failberg/osx-pl2303, a fork of an earlier project from Sourceforge. You’ll know if it’s working when you get a device called /dev/tty.PL2303-something appear.

Reading the data’s pretty simple if you have GNU Screen installed. I entered the following command:

screen /dev/tty.PL2303-12345678^XX^D?^XX 4800

and very quickly started to get NMEA data scrolling in the terminal:


To stop screen, type Control-A K. Do not just unplug the GPS, as you risk your machine crashing.

These NMEA sentences can easily be converted to GPX.


Magellan Triton 400 micro-review

My office’s Garmin was stuck in a branch office last week, and we needed a GPS for the next morning, so we got a cheapo Magellan Triton 400 for $90 at Future Shop. I think that’s a clearance price, and none of the big-box retailers still carry it.

The Triton 400’s a Windows CE unit with a surprisingly good display for the price. I only had a little time to set it up and test it briefly outside the office, so all I can do is give you is first impressions.


  • Cheap!
  • SIRFstarIII chipset for reasonably fast/accurate acquisition
  • SDHC card (worked with my 4GB card)
  • Bright display
  • Works with GPSBabel (as Magellan’s VantagePoint obviously installs a copy)
  • Doesn’t route


  • Wouldn’t acquire any position until I updated the firmware (at which time I discovered that it basically updates a full Windows CE image from an archive)
  • Weird proprietary USB cable
  • Tiny buttons that aren’t very positive
  • Eats batteries
  • Overly simplistic menu structure makes it hard to set up
  • VantagePoint is buggy, and will repeatably crash under certainly (admittedly rare) menu items
  • Only works under Windows; the USB protocol is proprietary
  • Hard limit of 5000 points per track, and track logging stops when this limit is reached
  • SD card is only usable for maps and geotagged photos, not track storage.

I should be able to play with it in more detail in the new year. It was cheap, but not all cheap things are good.

More on the Magellan – OpenStreetMap Wiki page.


making of the Canada Day post

Making the My Neighbourhood, Canada Day 2010 post took a bit of planning.


I attached an Ultrapod to the stem of my bike, and added another velcro wrap for security. The GPSMAP 60CSx fitted quite nicely under the bungees on the rear rack. The Ultrapod didn’t quite have enough stability to stay in place without drooping sometimes. I bought (but haven’t tried) the KODAK Adventure Mount, which might be more stable.

The Camera

… is a fairly basic Canon PowerShot SD790IS. What’s important is that it can run CHDK. I’d set it to take a 6MP picture approximately every 20s using the Ultra Intervalometer script.

Synching the camera to the GPS for geotagging

At the end of the trip, I took a picture of my GPS clock screen:

and then compared the time to the camera’s timestamp using jhead:

$ jhead IMG_0316.JPG
Date/Time    : 2010:07:01 16:59:50

So if the GPS time is 16:58:55, we need to subtract 55s from the camera time to make them match:

$ jhead -ta-0:00:55 IMG*JPG

And let’s check the result:

$ jhead IMG_0316.JPG
Date/Time    : 2010:07:01 16:58:55


Geotagging the pictures

I used ExifTool. You could also use Prune if you prefer something more graphical. Exiftool does this with minimal fuss:

$ exiftool -geotag canadaday2010-0.gpx IMG_0*JPG

(I realize I could have used exiftool instead of jhead for the timestamp check, but I’ve been using jhead for about a decade, so I know it well and like its compact output.)

You probably want to make use of a WordPress plugin like Add From Server to speed the upload process.

Adding the OpenStreetMap map

The » wordpress openstreetmap plugin is very flexible, but rather complex to work with. Here I’m calling the map with both markers (and lots of them) and a GPX trace:

[ osm_map lat="43.729" long="-79.275" zoom="14" width="640" height="480" marker_file="" gpx_file="" ]

(Note that in the example, in order to stop WordPress from interpreting the shortcode, I’ve had to introduce a space after the [ and before the ]; in real life, they’re not there.)

The gpx file is just plain vanilla (canadaday2010.gpx) but the marker file (canadaday2010marker.txt) is a bit special. I must admit to have slightly misused the format, as I discovered that the fourth column, the description, is free-form HTML. As the default is to popup a small image thumbnail, I wedged in code to link to the full-sized image when the thumbnail was clicked. This required me to work out what attachment ID WordPress thought each picture would be. If you’re careful to upload sequentially to a single-user blog installation, you should be okay hitting the right links.

Each line of the marker file was made with a (loooong) shell one liner, an unholy mess of backticks and awk. I’m glad I can’t find it. It really wasn’t pretty at all.


Mac OS X killed my Garmin!

My GPSMAP 60CSx had started to become unreliable: crashing after startup, randomly locking up in mid route, and just generally being an aggravating piece of kit. I was really close to replacing it.

The problem seemed to appear after I’d used USB Mass Storage to transfer archived track logs to the computer. As a last resort, I tried removing the hidden files that OS X creates on every removable disk, and now all is well. It’s annoying and inexcusable that Apple chooses to do this, but we work around.

To delete these files from the terminal and eject the device safely, enter these commands:

pushd /Volumes/GARMIN/
rm -rf .Spotlight-V100 .Trashes ._.Trashes .fseventsd
disktool -e disk1

Your device might not be called /Volumes/GARMIN/, so check and change appropriately. If you have multiple drives on your machine, your GPS is probably not the disk1 device. You can find out which it is by entering disktool -l.


probably wouldn’t recommend the Blackberry Tour as a GPS logger

I walked a local footpath carrying my (mostly) trusty Garmin GPSMap 60Csx, and a Blackberry Tour running bbTracker. Both had had a good satellite fix for about 10 minutes beforehand, and both were logging trackpoints every second. The smooth turquoise track from the Garmin is much more useful than the wibbly one from the Blackberry.


More on iPhoto GPS weirdness

Okay, following on from my last post I geek out a lot here, so here’s a summary: In a test of 1600 images, iPhoto moved the recorded GPS location of a picture an average of 6.17m, and in one case moved the image 11.25m from its correct position.

I created a 40×40 array of points approximately 5m (okay, 5 UTM units apart, precisely) and assigned the locations to JPEG files using ExifTool. These files were imported into iPhoto, then exported. The before and after coordinates were plotted and compared:

  • The green crosses are the original coordinates
  • The red crosses are the coordinates assigned by iPhoto
  • The dashed lines map the before coordinates to the after.

In real life, I realise it’s difficult with most consumer GPS units to resolve points 5m apart. It’s pretty egregious of Apple, however, who appear to take great pains to retain all the camera’s metadata, to mash the stored coordinates so badly.