Issue with Bangle.js 2 Accelerometer #7751
-
Hello, I'm experiencing a recurring problem with my Bangle.js 2 watch (ordered in March), where the accelerometer suddenly stops working after a period of time (usually half a day). Problem details:
Troubleshooting steps already taken:
Additional information:
I'd appreciate any suggestions or advice on what I can try next to troubleshoot and potentially fix this issue, thanks ! |
Beta Was this translation helpful? Give feedback.
Replies: 4 comments 4 replies
-
Sorry you're having problems, and thanks for trying all that stuff - I've got to say I've never really come across that before at all. Just to check: You did a factory reset, and after that you managed to get it working for a while and then it still broke again? I ask because it's possible for apps to reconfigure the accelerometer, so it is possible for an installed app to potentially cause problems, and then maybe after it started working after a factory reset it might stay working? If you connect with the Web IDE at https://www.espruino.com/ide, do you see any messages when swapping between apps? And if you paste Finally - I've got to ask - you haven't been swimming/bathing/showering/etc with the Bangle that could have got it submerged in water for a while? This kind of instability sounds a bit like an electrical problem that could be due to corrosion inside the device - it's actually possible that just having it somewhere warm and try for a few days would dry it out and fix it properly if that's the case. |
Beta Was this translation helpful? Give feedback.
-
Hello,
Thank you for giving me some leads to investigate this problem ^^
Yes, after a factory reset, or a simple reboot, the accelerometer is working for a while and eventually stop working. See this video of case #2 of the common case where accelerometer seems broken and works well just after rebooting. Or this other video on another case #2 where I had to reboot two times to fix the accelerometer. Here's a summary of the cases:
Currently, in addition to the default apps, I only have a clock, android integration, sleep log, Health Tracking, Cards and Accelerometer Graph.
Nothing relevant when swapping between apps. For the case #1 where only the pedometer does not update and gadgetbridge stats are broken, but >Bangle.on("accel",print);setTimeout(load,2000)
=7
{ "x": 0.18505859375, "y": 0.30627441406, "z": -0.95825195312, "mag": 1.02288684882,
"diff": 0.06799316406 }
{ "x": 0.21252441406, "y": 0.46276855468, "z": -0.85021972656, "mag": 0.99105748835,
"diff": 0.19201660156 }
{ "x": 0.17309570312, "y": 0.56811523437, "z": -0.78833007812, "mag": 0.98700625836,
"diff": 0.12829589843 }
{ "x": 0.12145996093, "y": 0.54943847656, "z": -0.82312011718, "mag": 0.99707667155,
"diff": 0.06494140625 }
{ "x": 0.06958007812, "y": 0.45874023437, "z": -0.89453125, "mag": 1.00770538707,
"diff": 0.12646484375 }
{ "x": 0.05651855468, "y": 0.39624023437, "z": -0.95495605468, "mag": 1.03544277328,
"diff": 0.087890625 }
{ "x": 0.06909179687, "y": 0.40051269531, "z": -0.94567871093, "mag": 1.02931643328,
"diff": 0.01611328125 }
{ "x": 0.08850097656, "y": 0.42651367187, "z": -0.91943359375, "mag": 1.01740083962,
"diff": 0.04162597656 }
{ "x": 0.10485839843, "y": 0.42199707031, "z": -0.92590332031, "mag": 1.02292412702,
"diff": 0.01806640625 }
{ "x": 0.10729980468, "y": 0.39270019531, "z": -0.939453125, "mag": 1.02386467150,
"diff": 0.03234863281 }
{ "x": 0.107421875, "y": 0.3447265625, "z": -0.93420410156, "mag": 1.00155537315,
"diff": 0.04821777343 }
{ "x": 0.10437011718, "y": 0.29309082031, "z": -0.96301269531, "mag": 1.01202213495,
"diff": 0.05920410156 }
{ "x": 0.07580566406, "y": 0.17944335937, "z": -0.97546386718, "mag": 0.99472416986,
"diff": 0.11779785156 }
{ "x": 0.04895019531, "y": 0.02526855468, "z": -0.9697265625, "mag": 0.97128998115,
"diff": 0.15649414062 }
{ "x": 0.02087402343, "y": -0.05700683593, "z": -0.99108886718, "mag": 0.99294644712,
"diff": 0.08947753906 }
{ "x": -0.005859375, "y": -0.09643554687, "z": -0.99267578125, "mag": 0.99736620839,
"diff": 0.04760742187 }
{ "x": -0.01000976562, "y": -0.14086914062, "z": -0.99963378906, "mag": 1.00956031143,
"diff": 0.04516601562 }
{ "x": 0.00524902343, "y": -0.21545410156, "z": -1.00915527343, "mag": 1.03191200595,
"diff": 0.07666015625 }
{ "x": 0.03271484375, "y": -0.25378417968, "z": -0.98022460937, "mag": 1.01307302584,
"diff": 0.05529785156 }
{ "x": 0.04028320312, "y": -0.28308105468, "z": -0.9677734375, "mag": 1.00912984610,
"diff": 0.03271484375 }
{ "x": 0.03234863281, "y": -0.26965332031, "z": -0.97033691406, "mag": 1.00762744801,
"diff": 0.01574707031 }
{ "x": 0.03601074218, "y": -0.24658203125, "z": -0.97888183593, "mag": 1.01010351965,
"diff": 0.02478027343 }
{ "x": 0.04187011718, "y": -0.22546386718, "z": -0.98388671875, "mag": 1.01025746097,
"diff": 0.0224609375 }
{ "x": 0.05920410156, "y": -0.22924804687, "z": -0.96948242187, "mag": 0.99797593105,
"diff": 0.02282714843 }
{ "x": 0.07971191406, "y": -0.24865722656, "z": -0.98474121093, "mag": 1.01877360492,
"diff": 0.03198242187 } For case #2, when accelerometer is broken for all apps, I get on console stuck values stats (line in Accel Graph is advancing very slowly) : >Bangle.on("accel",print);setTimeout(load,2000)
=1971
{ "x": 0.00012207031, "y": -0.00012207031, "z": 0.00012207031, "mag": 0.00021143198,
"diff": 0 }
{ "x": 0.00012207031, "y": -0.00012207031, "z": 0.00012207031, "mag": 0.00021143198,
"diff": 0 }
>Bangle.on("accel",print);setTimeout(load,2000)
=7
{ "x": 0.00012207031, "y": -0.00012207031, "z": 0.00012207031, "mag": 0.00021143198,
"diff": 0 }
{ "x": 0.00012207031, "y": -0.00012207031, "z": 0.00012207031, "mag": 0.00021143198,
"diff": 0 }
>Bangle.on("accel",print);setTimeout(load,2000)
=7
{ "x": 0.00012207031, "y": -0.00012207031, "z": 0.00012207031, "mag": 0.00021143198,
"diff": 0 }
{ "x": 0.00012207031, "y": -0.00012207031, "z": 0.00012207031, "mag": 0.00021143198,
"diff": 0 }
>Bangle.on("accel",print);setTimeout(load,2000)
=7
{ "x": 0.00012207031, "y": -0.00012207031, "z": 0.00012207031, "mag": 0.00021143198,
"diff": 0 }
{ "x": 0.00012207031, "y": -0.00012207031, "z": 0.00012207031, "mag": 0.00021143198,
"diff": 0 }
>Bangle.on("accel",print);setTimeout(load,2000)
=7
{ "x": 0.00012207031, "y": -0.00012207031, "z": 0.00012207031, "mag": 0.00021143198,
"diff": 0 }
{ "x": 0.00012207031, "y": -0.00012207031, "z": 0.00012207031, "mag": 0.00021143198,
"diff": 0 }
{ "x": 0.00012207031, "y": -0.00012207031, "z": 0.00012207031, "mag": 0.00021143198,
"diff": 0 }
>
____ _
| __|___ ___ ___ _ _|_|___ ___
| __|_ -| . | _| | | | | . |
|____|___| _|_| |___|_|_|_|___|
|_| espruino.com
2v26 (c) 2025 G.Williams
>Bangle.on("accel",print);setTimeout(load,2000)
=5
{ "x": 0.00012207031, "y": -0.00012207031, "z": 0.00012207031, "mag": 0.00021143198,
"diff": 0 }
{ "x": 0.00012207031, "y": -0.00012207031, "z": 0.00012207031, "mag": 0.00021143198,
"diff": 0 }
>
>
____ _
| __|___ ___ ___ _ _|_|___ ___
| __|_ -| . | _| | | | | . |
|____|___| _|_| |___|_|_|_|___|
|_| espruino.com
2v26 (c) 2025 G.Williams
>
____ _
| __|___ ___ ___ _ _|_|___ ___
| __|_ -| . | _| | | | | . |
|____|___| _|_| |___|_|_|_|___|
|_| espruino.com
2v26 (c) 2025 G.Williams
>Button held down - interrupting JS execution...
Execution Interrupted
Found BANGLEJS2, 2v26
> Another #2 case, but without any stats that is retrieved : Connected to Android
>Bangle.on("accel",print);setTimeout(load,2000)
=11
>
>
>Bangle.on("accel",print);setTimeout(load,2000)
=7
>Bangle.on("accel",print);setTimeout(load,2000)
=8
>Bangle.on("accel",print);setTimeout(load,2000)
=7
>Bangle.on("accel",print);setTimeout(load,2000)
=8
>Bangle.on("accel",print);setTimeout(load,2000)
=7
>Bangle.on("accel",print);setTimeout(load,2000)
=8
>Bangle.on("accel",print);setTimeout(load,2000)
=7
>
>
>Bangle.on("accel",print);setTimeout(load,2000)
=7
>Bangle.on("accel",print);setTimeout(load,2000)
=7 After rebooting :
I always take off my watch to avoid getting it wet. However, I don't believe it's the cause of this issue because it seems to be resolved after a simple reboot. Thank for reading and for your support ^^ |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
Ok, thanks - this is really strange. I just checked I wouldn't be too concerned about gaps in Gadgetbridge - that could be due to your phone's power saving, and Gadgetbridge had an issue (which should be fixed in the nightly builds) where it expected data every minute but Bangle.js provided it every 10, so it was showing gaps everywhere. One thing that does come to mind though is I remember a while back we found some people were experiencing the accelerometer producing registering a 'tap' when the heart rate monitor was on... and sleeplog does turn the heart rate monitor on very quickly to check if the Bangle is being worn, so it's possible it's some power spike that's resetting it. Please could you paste this code in? This'll create a file that runs at boot time that checks for accelerometer issues once a minute and fixes them.
I believe that should fix it? If so I could look at pulling something similar into the firmware |
Beta Was this translation helpful? Give feedback.
It could definitely impact the statistics. When you connect I believe Gadgetbridge attempts to request the data that was stored while it was disconnected, but if that process gets interrupted (eg you're swapping apps on Bangle.js) then I guess it may be left without data. Which sync do you do? The one via the 'refresh' icon on the device tab in Gadgetbridge?
Personally I wouldn't be too concerned about battery usage from the Gadgetbridge connection - it shouldn't be that high. You can also add a command to Bangle.js like
NRF.setConnectionInterval(100)
which will slow d…