I have a Garmin GPSMap 60 CSX that I use for both Geocaching and as a Car navigation system.
Unfortunately, Garmin is reluctant to supply proper software for the linux platform, and now Garmin MapSource is the only reason for me to keep a Windows environment at hand.
I also needed a more convenient way to transfer waypoints to my Garmin device with Linux. Here a log of actions done in order to achieve that :
This comes standard in the Ubuntu distribution and can be installed the usual way.
Some more info on http://www.gpsbabel.org/os/Linux_Hotplug.html
To allow the USB devices to be read and written by a non-privileged user, create a file called /etc/udev/rules.d/51-garmin.rules with the following contents:
SYSFS{idVendor}=="091e", SYSFS{idProduct}=="0003", MODE="666"
This driver (garmin_gps) is also included in the kernel, but in order for GPSBabel to work properly, it must be uninstalled: sudo rmmod garmin_gps
To make sure it doesn't get loaded after the next reboot, add the following to /etc/modprobe.d/blacklist:
# this driver is in the way for GPSBabel blacklist garmin_gps
root@bismarck:~/gc# lsusb Bus 005 Device 003: ID 05e1:0501 Syntek Semiconductor Co., Ltd Bus 005 Device 001: ID 0000:0000 Bus 003 Device 001: ID 0000:0000 Bus 001 Device 001: ID 0000:0000 Bus 002 Device 004: ID 091e:0003 Garmin International GPSmap (various models) Bus 002 Device 003: ID 046d:c03e Logitech, Inc. Premium Optical Wheel Mouse Bus 002 Device 001: ID 0000:0000 Bus 004 Device 001: ID 0000:0000
Now I can transfer waypoints, for example : gpsbabel -i garmin -f usb: -o geo -F test.loc copies all the waypoints from the Garmin device to the file test.loc. Nice !
However, only when you're root, if you're not root, you get :
metskem@bismarck:~/gc$ gpsbabel -i garmin -f usb: -o geo -F waypoints.loc usb_set_configuration failed, probably because kernel driver '' is blocking our access to the USB device. For more information see http://www.gpsbabel.org/os/Linux_Hotplug.html
So I first rebooted, to make sure that the garmin_gps driver is not loaded, and that the permissions for the usb device files are correct. After that I can also transfer waypoints to/from my Garmin device without the need to use root privileges.
metskem@bismarck:~/gc$ gpsbabel -r -t -D1 -i garmin -o geo usb: allstuff.loc GPSBabel Version: 1.3.3 Unit: GPSMap60CSX Software Version 3.30 ID: 292 Version: 3.30 Capability A10: Capability A100: D110 Capability A201: D202 D110 D210 Capability A301: D312 D302 Capability A400: D110 Capability A500: D501 Capability A600: D600 Capability A601: D601 Capability A700: D700 Capability A800: D800 Capability A801: D801 Capability A900: Capability A902: Capability A903: Capability A904: Capability A907: D907 D908 D909 D910 Capability A908: D911 Capability A914: Capability A916: Capability A917: D917 Capability A918: D918 Capability A1010: Capability A1011: Link_type 1 Device_command 0 Waypoint: Transfer 100 Type 110 Route: Transfer 201 Header 202 Type 110 Track: Transfer 301 Type 302 Waypoint type: 110 Chosen waypoint length 14 cet_util: Converting from "CP1252" to "UTF-8", done.
metskem@bismarck:~/gc/gc187cr$ gpsbabel -i garmin_txt -f gc187cr.txt -o gpx -F gc187cr.gpx metskem@bismarck:~/gc/gc187cr$ gpsbabel -i gpx -f gc187cr.gpx -o geo -F gc187cr.loc metskem@bismarck:~/gc/gc187cr$ gpsbabel -i gpx -f gc187cr.gpx -o kml -F gc187cr.kml
To make it a little easier I created a simple shell scipt, which can take either a filename as parameter, or read from stdin:
#/bin/sh
#
# convert a geocaching format (.loc) file that comes from stdin, or from a file indicated by parm1, to your usb attached GPS unit
#
aplay /usr/share/sounds/info.wav
if [ $# == 0 ]
then
tmpfile=/tmp/gc2usb-tempfile.xml
if [ -f $tmpfile ]
then
rm $tmpfile
fi
tee $tmpfile <&0 >/tmp/gc2usb.stdout
gpsbabel -D1 -i geo -f $tmpfile -o garmin -F usb:
fi
if [ $# == 1 ]
then
gpsbabel -D1 -i geo -f $1 -o garmin -F usb:
fi
aplay /usr/share/sounds/error.wav
gpsbabel-manpage.txt![]() | HTML Help![]() |
First go to the cache page and scroll down to the section "Additional Waypoints", there should be all WP's in the correct format.
For eacht WP cut the coordinates and paste them into Google Earth search section "Fly To" and press enter. This should navigate you to the position. Then rename this location to the proper name, i.e. GC15YBN 03.
Repeat this for all WP's. Now you should see them all on your Google Earth, and you should get an idea of how your route will be like.
Now they have te be transferred to your GPS device, do the following: