Display unlocks frequently without interaction

Posted on
Page
of 2
/ 2
Next
  • I setup my Bangle.js 2 to only unlock when the button is pressed (not for turning my arm or touching the display or anything).
    Despite that the display keeps turning on (and unlocking) regularly (multiple times a minute to every few minutes).
    I suspect that it turns on every time it tries to read my heartrate, since if I ask health to measure every 3 minutes it occurs every 3 minutes and if i use recorder to measure more often it turns on multiple times a minute. But I am not certain, if this is really the reason.
    It is pretty annoying.
    Is this expected behaviour? Did I mess up some setting (I looked everywhere but could not find anything related)? Any ideas would be appreciated. I love the locked, unlit display and would like to use it more often.

    Firmware: 2v19
    Apps installed:
    openstmap (0.25), widid (0.03), antonclk (0.11), wid_a_battery_widget (0.04), bthrm (0.17), widlock (0.08), agpsdata (0.06), widmessages (0.05), messageicons (0.05), widbt (0.09), lightswitch (0.09), android (0.32), iconlaunch (0.19), messagegui (0.74), notify (0.13), messages (0.62), boot (0.59), antonclkplus (0.10), locale (0.17), gbridge (0.27), hrm (0.11), health (0.27), recorder (0.32), setting (0.65)

  • Do you have Wake on tap enabled?

    I know someone did report an issue that for some reason having the HRM on caused taps to register on the accelerometer and I still have to look into that, but if you just have 'wake on BTN' on then you should be fine

  • I have noticed this today. I only have wake on touch on.

  • You mean the option in the LCD menu next to wake on BTN, right?

    No, I do not have wake on touch enabled.
    I tried to enable it and disable it again, but it did not help. Also touching the display does not wake it up.

    I also noticed that it wakes up a few seconds after HR Measurement started.
    When it measures for a minute it wakes up 2-3 times during that and than not until the next measurement.

  • I see this behaviour as well with the HRM to 3 mins.

  • I do not. How to recreate? Edit: I just experienced it, I set only wake on touch.

    I made further testing and requires :

    • wake on touch
    • Bangle.setHRMPower(true)

    some timestamps in ms between each wake, with watch on desk face down to keep hr light on:
    62529 58397 11837 32309 13753 5924 29351 6560 27113 796 11840 8795

    Bangle.setOptions({hrmPushEnv:true});
    console.log(Bangle.getOptions());
    Bangle.setHRMPower(true);
    console.log(Bangle.getOptions());
    

    It seems calling setHRMPower(true)forcefully sets/overrides my own values, hrmWearDetect is set to true, and hrmPushEnv is set to false. So I to have to set those options after calling setHRMPower()

    Bangle.on("HRM-env",(e)=> {
        console.log(e);
      });
    

    My readings are all 0 for this event. Is that expected? The documentation doesn't describe what environment means either.

  • You mean the option in the LCD menu next to wake on BTN, right?

    it's two down from Wake on BTN1 - I meant Wake on Touch.

    It's a bit confusing but it's documented in the readme there - the touchscreen draws a bunch of power when on so we do wake on touch by detecting a 'tap' from the accelerometer. Just touching won't wake it, you have to tap it such that the watch actually moves.

    So @HughB and @d3nd3-o0 it's what I said in your case with the spurious tap events, original report at https://forum.espruino.com/conversations­/390041/#comment17120157

    And yes turning the HRM on resets the hrmWearDetect/hrmPushEnv values @d3nd3-o0 but I don't think that's related to @user147320's issue. If you want to see how to use env values check out https://banglejs.com/apps/?id=flashcount­

    @user147320 but you're sure that Wake on Touch is off in your case? In that LCD menu, literally the only Wake on XXX menu item that is checked is Wake on BTN1?

  • I just looked into this more, and I believe unfortunately it's related to power fluctuations from the heart rate sensor.

    The HRM isn't being accessed at the time the accelerometer errors occur so it's not an I2C issue, but if I keep the HRM running but turn off the green LED part of it, the spurious readings stop.

    Or if you try:

    Bangle.setHRMPower(1)
    var diff  =0;
    Bangle.on("accel", a => diff+=a.diff);
    setInterval(function() {
      print(diff);
      diff=0;
    }, 1000);
    

    and put the watch face up on the desk, then slowly move your finger near (without touching) so it thinks you're wearing it and turns on the LEDs then you can see the difference in accelerometer readings really goes up drastically, and down when you move your finger away and the LEDs turn off.

    It's not a great situation but there's not much we can really do to fix the accuracy (except maybe put the accelerometer into a higher power mode that does more averaging when the HRM is on).

    But, I just bumped the threshold for tap detection up a tiny bit (0x1A to 0x25) and that's had a massive effect on the misreported taps, without noticeably causing problems detecting any normal taps - so if you try the current 'cutting edge' build I think you'll find its a lot better

    Anyone who wants to experiment with different values can do so with:

    var c = Bangle.accelRd(0x18); // CNTL1
    Bangle.accelWr(0x18, c &~0x80);
    Bangle.accelWr(0x27, 0x25);
    Bangle.accelWr(0x18, c);
    
  • @user147320 but you're sure that Wake on Touch is off in your case? In that LCD menu, literally the only Wake on XXX menu item that is checked is Wake on BTN1?

    Unfortunaly yes, only wake on BTN is enabled :(
    I will try the cutting edge-build later anyway to see if this changes anything.
    Edit: Uploading the cutting Edge-Firmware hangs at about 20-30%, so i don't know if this would help

  • How are you trying to update? Phone or computer? Official app loader, development app loader or personal app loader fork?

  • Bangle 2 and the accel wakeOnTouch has been around for a while, yet we didn't have those issues around?. Has the hr usage always been having this influence on other components or is it related to the third-party algorithm?

    Whats the new variable here to cause it?

    @Gordon I did forget that it uses accel, was assuming it has another touch sensor similar to bangle 1.

    Is there an older firmware version of b2 that does not have this problem?

  • @user147320 it'd do us a favour if you ran console.log(Bangle.getOptions()) on left hand side of ide whilst experiencing the bug and pasting output here. To clear that confusion up.

  • Sure thing, good idea!

     > console.log(Bangle.getOptions()) 
    { "hrmPollInterval": 40, "hrmSportMode": -1, "hrmGreenAdjust": true, "hrmWearDetect": true,  
        "hrmPushEnv": false, "seaLevelPressure": 1013.25,
        "gestureStartThresh": 640000, "gestureEndThresh": 4000000,
        "gestureInactiveCount": 4,   "gestureMinLength": 10,
        "stepCounterThresholdLow": 536888040, "stepCounterThresholdHigh":
        537068368, "twistThreshold": 4096, "twistTimeout": 1000,  
        "twistMaxY": -800, "wakeOnBTN1": true, "wakeOnBTN2": true,
        "wakeOnBTN3": true, "wakeOnFaceUp": false,   "wakeOnTouch": false,
        "wakeOnTwist": false, "powerSave": true, "lockTimeout": 10000,
        "lcdPowerTimeout": 0,   "backlightTimeout": 10000, "btnLoadTimeout":
        1500, "touchX1": 0, "touchY1": 0, "touchX2": 160,   "touchY2": 160 }
        =undefined
    

    How are you trying to update? Phone or computer? Official app loader, development app loader or personal app loader fork?

    I used the official App-Loader and Android (Gadgetbridge and Chrome).
    Now I tried it with Linux and it worked.

    With Version 2v19.53 it still wakes up randomly, although I am not sure of the connection with HR-Measurement anymore. I need more time to observe this again after the update to tell.

  • EDIT: This response is based on false evidence.
    I tested every firmware from 2v11 to 2v19. Using gordon's script printing accel values.

    Results are that v19 has anomalies which are not present in v18. No where near as high. Still, I am unable to explain OP's condition or find a test-case that screen turn on without wakeOnTouch.

  • @user147320 thanks for that dump! That's an odd one - as you say it looks like the wake sources are set up fine. Maybe you could try Settings -> Utils -> Rewrite settings just in case there's some issue with them taking effect?

    If you're connected with the IDE you could paste setWatch(print, BTN, {repeat:true}) on the left-hand side which would tell you when the Bangle thought a button was being pressed, in case that was waking it up...

    I notice you do have gbridge installed which is something that's not recommended, so you could try disabling that...

    Is there an older firmware version of b2 that does not have this problem?

    No, they've always had it as far as I know. I'm pretty sure Wake on Touch (tap) was added reasonably recently which is why this got noticed - before, we were never forwarding these events.

    Results are that v19 has anomalies which are not present in v18

    More info? I really don't think this is a recent issue.

  • @user147320 thanks for that dump! That's an odd one - as you say it
    looks like the wake sources are set up fine. Maybe you could try
    Settings -> Utils -> Rewrite settings just in case there's some issue
    with them taking effect?

    If you're connected with the IDE you could paste setWatch(print, BTN,
    {repeat:true}) on the left-hand side which would tell you when the
    Bangle thought a button was being pressed, in case that was waking it
    up...

    I wont have time for this today but I will try this soon.

    With 2v19.53 it got definitely better. With Recorder running it wakes up about every other minute and with only the Health App I so far did not notice it waking up.
    Edit: It does wake up without recorder but rarely.

    I notice you do have gbridge installed which is something that's not recommended, so you could try disabling that...

    I installed it because Gadgetbridge kept asking me to do so (no idea why), but I already unistalled it since.

  • I installed it because Gadgetbridge kept asking me to do so

    Thanks! I just realised Gadgetbridge is still mentioning Gadgetbridge, not Android integration. I'll fix that.

    However the fact that it's complaining about this even if you have the android app installed is a bit strange anyway - it implies that for some reason the code wasn't running - doing the Rewrite settings mentioned above would definitely be an idea

  • EDIT: Ignore this post. False.
    @Gordon I am still trying to wrap my head around it.
    I will do continue investigation.
    My latest findings point to toggling health timer to 3 mins in health settings. This enables the 'power issue', yet strangely when you disable it, it still remains. I'll keep you posted.

    I mean the above, in the context of using your setHRMPower script with accel events.

    I also have to test this on 2v18 too.

  • Just to chime in, I've also sporadically had the screen turn on seemingly in correlation to the watch capturing hrm data. For me, I'm pretty sure most of these times I have not had any other of the standard ways of unlocking on than via the hardware button. However, I do use Light switch widget to unlock on tap (right tap side).

    I've also seen this across many stable firmware versions.

  • I've also sporadically had the screen turn on
    #metoo, sometimes the wake up is unexpected.

  • However, I do use Light switch widget to unlock on tap (right tap side).

    That'd be it then...

  • However, I do use Light switch widget to unlock on tap (right tap side).

    I too use that widget, but I do not have the setting turned on, tapping the corner did not wake up the screen.
    I just uninstalled it anyway. So far (a few minutes) it did not wake up. I will report back after observing it longer.
    @ccchan Do you use this widget?

    Maybe you could try Settings -> Utils -> Rewrite settings just in case there's some issue with them taking effect?

    I tried it and it did not fix it. Still good to know that this exists!

    If you're connected with the IDE you could paste setWatch(print, BTN, {repeat:true})

    Even if I actively wake it up with the button this command does not tell me about it.
    It seems to only work if the device is already awake.

    And btw a huge thanks for the great support!

  • It seems to only works if the device is already awake.

    Ahh, sorry - my mistake.

    Right now it's a bit hard to see why it woke - I guess I could change the firmware so that it reported why it woke up, and that might allow us to pin this down more?

  • That might not be necessary. So far I did not observe any more wake ups.
    So it might very well be the combination of the accelerometer-bug and a weird behavior in lightswitch (0.09) which ignores my settings.

    I would observe it for a few more days before calling this fixed, but there's hope that's it.

    @Ganblejs

    However, I do use Light switch widget to unlock on tap (right tap side).

    Thanks for the hint, I would never have thought about blaming this widget.

  • @ccchan Do you use this widget?

    negative, no.

    thanks

  • Post a reply
    • Bold
    • Italics
    • Link
    • Image
    • List
    • Quote
    • code
    • Preview
About

Display unlocks frequently without interaction

Posted by Avatar for user147320 @user147320

Actions