epo expired

hi

epo expired and wont update thru garmin connect ios. anyone else with same problem?

  • It is possible, almost "easy" to make your own EPO.BIN since Garmin just gets the data from Mediatek (not sure if the newer sony chipsets use the same data or EPO.BIN ?)

    However the information was "lost" on the old Garmin forums and no longer exists here, I have no idea why Garmin decided to break all the old forum information and not archive it instead, that was irresponsible.

    Basically long story short, Garmin only stores/uses 9 days of data where mediatek gives out a full 30 days so the data has to be cropped.

    Some info is still in the google cache

    http://webcache.googleusercontent.com/search?q=cache:https://forums.garmin.com/sports-fitness/running-multisport/f/forerunner-230-235/104709/use-watch-under-linux&hl=en&gl=us&strip=1&vwsrc=0

    # The Garmin Forerunner 220 and 620 (FR220 and FR620) make use of a so called
    # EPO file (Extended Prediction Orbit) from the GPS-chip manufacturer MediaTek.
    # Normally the file is downloaded from Garmin when the watch is connected
    # through USB or WiFi (7 days worth of data) or via Bluetooth Low Energy
    # connecting through a mobile app (3 days data). The EPO file describes where
    # the GPS satellites are, in such a manner that it assists location and results
    # in a very quick first lock - usually about 5 to 10 seconds.
    #
    # This information can be downloaded from MediaTek as well, in a much larger
    # file, comprising 30 days of satellite data - 276480 bytes vs Garmin's 64512 -
    # but only 28 days with valid data seem to be present at all times. Day 29
    # and/or 30 have all their satellite number fields zeroed out (00). That
    # circumstance appears to cause the Garmin watch to silently reject the file
    # and reach an ordinary satellite lock time of 30-60 seconds. Therefore we must
    # crop the MediaTek file and, at the most, use the first 258048 bytes. BUT,
    # even with such a clean file, the Garmin watches use only a max of one-digit
    # days, ie 9 days of data.
    #
    # epodownload.mediatek.com/EPO.DAT
    # epodownload.mediatek.com/EPO.MD5
    #
    # Both files are updated on the server once per day, around 00:05 - 00:10 UTC.
    # Satellite position data is adjusted each day, ie we gain more accuracy the
    # fresher the file, but I have found it fully adequate to use one week old data.
    # The (cropped) EPO.DAT file must be renamed EPO.BIN and placed in the watch
    # directory REMOTESW (eg: /media/GARMIN/GARMIN/REMOTESW ). From there it is
    # swallowed and integrated in some invisible system space.
    

    There is another approach documented here using the data directly from Garmin themselves but of course this fails if Garmin is down/hacked/etc. and their data is older than Mediatek which updates far more frequently

    https://www.kluenter.de/2014/03/23/garmin-ephemeris-files-and-linux.html

    I'll just add/point out that each EPO SET is 2304 bytes and has 6 hours of satellite locations.

    Garmin's maximum EPO.BIN file size is 64512

    So 64512 / 2304 = 28 sets, each set is valid for six hours, so that's 168 hours of GPS quick finding. which is 168 / 42 = 7 days.

    This is why if your watch never syncs with garmin for over 7 days you are going to have a horrible very slow time connecting to GPS

    Mediatek's EPO.DAT is  276480 bytes, so / 2304 = 120 sets x 6 hours = 30 days (but apparently last day is blanked out)

    In theory grabbing only the first 64512 bytes of the EPO.DAT and saving it as EPO.BIN works since it's on a 2304 byte boundary.

    It appears that is what this website will do for you

    https://www.javawa.nl/epo_en.html

    But you can also do it manually for those that know what they are doing

    curl -o EPO.BIN  -r0-64511  https://epodownload.mediatek.com/EPO.DAT

  • Thanks for such a detailed explanation.  It's much appreciated.

  • Have used ths method for some years, thanks!

    But the new devices need a CPE.bin - does anyone know a source for this file?