Complete
over 4 years ago

WERETECH-11147

Fixed

The burn-in protection on Venu2(s) devices with CIQ4 falsely triggers and turns off the display

I have ported several watch faces with Venu1 AOD support to the Venu2 and Venu2s devices.

My AOD modes are straight forward. I'm using a dense pattern clearing every 2nd pixel row or column on the screen alternating each minute starting with the first row/column or the second row/column.

This ensures that less than 10% of the pixels are on and no particular pixel is on for more than 1 minute.

On the Venu2 the simulator detects a screen burn-in. On the Screen Burn-In Simulation window it looks like the overlay pattern is ignored.

Also some drawing artifacts are missing on the burn-in screen for example the minute and hour hands.

I'm in contact with 2 other developers who have similar problems with at least some of their watch faces.

I already uploaded my watch faces with Venu2 support to the Connect IQ store and received feedback from a user who also owns a Venu1 that

the AOD is not working on his new Venu2. - It turns off the screen.

So this is potentially not only a problem of the simulator but also of the actual device.

Here is a screen recording of the problem in action highlighting the differences between Venu1 and Venu2:

https://drive.google.com/file/d/123bDerdGzCovWEcJlxonKbRBSo96lqrq/view?usp=drivesdk

  • thanks for reporting this issue, the screen protection is triggered most likely due to the number of pixels that were 'on' (non-black) during low power mode, we have a 10% limit, so for venu2 that's about 17,305 pixels.

    looks like in the video we are leaving too many pixels on, can you try reduce the number of fields shown on watch face during low power mode?

  • I think I was right

    there was black, you can see it while zoom it

  • You very clearly presented the issue at hand!

  • Former Member
    Former Member over 4 years ago

    Here is video proof AND source code, demonstrating one of the bugs with AOD on CIQ 4.0.

    Video proof:

    Source code: https://gitlab.com/lignite/garmin-aod-demo

  • Hello,

    yesterday I uploaded my watch faces with a workaround of the Venu2 burn-in detection issue and today I received feedback from a user with a Venu2 that it works fine now.

    I'm seeing several bugs here. Some are specific to the simulator and there seems to be one crucial bug that the simulator and the watch firmware have in common.

    1) When entering low power mode the burn-in detection seems to be lagging behind with one onUpdate() call.
    It detects all my watch faces features without the overlay and also sometimes shows the second hand which I clearly do not draw when entering the low power mode.
    When a watch face uses more than 10% of the pixels in full power mode the detection will trigger immediately.
    2) The burn-in detection will not detect black pixel overlays used in the following onUpdate() calls.
    Every pixel that is touched once within an onUpdate() call will be taken into account by the burn-in detection even if the resulting color in the end is black.
    3) The burn-in detection can sometimes be screwed up when using certain combinations of drawing primitives. - The detection will not detect any pixels of the drawn watch face.
    4) This one is not specific to the Venu2/CIQ4 devices
    When drawing a text with transparent background with a custom font into a bitmap buffer that uses a palette the resulting background is not transparent but instead alternates
    between all kind of colors.
    This issue showed up when I upgraded to the new CIQ4 which I assume came also with an update of the simulator.

    Watch Faces that do not use the overlay approach and use below 10% of the pixels also in full power mode will not see the issues above.

    1) and 4) seem to be specific to the simulator.
    I have no idea if 3) can be reproduced on a real device.

    2) is what is also causing the watch face on the real device to go black.
    As I have demonstrated in a screen recording this issue can be worked around with a bitmap buffer in the simulator.
    As it turns out it also seems to work on the real device.
    Normally I would not use a bitmap buffer on an AMOLED device since there is no onPartialUpdate().
    With CIQ4 devices this does not require any extra memory since the bitmap buffer memory implementation now uses a memory pool.
    With my watch faces already supporting onPartialUpdate() for other device types the workaround required no more than changing 5 lines of code.

    When Garmin fixes this bug I will remove the workaround since the watch face will perform more efficient without it.

    If anyone of you has a Venu2 and can also confirm that my workaround is working, that would be great!
    https://apps.garmin.com/de-DE/developer/6436a326-9f3d-4e5d-a6c6-2ec8550bd37b/apps