When I first thought about creating Sportablet and the Garmin Uploader, my idea was to support the Forerunner and the Edge family. I’m mostly a runner these days, I used to mountain bike, and I occasionally swim in open waters, so those are the devices and the activities I’m most familiar with.
Still, at some point you guys started to ask me to support other Garmin devices, like the eTrex, the GpsMap, the Oregon, etc. I don’t have most of those, so it took me some time to support them at a decent :-) level. With Sportablet 3.4 and the Uploader 2.5, I would say that I reached a reasonable level, with some important parts yet to come.
State of the app
Sportablet and the Uploader have been tested with these models:
- eTrex 20
- eTrex 30
- eTrex Legend HCx
- eTrex Vista C
- Foretrex 401
- Oregon 550t
- GPSMap60CSX
If you use the GPSMap60CSX, please make sure you upgrade your firmware to version 4.20, as the communication protocol is much cleaner in that version.
If you have a different unit, read on and give the app a try. If you run into troubles, get in touch. If it works, send me a log :-).
Setting up your unit
At this time, for all the devices above, you have to set your unit in Garmin Mode. If you want to connect your unit in Mass Storage mode, see the other tutorial as linked above. The setting is usually under the System menu, sometimes is a little buried. If you can’t find it, get in touch. NOTE: some models don't have a "garmin mode". They have a "spanner mode" or a "serial mode". Try those that you have, in this order (garmin / serial / spanner).
With the unit in garmin/serial mode, my app will be able to access your tracklog. At least for some models (eTrex 20 and eTrex 30), that basically corresponds to what you have in your current.gpx file inside the unit. It won't access the history.
As observed in the eTrex Legend HCx, if you save your tracklog, the eTrex will "compress" the track by removing some GPS points and removing the time coordinate from all points. In this case, the app will set the track time to the download time, and will space sampling points evenly in time - which means, of course, that speed won't be real.
This is an issue on the eTrex side, which cannot be fixed by external software. Details are available in many websites, like:
http://tchester.org/sgm/analysis/gps/etrex_saved_track_accuracy.html
http://www.gpsmap.net/GarminHints.html
http://www.gpsinformation.org/dale/tracklog.htm
http://gen5.info/q/2009/06/03/getting-a-good-track-from-a-garmin-etrex
Setting up the app
What I’ve found is that the tracklog protocol (as opposed to mass storage mode) does not split your tracks properly. They’re all sent as segments of a single long track.
In most cases, that would make the app useless, so I added a simple heuristics to split segments in tracks. When a segment starts over 1 hour later than the previous segment ends, I simply create a new track. It’s a simple a quick strategy, which should work fine in practice (it certainly did with the data I got from you guys).
Still, that strategy is optional, and is off by default. However, it is suggested that you turn it on, by clicking “options”, scrolling down to “GPS tracklog”, and enabling the autosplit.
Connecting the unit
Please understand that the Garmin handhelds are not full-fledged ANT+ devices. They can read from ANT+ accessories, and can exchange some data with similar units over ANT+ using a Garmin proprietary protocol, but they cannot exchange data with a computer over ANT+. In fact, they are not sold with an ANT+ dongle like (for instance) the Forerunner 310/910, and there is no Garmin software even on Windows that can communicate with the handhelds over ANT+. Since your Android device is playing the role of your computer here, you'll have to follow the same rules, and use a USB connection.
[For those of you who wants to know more: ANT+ is a complex protocol with many profiles. Some profiles are standard. Some are not. The unit-to-unit profile / protocol used by the handheld models is not standard, it's one of the many Garmin secrets. It can be reverse engineered, of course. I did that, for instance, for the Forerunner 405/410. But it takes time and energy, and at this stage, my apps simply don't have the kind of ROI to justify the investment. With significant more support (read: purchases, but also spreading the word etc) from users, things may change.]

Note that it MUST be an OTG adapter: it's not just about changing size. An OTG adapter has a wire inside telling the Android device to switch the port into host mode. Of course, your android device must also be USB-friendly, and that's up to the manufacturer.
In some cases, you'll have to provide external power. Please read Step 2 on this other tutorial to learn how to supply power.
At this time, the track summary you see in the main screen won’t show total duration and distance, and therefore not even average pace and speed. The eTrex, GPSMap etc don’t send the distance over the tracklog protocol, so I have to calculate that based on all the GPS coordinates, using the WG84 ellipsoid, accounting for any spurious sample, etc.
In Sportablet, I do that when you open the track (so you get the right statistics and charts), but that requires some CPU time and memory. Currently, I'm not doing so during download; I first need to check that it won't interfere with USB timings on low-end tablets / phones.
Still, the app can transfer your tracks to Garmin Connect anyway. It actually makes all the units above compatible with Garmin Connect, even not supported by Garmin like the eTrex Legend® HCx, the GPSMap60CSX, and the eTrex Vista C. Not bad for a little app :-)