Collect EPO data for Garmin devices, e.g. Forerunner watches, with this standalone Go code, instead of Garmin's software.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



Retrieve EPO.BIN GPS data from Garmin's servers on any platform that you can compile a Go binary for, rather than only those that support Garmin Connect. Since Garmin's software doesn't run natively on Linux, it's useful there.

EPO.BIN is GPS Extended Prediction Orbit (EPO) satellite data valid for 7 days, used to help speed up GPS locking on Garmin devices that support this.

For Forerunner devices, the file should be copied to GARMIN/REMOTESW/EPO.BIN on the watch.


There are other existing options, e.g. running curl and then a short Ruby script as detailed in this blog post, or using postrunner, a more complete application which also uses Ruby. However, this code can be compiled into a standalone binary, for different platforms, and then run without any dependencies.


go build armstrong.go and then just run the armstrong binary.


Code uses the POST data and idea from the blog post here and is also based on the GPL v2 licensed code in postrunner, specifically EPO_Downloader.rb. Go code is my contribution.