Connecting file-based Garmin devices to your phone or tablet: a tutorial
This tutorial applies to all the TCX or FIT file-based garmin devices:
for the handheld family, please see here.
- Forerunner 10, 15, 110, 210, 220, 520, 620, 920xt.
- Edge 200, 500, 510, 605, 705, 800, 810, 1000, Touring, Touring Plus
- Fenix and Fenix 2
for the handheld family, please see here.
Step 1: connection
All the devices listed above are basically flash drives, just like the usb thumb drives or external drives you have probably used with your computer. That makes it trivial to connect one of those garmin units to a computer, but when an android phone or tablet is concerned things get a little more complicated. Many android devices have hardware and software (ROM) limitations, so you need to be prepared to do some work. If you're not, please avoid downrating the app. An app can't fix hardware issues.
None of the devices above are supported over ANT+ (more details at the end of this page). So you'll have to use a USB cable, just like when you connect them to a PC. In most cases, your phone/tablet won't have a "big" (type A) USB socket, but a micro-usb instead. The first step is to obtain an OTG connector like this:
None of the devices above are supported over ANT+ (more details at the end of this page). So you'll have to use a USB cable, just like when you connect them to a PC. In most cases, your phone/tablet won't have a "big" (type A) USB socket, but a micro-usb instead. The first step is to obtain an OTG connector like this:
Note: it HAS to be an OTG connector. Please don't mess around with other cables. An OTG connector does more than changing size. It has a wire on the micro-usb side tellling the android device to switch into host mode.
An OTG connector is usually cheap (a couple of euros / dollars) and it's generally speaking quite useful. For instance, you can use it to connect a keyboard to your android device. Some tablets (some Samsung, some Asus, etc) do not have a micro-usb, and require a manufacturer-specific OTG adapter. |
Before you get that, you may want to check if your android device supports host mode / otg mode. If you can't find a definitive answer, you may want to try anyway.
Testing the OTG connector is quite simple: you plug a usb flash drive on the large type-A female, then you plug the micro-usb on your android device, and if everything works you should see a notification that the drive has been mounted. This is a very good sign. If that does not happen, there are a few cases:
- the connector is not working
- your android device is blocking flash drives (e.g. the Google Nexus family)
- your android device does not support host / otg mode
- your anrdoid device does not bring power to the USB, so the flash drive is not powered (if you have a LED on the flash drive, that's easy to spot)
again, you may look around (using google) for more info on your device, but you can also try connecting a usb keyboard or mouse instead of a flash drive. Usually, these devices are not blocked, so if they don't work it's either a power issue or lack of support for host mode / otg mode in your ROM, or a defective adapter.
Even if it works, do NOT connect your garmin device yet.
Testing the OTG connector is quite simple: you plug a usb flash drive on the large type-A female, then you plug the micro-usb on your android device, and if everything works you should see a notification that the drive has been mounted. This is a very good sign. If that does not happen, there are a few cases:
- the connector is not working
- your android device is blocking flash drives (e.g. the Google Nexus family)
- your android device does not support host / otg mode
- your anrdoid device does not bring power to the USB, so the flash drive is not powered (if you have a LED on the flash drive, that's easy to spot)
again, you may look around (using google) for more info on your device, but you can also try connecting a usb keyboard or mouse instead of a flash drive. Usually, these devices are not blocked, so if they don't work it's either a power issue or lack of support for host mode / otg mode in your ROM, or a defective adapter.
Even if it works, do NOT connect your garmin device yet.
Step 2: providing power
Garmin devices have been designed with a computer in mind. They charge their battery when connected to the usb, and that requires some power. Quite a few android devices can't take that load, and will shut down the USB. Some will complain about a "high power USB device connected" (which is not a good thing), while some will fail silently. Some will do worse: they will power the garmin initially, then shut down power after a few seconds, while the garmin is mounting. Now, this has been observed to cause a loss of files on some cases. Therefore, I always recommend to provide external power when connecting a file-based device. Some of you guys don't, and nothing bad happens; however, please don't blame my app if you lose file while not supplying power. My app NEVER writes to the garmin or delete stuff.
The safest way to provide power is through a powered usb hub (with its own power supplier), like this:
The safest way to provide power is through a powered usb hub (with its own power supplier), like this:

Please do NOT use a usb-powered hub: of course, that would not provide any external power, will only suck more power out of your android device.
When using an hub like this:
- the garmin device goes into one of the type-A female connectors on the front
- the type-A male coming out the hub goes into the OTG connector
- the OTG connector goes into the micro-usb in your android device.
When using an hub like this:
- the garmin device goes into one of the type-A female connectors on the front
- the type-A male coming out the hub goes into the OTG connector
- the OTG connector goes into the micro-usb in your android device.
there are alternatives to the powered usb hub, like y-cables and even y-otg cables like this, where you can plug your phone charger to supply power. Still, be careful: the hub is always safe. Y cables are not. My Sony xperia ion + Edge 500 works with a hub but not with a y-cable, and resets itself when using an adapter like that on the right. So, please, at least in the beginning, and unless you know what you're doing *really* well, use the hub.
Note: if your device didn't mount the flash drive and didn't work with the keyboard, testing with the powered hub will also tell you if it's a power issue (in that case, it will work now) or a ROM / hardware issue. Bottom line: if your android device does not work with a usb keyboard / mouse even when using a powered usb hub, it will never work with your garmin device as-is. Check around on forums to see if it's an hardware problem or a ROM issue that you may work around by rooting. If it does work with the keyboard but not with the flash drive, you normally need rooting (see Troubleshooting-2). Right now, I'll assume that it works with the flash drive. |
Step 3: Connecting the Garmin
With all this set, connect the Garmin as explained above. Please allow the device to mount properly. The app will autostart when this process is completed. Also, usually your android device will inform you with a toast or notification. Again: do not hurry to scan files before the garmin is mounted. Although it has never occurred to me, some people have reported that by starting the app manually too soon, the app didn't find the garmin, and the garmin lost files. It was obviously not the app (since it does not write to the garmin, and in those scenarios could not even find it) but something happened anyway. I don't have a clear reports for those issues (for instance, nobody was really clear about having provided power), but please, let it take its time. It's not unusual for a garmin device to take 40 seconds to mount, as android will scan the file system anyway on its own, looking for media files.
After the device has mounted properly, just click Get Activities on my app, and everything should work smoothly. If it doesn't, see the following steps.
After the device has mounted properly, just click Get Activities on my app, and everything should work smoothly. If it doesn't, see the following steps.
Troubleshooting - 1
Here I'll assume you have followed Step 3 only if Step 2 was successful, that is, it worked with a flash drive. When it works with a flash drive but not with a garmin, and you have supplied power, there are a few cases left.
- Device found but not mounted
My app will display "device found" when it can find a USB device with the Garmin manufacturer code. However, there is a difference between having the garmin visible as a usb device and having it mounted as a drive. The common reasons for the device not being mounted as a drive are:
- power issues (yeah, you really should have provided power as explained in step 2). This is quite common.
- ROM issues. This is again quite common, unfortunately, and often requires rooting. Read on, but please provide power first.
- SD card issues
some of the garmin devices above can mount an additional SD card. In turn, you can choose to store activities on the card or in the main memory. When an SD card is inserted, the garmin presents itself as TWO flash drives. This is ok for some android devices, but not for others. Some will only mount one. This can be diagnosed in various ways, and fixed in a few ways. The simplest way would be to remove the sd card (assuming you store the activities in main memory) and see what happens. Some of you guys have also discovered a workaround (which does not works for all) to make "the other" drive mount: switch mode in the Edge menu before you plug it in. Say that your Edge is configured to save to the internal unit. Switch it do SD. Connect to the android device. The internal unit will mount and you can upload. Then switch back to the internal unit.
- "works only when connected at boot"
This has been reported for several samsung devices. Just try that out: connect everything, restart the android device, and again, give it some time to be mounted, don't rush it.
- settings needed in the Garmin device:
for the Fenix, you have to set up your unit to create FIT files.
- the unit is mounted as a drive but not recognized as a usb device
This is rare nowadays, but was common with early android devices where the ROM filtered the device list before it reached the apps. In this case, you can see the files while browsing with a file explorer, but my app will say "no device detected" and won't scan for files. Just set "force flash drive scan" under Options in the app.
- more convoluted problems :-)
Please see this blog post for even more troubleshooting hints.
- Device found but not mounted
My app will display "device found" when it can find a USB device with the Garmin manufacturer code. However, there is a difference between having the garmin visible as a usb device and having it mounted as a drive. The common reasons for the device not being mounted as a drive are:
- power issues (yeah, you really should have provided power as explained in step 2). This is quite common.
- ROM issues. This is again quite common, unfortunately, and often requires rooting. Read on, but please provide power first.
- SD card issues
some of the garmin devices above can mount an additional SD card. In turn, you can choose to store activities on the card or in the main memory. When an SD card is inserted, the garmin presents itself as TWO flash drives. This is ok for some android devices, but not for others. Some will only mount one. This can be diagnosed in various ways, and fixed in a few ways. The simplest way would be to remove the sd card (assuming you store the activities in main memory) and see what happens. Some of you guys have also discovered a workaround (which does not works for all) to make "the other" drive mount: switch mode in the Edge menu before you plug it in. Say that your Edge is configured to save to the internal unit. Switch it do SD. Connect to the android device. The internal unit will mount and you can upload. Then switch back to the internal unit.
- "works only when connected at boot"
This has been reported for several samsung devices. Just try that out: connect everything, restart the android device, and again, give it some time to be mounted, don't rush it.
- settings needed in the Garmin device:
for the Fenix, you have to set up your unit to create FIT files.
- the unit is mounted as a drive but not recognized as a usb device
This is rare nowadays, but was common with early android devices where the ROM filtered the device list before it reached the apps. In this case, you can see the files while browsing with a file explorer, but my app will say "no device detected" and won't scan for files. Just set "force flash drive scan" under Options in the app.
- more convoluted problems :-)
Please see this blog post for even more troubleshooting hints.
Troubleshooting - 2 (rooting)
This section applies when:
- the mouse / keyboard work, but the flash drive (and the garmin) don't
- the flash drive works, but the garmin don't.
Unfortunately, many flagship tablet / phones have been crippled by the manufacturers so that they won't mount flash drives (this is usually done to push you to purchase the model with more internal flash memory). Among those, the Google Nexus family (with the exception of the Nexus 4, which is even worse as it has hardware / ROM issues making the USB useless if not for charging). So, the Nexus 5, 6, 7, 8, 10 won't mount flash drives unless rooted. The same apply to several Samsung phones / tablets: in many cases, they won't mount a garmin file-based device (even though they will mount flash drives) unless rooted. After rooted, you NEED to run stickmount to force the garmin to mount. Rooting alone is useless. Please note that other apps won't reliably work. Stickmount is free and is known to work fine.
Note 1: some of the Nexus 2013 (mostly the early batches) have even worse USB issues. See here for more details.
Note 2: I can't provide instructions for rooting. There are just too many models. You'll have to look around.
Note 3: some people have used the Nexus Media Importer app (not free) with various degree of success. This does not require rooting, but won't expose the device as something that can be found by my app. You can use it (if it works for you) to manually copy files from your garmin to your sd card, then follow case 5 here, but it's a bit cumbersome.
- the mouse / keyboard work, but the flash drive (and the garmin) don't
- the flash drive works, but the garmin don't.
Unfortunately, many flagship tablet / phones have been crippled by the manufacturers so that they won't mount flash drives (this is usually done to push you to purchase the model with more internal flash memory). Among those, the Google Nexus family (with the exception of the Nexus 4, which is even worse as it has hardware / ROM issues making the USB useless if not for charging). So, the Nexus 5, 6, 7, 8, 10 won't mount flash drives unless rooted. The same apply to several Samsung phones / tablets: in many cases, they won't mount a garmin file-based device (even though they will mount flash drives) unless rooted. After rooted, you NEED to run stickmount to force the garmin to mount. Rooting alone is useless. Please note that other apps won't reliably work. Stickmount is free and is known to work fine.
Note 1: some of the Nexus 2013 (mostly the early batches) have even worse USB issues. See here for more details.
Note 2: I can't provide instructions for rooting. There are just too many models. You'll have to look around.
Note 3: some people have used the Nexus Media Importer app (not free) with various degree of success. This does not require rooting, but won't expose the device as something that can be found by my app. You can use it (if it works for you) to manually copy files from your garmin to your sd card, then follow case 5 here, but it's a bit cumbersome.
But I just want to know if it works with my android device...
It's really hard to say. A minor change in ROM version (not even Android version) is all it takes to make it break it, manufacturer are very inconsistent. Paradoxically enough, you have a better chance with many cheap tablets than with the flagships. You can take a look at the Answers or at the Uploader page in this site for combinations that have been tested, but most are old (people used to send logs early on, now they usually don't unless it doesn't work - also, it's becoming hard for me to update all the combinations: I only have so much spare time). You can send me a log of course (instructions in the Answers page) - I'll be able to check with other logs and / or to point you to the right step here. However, before sending a log, go through steps 1-3, or at least as far as you can go. The reason for writing this tutorial is that it takes way too much time to guide you all through all the steps, one by one. Please help me help you :-) by doing some homework first.
But what about ANT+?
None of the devices listed above is being sold with an ANT+ dongle, like, for instance, the Forerunner 910xt. That's because:
- in most cases, they can only read from ANT+ accessories like HR belts, but cannot send any data over ant+
- in some cases (e.g. edge 800) they can exchange some information over ANT+ with similar units, but not all of them - and not with a PC.
The "not with a PC" part deserves an explanation. ANT+ is a complex protocol with many profiles. Some profiles are standard. Some are not. The unit-to-unit profile / protocol used by some edge (and some 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.
- in most cases, they can only read from ANT+ accessories like HR belts, but cannot send any data over ant+
- in some cases (e.g. edge 800) they can exchange some information over ANT+ with similar units, but not all of them - and not with a PC.
The "not with a PC" part deserves an explanation. ANT+ is a complex protocol with many profiles. Some profiles are standard. Some are not. The unit-to-unit profile / protocol used by some edge (and some 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.
What about BTLE?
Same as above - Garmin is using an undocumented protocol over BTLE (for the BTLE-capable devices in the list). Once again, reverse engineering is possible but definitely time-consuming.