Samstag, 27. Januar 2007

Data transfer from GPSmap 60CSx to a linux PC



Last month Lovely Systems and Telesis sponsored me a brand new Garmin GPSmap 60CSx - thanks a lot!


During evaluations for the Loccata project I previously could play around with a Garmin eTrex Summit.


This is gonna show you a way to transfer data such as waypoints or tracks from your garmin device to your PC and the other way round.


There might be nicer applications or easier solutions for this, please let me know about them.



Connecting the device with your PC


According to the GPSMan manual linux kernels > 2.6.11 ship with a driver for garmin devices (http://sourceforge.net/projects/garmin-gps/)


To see if you're having the drivers installed and can connect to your GPS device plug in the cables, whatch your syslog tail -f /var/log/messages and power on your device. You should see something like:



usb 3-2: new full speed USB device using uhci_hcd and address 3
usb 3-2: new device found, idVendor=091e, idProduct=0003
usb 3-2: new device strings: Mfr=0, Product=0, SerialNumber=0
usb 3-2: configuration #1 chosen from 1 choice
usbcore: registered new driver usbserial
drivers/usb/serial/usb-serial.c: USB Serial support registered for generic
usbcore: registered new driver usbserial_generic
drivers/usb/serial/usb-serial.c: USB Serial Driver core
drivers/usb/serial/usb-serial.c: USB Serial support registered for Garmin GPS usb/tty
garmin_gps 3-2:1.0: Garmin GPS usb/tty converter detected
usb 3-2: Garmin GPS usb/tty converter now attached to ttyUSB0
usbcore: registered new driver garmin_gps
drivers/usb/serial/garmin_gps.c: garmin gps driver v0.23

Now you also know that your device has been attached to /dev/ttyUSB0:



usb 3-2: Garmin GPS usb/tty converter now attached to ttyUSB0

The CD included in the package of the 60CSx only comes with USB drivers for windows.


If you don't have the driver you can download it on the sourceforge project page http://sourceforge.net/projects/garmin-gps/


Luckily i already used a Garmin eTrex Summit before and had it's
driver installed previously. These drivers also worked for connecting the 60CSx.



Permission settings



By default users must not read or write from/to the device:



frisi:/ # l /dev/ttyUSB*
crw-rw---- 1 root uucp 188, 0 Dec 29 10:00 /dev/ttyUSB0

We change the permissions so ever user can read and write to the device:



frisi:/ # chmod o+rw /dev/ttyUSB0

Other maybe more elegant solutions can be found here: http://www.gpsbabel.org/os/Linux_Hotplug.html





Applications



Recherche


I've been doing quite some research on applications to load data to and from my garmin gps device.


Some of the links i found are listed on http://del.icio.us/frisi/gis.


The apps i'll describe in this section are GPSMan and GPSbabel.


I'd love to have a kde application for this, so i considered using GRASS GIS (which i did not yet try out).


KGIS started in 2002, had no development the last years, so i don't think this is very promising.




GPSMan


You can download GPS Manager from it's official website http://www.ncc.up.pt/gpsman/.
GPSMan is very well documented, a PDF describing it's features, installation and usage and giving information on the data types waypoint, track, route and group can be found on the website too.


Start GPS Manager by providing the device your garmin is located at:



frisi@frisi:~> gpsman usb=/dev/ttyUSB0 &

You will see the main window with buttons named Data, GPS receiver, Map, Definitions and Options.



Configuration


First configure GPSMan using the Options menu.



  • set the GPS Model to Garmin

  • in Receiver parameters

    • set the Default protocol to Garmin NOT Garmin USB

    • check accept all characters to allow spaces and other chars too (eTrex Summit could not handle these, the 60CSx can do)

    • you can leave the other settings untouched



  • in Serial port and files set the serial port to /dev/ttyUSB0 or whatever device you got in Connecting the device with your PC


These are the must-have settings to connect your device.
You might want to have a look at the documentation for
more information on the other settings.




Transfer data


To download Data you can either invoke the Receiver window under the GPS receiver menu or use the menuitems in there (GPS receiver / get / ...).


To connect the device hit the check button. If it got connected successfully it turns green and the label changes to online.








The GPS receiver menu allows you to connect to your device and up- and download data.


To import waypoints simply click on WPoint in the get (download) area (this works the same for Tracks and Routes)
If you want your waypoints to show up in the map check Display items on map (you can also change this for any item later)


The downloaded items now show up in the Lists menu.
It is accessible via Data / Lists but should pop up automatically
when you start up GPSMan.





Save/export data


To save your Tracklog to display it on maps, share it with friends or simply archive it for computing statistics later on, you can use the save and export functions.









The Lists menu lets you manage, edit, import and export waypoints, routs and tracks.


I don't know which is the standard format for sharing waypoints and tracks. GPX which is an XML format seems very promising to me but i don't know if GPSTrans, MapSend or Ozi are wider used.


For the time being i use save instead of export to save the files in a gpsmap internal format to not lose any information when exporting.





GPSbabel


GPSbabel is an application to convert spatial information given in
a certain data and projection into various other formats.


You can download the most recent version on the homepage http://www.gpsbabel.org.


I'm using GPSbabel not only for conversions but also to upload waypoints of http://geocaching.com caches to my garmin.


The format of these *.LOC files is geocaching.com-specific
and supported by gpsbabel too: http://www.gpsbabel.org/htmldoc-1.3.0/fmt_geo.html


I used gpsbabel to convert the file GCN8A0.loc and upload it to my garmin device:



gpsbabel -i geo -f GCN8A0.loc -o garmin,power_off=0 -F /dev/ttyUSB0

to get a waypoint file you can use with GPSMan try something like:



gpsbabel -i geo -f GCN8A0.loc -o gpsman -F GCN8A0-gpsman.wpt

you can also download data from your device using gpsbabel, see http://www.gpsbabel.org/htmldoc-development/fmt_garmin.html for more details.





Outlook


Now that i found a way to transfer data from my garmin to the PC,
i want to play with this data and my GPS device a little more.



Statistics


I'm interested in some statistical information on my bike tours such as distance, average speed, vertical meters up/down, elevation charts.


GPSMan can do a lot of this already:
In the Lists view double click a track. In the track menu that will
pop up you can click the Compute button to get some statistical information and a menu for generating plots such as elevation sideview by time or by distance.




Maps


GPSMan can display waypoints with different icons and tracks in a map (see screenshot).




GPSMan can also use maps in the background, but i need to find out how to obtain and use maps for this.


There are also some online services that let you upload tracks and generate a map with your track.
One of these is http://www.gpsvisualizer.com/map.


There is a tutorial how to integrate a route in google maps on http://www.marengo-ltd.com/gps/.




MapSource


I did not yet play with the map support of the 60Csx (eTrex Summit did not have it).


I need to check if there are any applications for linux, of if i can use it with an emulator.


According to the Garmin FAQ garmin does not plan to ship mapsource for other operating systems than windows atm.