Bangle.js 2 issues/questions

Posted on
  • Hi all,

    Got a Bangle.js 2 for Christmas, from the Espruino shop I believe. My first smartwatch was an Amazfit Cor (with Gadgetbridge) and I'm really looking forward the experience.

    First, the good:

    • Simple and neat packaging, paper based doc is fine for a start, good build materials, simple strap installation, also appreciate the film installed on the middle pins
    • Very fast delivery
    • Wonderful experience w.r.t. apps and firmware installed via browser
    • Some solid docs, e.g. the page that describes which service consumes how much battery
    • The whole experience that I can actually customise mine and set up actions as I see fit
    • The whole experience that my data stays on my devices and (to my understanding) there's little chance that the device would be cracked (if I turn off BT I guess). It's so sweet to have devices with good privacy by design.

    Second, the not-so-good... where my question is (with no bad intent), are these normal, or is it my device and I should seek a replacement?

    • Device appeared to be DoA. Didn't turn on, didn't appear to be charging, having spent hours on 3 different chargers. After that, it turned on :o
    • Charger isn't attaching very well. I haven't found videos with which I could compare with others'. And since pins are level on the charger, I'm uneasy about charging on a metal surface, thinking it can detach and short circuit (I understand there's short circuit protection but I don't want to rely on it tbh)
    • The bottom surface has a good fair bit of scratches on the transparent plastic surface in the middle, right when unpacking. Is that normal for a new device? The main device looks to be... used. :o Now many of my devices I buy used but for wearables and headphones etc. I'd go new.
    • Battery behaves... weird. Seems to discharge a bit faster than expected (I've read the battery usage doc page), and at times battery level increases slightly when device isn't being used actively. The device hasn't been outside yet so wasn't exposed to extreme temperatures. Is there a way to find out the wear level of the battery? A cursory look at the API didn't yield anything.
    • Backlight turns on every now and then when device is idle and is just on the bedside (without a notification arriving). I've turned on the options that turn it on e.g. when I'd look at it, but again, it's turning on when I'm not wearing it and it's not moving.

    I'm not certain if my device is new and is in good condition :s so inputs would be welcome.

    Third, just as sidenote, user feedback:

    • I had a couple of roadbumps as a newbie and I don't recall these documented, so these may be considered for improving docs if appropriate:
      ** Gadgetbridge for Bangle seems to be a fork which specifically needs to be selected and downloading and configuring the original Gadgetbridge yields an error message toast that isn't clear either, from that I thought I'd need to install some sort of a Gadgetbridge plugin, but had to reinstall ultimately.
      ** Installing Gadgetbridge on GrapheneOS is tricky, if installed via the default F-Droid app it won't support sending notifications unless it's reinstalled from a different client, and the experience is baffling as the permission can't be granted but it's not clear why and definitely surprising that it depends on the installer client
    • Observations:
      ** The Bangle.js Gadgetbridge icon on Android looks very different compared to other icons
      ** If there's a Bangle.js 2+ or later model, please change the charger to be less prone to short circuiting. I hope there's something off the shelf that has a solution similar to the Amazfit Cor, simple but pretty safe.
      ** It'd be great to have a firmware(?) feature to turn on the backlight when a notification arrives.
      ** It'd be great to have some docs for "hardening". I guess if I turn off some options in BT I'm okay even if the underlying BT firmware has a vulnerability, but is it so? It'd be great to understand this better.
      ** Freshly set up Gadgetbridge doesn't seem to show sleep stats, every now and then displays a toast about syntax error(?) in JSON but it's not clear where can I look at this error. I haven't got to duckduckgo'ing this yet.
  • Just some notes on some of your points:

    • Charger shorting out on metal surfaces is a valid point, but more for the attached power source than the watch itself. There are some 3D printable or laser-cutable charging cradles. Those should help out with this.
    • The bottom "plastic" surface is glass and had a protector on it on my bangles :) The Bangle itself stands up to surprising amounts of abuse for me without looking to scuffed, scratches all over should not be normal on a new one.
    • Battery charge level is measured as a voltage and not all Bangles are created equal in that respect. There are manufacturing differences in the voltage divider resistors which can cause inconsistent behavior between two watches on charge level readouts. Settings->Utilities->Calibrate Battery on a fully charged Bangle should help with that by storing an offset for the fully charged voltage and essentially marking that as 100%. There is a "Power Manager" app, which can automate this and additionally force monotonic voltage and percentage outputs.
    • If you have the wake on twist enabled maybe the thresholds can help with the watch lighting up. There are some apps that can cause lighting up sometimes, Quiet Mode Scheduler comes to mind
    • Normal Gadgetbridge should work fine for the most part, but not all features are implemented there. Bangle Gadgetbridge is not really a fork, just a different build of the same code with more access rights enabled (Internet access mainly). There is an FDroid repository containing a nightly build for the newest features.
    • Backlight turns on with notifications for me
    • Sleep stats are not yet transmitted as far as I know
    • I too have syntax-error toasts, but those could easily be caused by one of my many installed apps, since the do not seem to create any further problem I currently ignore them :)

    The GrapheneOS thing interests me, I see the same problem with another watch and phone and default GB build from FDroid without a solution so far. Does it actually work for you if the APK from FDroid is installed manually by e.g. file explorer or do you mean something like Aurora installing the Playstore-APK by "other client" ?

  • Hi! Sorry about the problems - I'll try to reply below:

    Device appeared to be DoA

    That's very odd - it's designed to require the button to be held for a while before it turns on so it doesn't turn on in transit though. That could be it?

    Charger isn't attaching very well.

    Maybe you could take a video? I haven't had many complaints about problems, so it might be something odd in your case.

    I'm uneasy about charging on a metal surface, thinking it can detach and short circuit

    Yes, that wouldn't be a good idea without something like a charging cradle. It is a pain but it seems common on a lot of devices. I actually pay extra for the short circuit protection in the plug but as you say it's definitely not an idea ot rely on it!

    The bottom surface has a good fair bit of scratches on the transparent plastic surface in the middle, right when unpacking.

    The HRM sensor should come with a protective film. The film is super soft so will pick up scratches very easily, but it comes off easily enough.

    The main device looks to be... used. :o

    Sorry about this - it definitely shouldn't be. Maybe you could send some pics? The charge port may have some minor marks since we use it to charge, program and test the watch, but other than that the watch should be basically unmarked.

    Battery behaves... weird. Seems to discharge a bit faster than expected (I've read the battery usage doc page), and at times battery level increases slightly when device isn't being used actively.

    You'd expect the reported level to vary - what you see is based on the battery voltage, but that does vary slightly with temperature (and load). It's fine for a 20px battery level meter but if you're looking at the actual percentage, it's not going to be accurate to 1%.

    In terms of discharge, it really depends on what apps are installed. Out of the box it should be pretty good, but some apps/clock faces use more power than others.

    Is there a way to find out the wear level of the battery?

    No, there's no specific battery level handling IC, so things like charge cycles/etc aren't logged.

    Backlight turns on every now and then when device is idle and is just on the bedside (without a notification arriving).

    That is strange - but are you connecting to Gadgetbridge, or an iOS device? It's possible that it is lighting up to show a change in Bluetooth connection state because the phone keeps connecting/disconnecting? If so, it could be due to power saving on the phone - maybe check out https://dontkillmyapp.com/

    I had a couple of roadbumps as a newbie and I don't recall these documented, so these may be considered for improving docs if appropriate

    This is great, thanks!

    Gadgetbridge for Bangle seems to be a fork which specifically needs to be selected

    Do you remember the error message? The normal Gadgetbridge should work fine - there's a list of the differences between different builds at http://www.espruino.com/Gadgetbridge#how-to-set-up

    Installing Gadgetbridge on GrapheneOS is tricky

    That does sound odd - it could be it hasn't been granted Android permissions properly. You could check out the last section on http://www.espruino.com/Gadgetbridge#extra-setup ? If there's something specific I could add to the docs to help though, please let me know!

  • The Bangle.js Gadgetbridge icon on Android looks very different compared to other icons

    Yes - sadly I am not a graphic designer, and getting the app sorted took priority over the icon - but if anyone is reading this and wants to contribute something better I'd be happy to include it ;)

    I hope there's something off the shelf that has a solution similar to the Amazfit Cor, simple but pretty safe.

    I did a quick google and all I saw was https://www.ebay.co.uk/itm/394096073676 which looks kind of similar. Do you have a link?

    It'd be great to have a firmware(?) feature to turn on the backlight when a notification arrives.

    In the Settings for the Messages app there is an option called Unlock Watch - if enabled this will light the screen up I think, but it does also unlock the screen too.

    It'd be great to have some docs for "hardening". I guess if I turn off some options in BT I'm okay even if the underlying BT firmware has a vulnerability, but is it so? It'd be great to understand this better.

    Yes, it's a good point. A page on this for Bangle.js would be good. If Bluetooth is off you're totally fine, or you can also turn 'Programmable' off in settings in which case even if someone did connect to the Bangle the worst they could do is send you notifications - they can't change the code that's on it or anything like that.

    Freshly set up Gadgetbridge doesn't seem to show sleep stats, every now and then displays a toast about syntax error(?) in JSON but it's not clear where can I look at this error.

    The syntax error toast could actually be because of some app that's installed on the Bangle that has a problem. You could connect with the Web IDE and then if if happens you should hopefully be able to see in the console what the full error message is (or you could look in the Gadgetbridge debug logs)

    Hope that's some help!

  • Installing Gadgetbridge on GrapheneOS is tricky

    This behaviour seems to have started with the update to Android 13. I can not say that for sure, since the device also has changed from Pixel 4a to Pixel 6a at that time, but I suspect the hardware has nothing to do with this. Installing the Bangle.js build from the Playstore (I used Aurora from FDroid to do that) has worked and the notification access permission can be set to on as expected. Both versions of GB from FDroid do not work on that device for me, the changing of the setting is just not allowed.

  • You could connect with the Web IDE and then if if happens you should hopefully be able to see in the console what the full error message is

    Maybe you could add console output to https://banglejs.com/apps/ - the "More .." tab? that way it could be seen also in the web view version included inside gadgetbridge. And BTW that one is great and mostly works. There are issues with custom install dialogs (like firmware upgrade, watchface font selection) - buttons do not work, and sometimes GB is confused with the extra traffic done by app installation but otherwise it is quite usable - app updates without dialogs work quite well.

  • Yes, I'd really like to get the dialogs in Gadgetbridge fixed - I'm sure it can't be a super hard fix...

    But yeah, a console menu item in the App Loader would be a nice easy fix and might help a lot for debugging this kind of thing

  • Thank you all for your responses.

    • On the design of the charging port:
    • * It was hard to find a picture where the Amazfit Cor 2's charging cable design can be observed well, I managed to find one: https://cdn.tacticalproducts.cz/img/700px/8596311144295_62779_M.jpg Credit where it's due, it's a smart design -- the connectors are level but the slightly U shaped design of the plastic doesn't allow shorting on a metal surface. I'd recommend considering something like this for a BangleJS 2+ / 3 -- or maybe for the 2 such a charger could be developed? I'm happy to pre-fund on Kickstarter or something, maybe it could be developed in a way that it's compatible with other smartwatches too (I'm assuming this port layout is used elsewhere also).
    • * I'll see if I can make a video of what feels like a less than stable charging port.
    • * I really appreciate the extra short circuit protection. I'm happy to pay extra for that, even if the charger design will get adjusted.
    • * Supporting battery wear information would also be a suggestion for the next BangleJS, if feasible. I'm assuming/hoping that the battery can be replaced, it'd be nice to know when is it time to do it:)
    • I've taken a snap of the bottom surface on day 1 with the surprising scratches, will attach. Maybe it's that thin film you mentioned? I don't see it but input is welcome.
    • Battery: I've turned off most of the automated backlight features, and the data is interesting: the battery level is still jittery when I'm out and about, I see this on the watchface and also in GadgetBridge. I found this thread https://forum.espruino.com/conversations/372705/ but it doesn't answer the question -- why is the battery level jittery? Is it a hardware thing? (I'm a software/product guy, I don't know much about battery hardware.) From Gordon's comment I suspect it's just the way a battery works, and in this case it's fine (actually, very much appreciated to know what the latest reading is), but it's weird, this is my first device that does this (maybe other devices just mask this? lol) -- and in case it's just a hardware thing, it might make sense to mention this in the docs.
      ** Also, in Power Manager I don't understand what's "Force monotonic battery percentage" -- would it simply mask the phenomenon?
    • Not tracking sleep is a huge blow for me, this is one of the main reasons I wear a smartwatch. I recommend calling it out in the docs / not too far from the store page to prevent disappointment. A heavy suggestion for Bangle JS 2+ / 3.
    • Today I went out for a fast paced walk -- Bangle didn't register the steps and the increased heartrate. I don't understand why; the interface seemed generally working but even when I pressed the heart icon in GadgetBridge there was no reading (I waited 30-60sec). Maybe there is still a film on the back? I'd still guess the steps would be registered.
    • Installing GadgetBridge on GrapheneOS: yes, how I understand the thread that I found where a kind user was sharing his/her experience, is that F-Droid uses an older Android API, while this "Neo Store" by default uses the newer API, and on GrapheneOS the right permissions are only available if the BangleJS flavour of GadgetBridge was installed with the new API. Till this point I didn't even know there were different APIs, but here we go:) Reinstalling with Neo Store fixed my issue. It might be worth mentioning this at http://www.espruino.com/Gadgetbridge#how-to-set-up .
    • (Seemingly) DoA: I did try pressing the button for a long long time too, after charging for an hour or so. I was surprised that after many hours of charging it turned on for a simple button press. I wouldn't be surprised if there were people reporting DoA just because they haven't tried charging it overnight.
    • Backlight turning on: I'm on Android. Good suggestion re:BT, I can check this out, thank you. For power saving, which app should I set up to be always running, would it be GadgetBridge? http://www.espruino.com/Gadgetbridge#extra-setup doesn't seem to be clear on this.
    • Bangle GadgetBridge icon: yes, fair play, I was suspecting it's the case:) I've replaced the icon with my launcher. What I recommend for consideration for the next product development step is to reach out to people with some design skills who believe in FLOSS to chip in with a design.
    • Tracking down error toasts: at times I also see a series of toasts claiming that the GB plugin isn't installed on the watch -- which looks odd because I definitely installed it. I don't always have the opportunity to connect to debugging when I see the toasts; is the debugging info also available a good 30min later?

    General feel: huuuuge potential, pretty much perfect physical layout, mature hardware, potential for growth in product development + software, very good docs that need a bit of tuning here and there; currently more like an open platform on people can hack than a product people can reliably use and hack. A similar mind blowing experience when I first saw Android 1.0. I feel the next big step could be stabilising software (incl. the ecosystem!) and adding a bit of structure into product development. What I could imagine for next milestone is either a Bangle JS 2+ or a Bangle JS 3 -- both with stabilising software and getting the product development more structured (building UVP from strengths like privacy and openness etc.etc.etc., standard stuff)., and the difference being same (or slightly improved) hardware or a more significant touch on hardware features.

    P.S. Great work so far folks and I'm very excited about the next phase(s)!


    1 Attachment

    • IMG_20221225_134226_834_1.jpg
  • Regarding sleep tracking, have you seen the Sleep Log app?

    Also in its to do list there's this:

    • Enable receiving data on the Gadgetbridge side + testing. Help appreciated!

    So hopefully it's not too long before gadgetbridge can receive the data.

  • Hi!

    • charging cable design - that's really neat! I guess it still doesn't stop smaller conductive things being pulled in, but it definitely helps with bigger ones! We do sell the charging cradle which I guess has this effect already, but it would be very easy for someone to come up with a 3d printed addition to the current cable that did the same thing and just pushed on...
    • battery usage - I think probably a 'power meter' chip on the battery is a step too far, but it might be possible to keep track of the cycle count on the CPU at some point. There were some questions about this before though, and if you can recharge once a week you'll be looking at a 6-10 year life for the battery, so not bad in terms of modern hardware.
    • surprising scratches - oh yes, that's 100% the protective film - just peel it off and it'll be like new!
    • why is the battery level jittery? The battery level is calculated based on voltage - and the voltage depends on the temperature but also the amount of power being drawn. If GPS is on for instance the voltage drops. The battery level indicator is only meant as a guide - because Bangle.js is open someone added a widget that tells you the battery to the nearest percent, but it doesn't mean that number is accurate :)
    • Force monotonic battery percentage - yes, this would just mask it
    • Sleep tracking - there is an app for that... And we do log movement in the health app - it's possible with a few heuristics that could be used to track sleep as well.
    • Bangle didn't register the steps and the heartrate - I am very surprised about the steps. The step counter has had a lot of work on it and it's usually very good. For the HRM - having the film on there really won't help! The HRM option in Gadgetbridge may not work - best to look at a Heart Rate monitor app on the watch
    • For power saving, which app should I set up to be always running, would it be GadgetBridge? Yes, Gadgetbridge/Bangle.js Gadgetbridge (whichever you installed)
    • is the debugging info also available a good 30min later? Yes, it should be!

    Bangle.js is very much a community effort - I'm the only one working full-time (and realistically that's all that the sales from Bangle.js will fund) and while I do try constantly to improve things, I only have so much time, especially when so much of it is spent on support.

    In the areas where you think Bangle.js is lacking, please have a go and try and get stuck in. Even if it's just a pull request to improve the documentation it'll only take a few minutes and yet will help many others in the future.

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

Bangle.js 2 issues/questions

Posted by Avatar for user152222 @user152222

Actions