Open Source course/FIT/GPX importer

Hi App Devs,

this is a call for participation in an open source project, which tries to tackle one of the most wanted feature, not (yet?) provided by the Garmin Connect app.

Imagine you are on the go and want to upload a course to your Garmin device to follow the track. As of now, this involves uploading the gpx file to the Garmin web site, somehow create a course from it and then select "Export to device" in the mobile app.

Current State

  • working android app
  • working connectiq app
  • tracks are served from /sdcard/Download
  • GPX tracks are converted to FIT on the fly
  • https to localhost will never work, because there will never be a trusted certificate


Source code is at https://github.com/gimportexportdevs

User support thread: https://forums.garmin.com/showthread.php?376890-gimporter-gexporter-import-FIT-GPX-courses-from-your-Android-phone

ConnectIQ App: https://apps.garmin.com/en-US/apps/de11adc4-fdbb-40b5-86ac-7f93b47ea5bb
Android App: https://play.google.com/store/apps/details?id=org.surfsite.gexporter

I hereby invite you to help me to make these apps enduser usable. You can add pull request on github, or request membership in the "gimportexportdevs" organization for direct commit access.
  • Since I just need to send the gpx file, I thought it was possible to send the gpx to any Garmin app with an open source protocol, in order to push some gpx to the Garmin. But I'm not sure this is correct, or if my own Garmin app as an interface.

    No, there is no open source protocol. The most open method is to provide the file so that the user can do what they want with it (including loading into the Garmin Connect website.

    =================================

    Wikiloc is a commercial concern.

    Garmin has an API that lets you sync courses with the Garmin Connect website, which can sync (copy) courses to the device. You have to apply to get a license for it.

    What your options are depends on how much time and money you are willing to spend.

    The easiest/cheapest thing to do is to provide links to the tracks on a website and let the user do whatever they want with them. This could be importing the track into Garmin Connect mobile to then get the route on their device. This would allow you to provide just the GPX format file.

    Garmin IQ lets IQ apps/widgets download tracks/route files directly using a URL to the file.

    • For some devices, the URL has to point to a FIT file.
    • For other devices, the URL has to point to a GPX file.

    This also requires some way of providing the list of file for the user to choose from.

    There has to be an IQ app/widget do get the list from a website and display the list and let the user pick a file.

    GExporter is an Android app that can convert GPX files to FIT. It also creates a website on your Android device that provides the list of files (on the Android device) to pick from,

    GImporter is a IQ app/widget that gets the list from the GExporter Android app and displays the list and lets the user pick a file to download.

    It's appears to be relatively practical to create an Android app that runs a website on your phone.

    It appears to be more difficult to do that on iOS.

    ===============

    My GRouteLoader IQ app/widget makes it easy to use other websites (not just one on an Android device).

    But you do have to update the app/widget settings to indicate the URL for the website. Casual users won't want to do this.

    https://sites.google.com/view/grouteloader/grouteloaderiq

    ===============

    Inexpensive options.

    • Provide the tracks in ridewithgps. You would provide links to the RWGPS pages on your website. People could also use the RWGPS app to pin and then download the tracks. Users could also use the RWGPS phone app or the RWGPS IQ app.

      One issue is that the RWGPS IQ app is only available for a few Garmin devices. My GRouteLoader IQ app and widget lets people download routes pinned in RWGPS and runs on many more devices.

    • Provide links to the GPX and FIT files on a website. The user can use whatever method they want to load the route to their device (which might not even be a Garmin).

    Somewhat inexpensive option.

    • Somewhat more expensive is to create a web page (at a particular URL) that produces a list as JSON and use my app. It's not that hard to write the web page. The user would have to update the app settings (which casual users won't want to do). You'd have to provide GPX and FIT versions of the tracks (not hard to do). I use this option for my bicycle club (so people can download routes associated with schedule rides).

    Expensive options.

    • Create a Garmin IQ app/widget (maybe, based on the GImporter code) to connect to a website (that provided GPX and FIT versions of the tracks). This is a fair amount of work. It would require learning how to create and support IQ apps. You might need access to a real Garmin device too.

    • Create a Garmin IQ app/widget. an Android/iOS app, and a web page (and support all five programs). This option is vastly more work and expensive than the first two.