Bizarre CIQ 1Hz watchface fenix 5X firmware bug

I just had a very strange situation going on which I thought I should report to Garmin.

I am in the middle of creating a watch face which updates every second. It is currently in a stable state, just waiting for me to have time to add a few more items to the display and decide what custom fonts I want to use etc etc. It uses a clipping region and onPartialUpdate() to update the seconds and a background service which runs every 15 minutes to obtain weather data. So, it is currently side loaded onto the watch.

About 10 minutes ago I happened to look at the watch and what I saw was very strange. It was showing the default analogue watch which is displayed when a watch face crashes, but the second hand was not moving, and overlayed on top was my clipping region with the digital seconds being updated! I captured a screen shot which I have configured as a hot key, but the image in the bitmap file shows only the analogue watch face without my seconds.

When the screenshot was complete the display went back to the analogue watch, but 5 seconds later, the second hand stopped again and the onPartialUpdate() seconds started being displayed on top again. But on the minute, when an onUpdate() ran, my full digital watch face was displayed again and it was back to normal.

But...

If I scrolled to a widget and back to the clock the analogue clock returns. But then 5 seconds later, the second hands stop moving and my digital seconds are overlayed again and the process repeats.

Even after connecting to the PC (to download the bitmap) and disconnecting again the behaviour is the same. I was able to capture this on video:

www.youtube.com/watch

I checked the watch face log file and CIQ_LOG.txt and there is nothing indicating any kind of crash or other problem going on. Other than this strange behaviour everything seems to be working normally. The watch is currently running in this state, so if anyone at garmin would like me to do anything to obtain more information I'm happy to oblige.
  • VERY odd! I notice just a few seconds in, when you go to the widget loop, the analog WF flashes very briefly before the widget is displayed... What FW is on the watch?

    If you go into preview mode (where you can change WFs) does it look normal?
  • After I posted I thought I should have included the firmware version. I'm running the latest production firmware 4.10 (there is currently no beta) and I have checked and all components including display are on the latest/correct version.

    Every time I press any button which causes a screen update, the analogue watch displays briefly before switching to the new screen. Also notifications such as bluetooth connect/disconnect causes the display to go back to the analogue watch face, before following the same pattern, 5 seconds later my seconds appear and on the minute my complete watch face appears until the next system update which causes the watch to revert to the analogue face.
  • If you go into preview mode (where you can change WFs) does it look normal?
    Well, this is even stranger.

    If I go to the settings and look at the preview, what I see there is a newer version of my watch face which I loaded while I had the watch connected to my PC. It shows my step history which I just added.

    What is currently running appears to be the older version. Going into settings starts the newer version. I guess this will need input from the Garmin developers who know how watch faces get loaded into the VM to understand what is going on here.
  • Former Member
    Former Member
    The Fenix 5X is a unique beast and does a lot of complicated things to run watchfaces. We will have to look at this with the device developers. Thanks for the detailed report. If it is possible for you to send both versions of your prg to [email][email protected][/email], they will probably help us with our investigation.
  • Former Member
    Former Member
    The device team asked me to have you check the display software version also. You can find this under Settings->About. It is on the third page down. (Display: X.XX)
  • As mentioned, the display software is the latest, specifically it's 2.30.

    You probably do not need the second prg file as the problem was happening even before I loaded the newer version on. This just highlighted that what was being run is somehow cached. I am not even sure it is due to the prg code itself as I have been running this since the weekend without seeing anything like this before, and have been running older versions for a few weeks. I think it is most likely due to some strange state the watch itself has got into. I think it unlikely I'll be able to re-produce once I restart (or reset if needed) the watch. Actually, I cannot provide you with the original prg file since I no longer have this, I could re-build it if you wanted by commenting out the new code I have added since although I cannot be certain I would re-create the exact thing since I am not sure what what point I side loaded the version I was running?

    I went running tonight and held down to get back to the watch face. When doing this, the newer prg file gets run since I see the newer version. But after finishing the activity and saving it, it goes back to the main watch face and switches back to the older (cached?) version.

    I plan on restarting, and if needed resetting the watch later to "fix" the problem. If there is anything else I can do to collect any data before doing so please ask soon :)
  • Former Member
    Former Member
    There is a second (cached) copy of the face that gets run most of the time, but occasionally the face is run directly from disk. One of the times this happens is when you are in an activity, so I am not surprised by your experience there.

    Specifically I am interested in trying to get the old and new version of the prg to attempt to investigate why the cached copy is not getting updated. This copy should never differ from the one on disk.

    One thing you can try to see if it clears the error, is to switch to a different CIQ face, and then back to this one. This should force the cached copy to get updated. It may also be interesting to see if your face continues to behave the same way after this copy is updated to the new version.
  • Ok, well is seems that the cache is stuck with my old version.

    If I switch to a different CIQ watch face, after the "loading watch face" it goes back to the analogue watch face showing the same behaviour, i.e. showing my partial update seconds after 5 seconds and my old face in full on the minute. If I start an activity and go back to the watch face, the new selected CIQ watch face shows.

    If I switch to a different native watch face, I see the same behaviour but with the new native watch face. i.e. the native watch face shows for 5 seconds, then the seconds stop displaying (be it analogue or digital) and my partial update seconds appear on top. And on the minute my old CIQ face is displayed.

    What I have noticed it that the background service does not run since I can see my weather is not updating. But when it is run direct from disk it gets the updated weather. It also uses a different property store since I save the weather in the property store and the two versions show something different each time they are started.

    So, it seems my original CIQ watch face is well and truly wedged in the cache and does not want to stop running.

    As I said, I cannot provide the original watch face prg since I have updated and re-built with newer functionality and I do not save copies of incremental builds. I can either provide what I have currently or revert the code back and re-build as close to what I had before as I remember. Would either of these suffice?

    I have now powered off the watch and powered it back on again (no reset) and the behaviour is back to normal. The updated prg file is now being used and I am not seeing any strange behaviour. I was a little surprised that connecting to the PC did not stop if from occurring. I guess this does not erase the cache.

    Let me know what prg file you would like me to send in and I will do so. I suspect that it was not something unique to that specific prg file so if it is related to the prg file, the latest copy would be good enough.
  • Former Member
    Former Member
    I agree based on your report that the old prg was not related to this issue. We were considering the possibility that the system did not detect the change between the two versions, but if it failed to send a completely different face, that is certainly not the issue. Based on this, I'd say it doesn't appear it has anything to do with your application at all actually. If you don't mind sending the latest version anyway, we will have it in case we change our mind and want to investigate what it is doing. I think the device team has a couple ideas they will be looking at. If this happens again, let us know anything you can about the conditions prior to it occurring.