TIMER BUGS in GARMIN DEVICES

As part of test cases for my CIQ apps, I've discovered the following bugs in the Garmin device firmware. This might impact some of you. The device I used is the Garmin Edge 820, firmware version 8.50 (latest firmware).

Unfortunately these can't be reproduced in the Eclipse environment since for a running activity Sleep/Restart, PowerCycle/Restart, ProfileSwitch, and Discard/StartNew are not supported to emulate the device actions.

BUG #1
======================
When in an active activity, stop the activity, hold the power button, and select the SLEEP option. Later after the SAG stop or break, wake up the device and restart the activity. This action is useful to save battery while stopped for more than a brief time.

- System (internal) START TIME remains correct - does not reset (GOOD)
- System (internal) Elapsed Time and Timer Time are WRONG - losing a big chunk of time (BAD - they should continue. Note that current time minus start time is the work around to get correct elapsed time)

BUG #2
========================
When in an active activity, stop the activity, DISCARD the activity, and start a NEW activity, without cycling the power.

- System (internal) START TIME resets to the NEW activity start time (GOOD)
- System (internal) Elapsed Time and Timer Time are NOT reset and continue from PRIOR activity (BAD)
  • Former Member
    Former Member
    Hey,

    I've been working on reproducing these, but have been unsuccessful. I've tried profile that include and do not include ciq data fields.

    Thanks,
    -Coleman
  • Hi Coleman - I removed 2 of the bugs.... related to system Distance. I overrode distance with a synthetic value, so when I switched profiles or the CIQ data field was removed/restored, distance was reset. My bad. However, the two remaining bugs should be reproducible In BUG 1, you will need to keep a stopwatch running separately so you can see that the Garmin Elapsed Time is actually wrong. For Bug #2, it'll be obvious that Elapsed Time is not reset to ZERO when it should be, with the activity discarded and a new activity started.
  • Former Member
    Former Member
    Hey,

    I've checked the steps again and used an outside timer to verify. I am still not seeing the behavior you have described. Perhaps you could send a video? I can pass things onto the device team once we have some reproduction steps.

    Thanks,
    -Coleman
  • Strange - yes I will create a video tonight and post a link to it. Thanks for looking into this issue.. I will create THREE short videos, one for each bug. The 3rd is related to running the Garmin while a Course is active.
  • Former Member
    Former Member
    Sounds great!

    Thanks!
  • Coleman / Brian,

    Here is one of the frustrating bugs in the Garmin Edge 820, latest firmware ver 8.50. I'm sure it exists in other devices, and has been around many firmware versions. Note my workaround that attempts to fix the bug by ignoring the lost time after the LAP button is pressed, assuming that compute() is called every 1000ms. I also added another way to derive accurate Elapsed Time by simply looking at the Activity Start Time. It seems to be a decent workaround. But clearly a bug. This bug does not exist in the Eclipse environment. This seems to occur with AUTOPAUSE turned on and the test run when not moving (eg: the unit is in a paused state).


    This is from the DEVICE Log file. Note the Elapsed Time is completely useless after the LAP Button is pressed
    ========================================================================================
    Time of Day: 7:45:20 System Elapsed Time: 119139 MyWorkAround: 119139 TimeSinceStart: 119000
    Time of Day: 7:45:21 System Elapsed Time: 120144 MyWorkAround: 120144 TimeSinceStart: 120000
    Time of Day: 7:45:22 System Elapsed Time: 121139 MyWorkAround: 121139 TimeSinceStart: 121000
    LAP Button Pressed
    Time of Day: 7:45:23 System Elapsed Time: 1873 MyWorkAround: 122139 TimeSinceStart: 122000
    Time of Day: 7:45:24 System Elapsed Time: 2266 MyWorkAround: 123139 TimeSinceStart: 123000
    Time of Day: 7:45:25 System Elapsed Time: 3269 MyWorkAround: 124139 TimeSinceStart: 124000
    Time of Day: 7:45:26 System Elapsed Time: 4267 MyWorkAround: 125139 TimeSinceStart: 125000
    Time of Day: 7:45:27 System Elapsed Time: 5266 MyWorkAround: 126139 TimeSinceStart: 126000



    This is from Eclipse, Note that System Elapsed Time is fine after a LAP button Press
    ========================================================================================
    Time of Day: 7:47:11 System Elapsed Time: 8375 MyWorkAround: 8375 TimeSinceStart: 7000
    Time of Day: 7:47:12 System Elapsed Time: 9500 MyWorkAround: 9500 TimeSinceStart: 8000
    Time of Day: 7:47:13 System Elapsed Time: 10625 MyWorkAround: 10625 TimeSinceStart: 9000
    LAP Button Pressed
    Time of Day: 7:47:14 System Elapsed Time: 11750 MyWorkAround: 11750 TimeSinceStart: 11000
    Time of Day: 7:47:16 System Elapsed Time: 12875 MyWorkAround: 12875 TimeSinceStart: 12000
    Time of Day: 7:47:17 System Elapsed Time: 14000 MyWorkAround: 14000 TimeSinceStart: 13000


    myNow = Time.now();
    myStart=null; if (myInfo has :startTime) { if (myInfo.startTime != null) { myStart = myInfo.startTime; } }

    //********************************************************************************************
    // ADDED DUE TO GARMIN BUG where ELAPSED TIME loses time when LAP button is pressed during AUTOPAUSE
    //********************************************************************************************
    mET=0; if (myInfo has :elapsedTime) { if (myInfo.elapsedTime != null) { mET = myInfo.elapsedTime; } }
    if (mET > 0 && mET < mET2) { mET2 = mET2 + 1000; } else { mET2 = mET; }
    //********************************************************************************************

    if (myStart != null && mET != null) {
    System.println("Time of Day: " + todTime2 + " System Elapsed Time: " + mET + " MyWorkAround: " + mET2 + " TimeSinceStart: " + (myNow.value() - myStart.value()) * 1000 );
    }
  • If you were to run that same test code while putting the Garmin Edge 820 into either of the Suspend Modes during an activity, you would see other bugs with the Elapsed Time metric. I have to do a more sophisticated work around to fix these suspend mode bugs :-(

    1. During an activity, pause the activity, hold the power button, then select SLEEP. After a few minutes, wake it back up and restart the activity. Elapsed Time will be wrong -vs- a stop watch.

    2. 1. During an activity, pause the activity, hold the power button, then select POWER OFF. After a few minutes, power it back on and restart the activity. Elapsed Time will be wrong -vs- a stop watch.