[Solved] Trouble performing BLE DFU update on Bangle.js

Posted on
of 2
/ 2
  • Dont't tell anyone, but if you ... (nevermind :)

    Well, yes. First I think it is not very nice to ask for help and support here in 'Official Espruino Boards' forum if this is just hacked watch you got from elsewhere.

    Also making it too easy for people to just save money without any real effort (at the expense of others - Gordon, kickstarter supporters) is not great either. So I would prefer to not link too much details here on the forum. I am not sure myself where is the line. For me it would be pointless to send Gordon donation and then take money from him by supporting 'freeloaders' who would otherwise got stuff from his shop. OTOH anyone can get the watch from wherever they want and if they contribute to the community then (like making apps for Bangle) it is good for us too. So I don't know how to balance this in best way.

  • Thank you so much Gordon for helping me. The reason DFU mode was failing was exactly the one you anticipated.

    I was using arm-none-eabi-gcc version 8-2019-q3-update to compile the firmware and indeed at the end of bootloader...hex was this line :08E00C0011C30700C1C10700A8. After switching to the same compiler version as yours I got this line :08DFF40021C30700CDC10700A5 instead.

    I tested an was able to perform BLE DFU upgrade from version 2v04.264 to 2V04.271.

    Thank you again for your reactivity and your willingness to help.

    Finding a way to get a few more bytes out of the bootloader is definitely out of my reach. But I wish to contribute by filing bug reports and sharing small apps with the community.

  • Thr 2019.12.05

    re: post #26
    'then take money from him by supporting 'freeloaders' who would otherwise got stuff from his shop'

    @fanoush totally agree and have been thinking along the same lines for all the official supported boards. It is a tough call to determine that balance and has also been seen by numerous posts of frustration from Gordon. Thought of splitting the forum into two separate themes where Gordon only responds with support for the official line. But then some readers may miss when some good idea would pop up on the other.

    For me, it is a bit frustrating attempting to support code snippet error requests, only to find the requestor doesn't have an official board, when the claim was there all along. One of the reasons I ferret out those suspect by requiring procees.env before I expend too much of my time gratis.

    'I would prefer to not link too much details here'

    Yes. That should be left to the heavy hitters such as @JumJum, @Gordon, @MaBe, @fanoush, etal (unintentional ommisions to make a point - done from memory as not fully aware of those in the trenches that should receive more acknowledgement)

    IMO so as the Kickstarter was tremendous proving this is the next coolest thing as MaBe so creatively stated the first week of November: I promise, you gone love it! (sic American ver: You're gonna love it!) and that first run will require ~1000 users, estimating ~200 will desire near immediate forum participation, why not have a forum verification addition, such as a Bangle icon or/and the text 'Bangle' beneath where 'Patreon' shows? This would not only provide we contributors instant feedback that the poster does indeed have an official Bangle, but would also provide Google link juice, to covertly get the word out. As each Bangle has to be mailed to those that pledged, the email/forum profile would be exposed at that time. A list could be created for those of us that support/respond to posts, or the icons added while in transit. This would encourage purchasing an official device in order to get (near) immediate response. Those that want to freely tinker could have their own separate Bangle Hackers thread, but no contributions from Gordon there. Everyone should be happy, right?

  • could you do a PR for the modified check in the Makefile?

    done here https://github.com/espruino/Espruino/pul­l/1714 currently it passes but if you try to change it into ORIGIN(FLASH) + LENGTH(FLASH) - 0x100 then it fails, somewhere around -0x50 it starts to pass now, so hopefully it works as needed

  • Thanks!

    I actually wrote something and forgot to post it yesterday, but this is how I feel on it:

    I think the vast majority of folks trying to install Espruino on F18s are just excited and want to get started sooner, and that's great!

    However I do need to focus my time on getting Bangle.js out to Kickstarter backers and those that preordered, so I'm not going to be able to provide masses of support.

    Doing full wireless firmware updates is a bit of an elongated process which requires a bootloader to be dumped off the device via some very hacky means and then binary patched. You're looking at doing 4 different firmware uploads. If any of that goes wrong (which it may) you'll brick your watch and have to open it and use an SWD programmer. I'd be pretty certain that DT No.1 won't like having bits of their watches firmware posted online and I want to stay on their good side so I'd ask that nobody else does either in case they refuse to let me buy their watches.

    If you want to compile your own firmware from source, open your watch, and flash via SWD as @sebi has done then that's awesome! Although if you're thinking of doing it, bear in mind that the cost of an nRF52DK and F18 watch may be more than the cost of just buying a Bangle.js so you'll be doing it for fun rather than to get a bargain :)

    Please don't try and hide that it's a DIY Bangle.js if something is wrong though as it may actually make it more likely I can help to solve your problems, as has happened here.

    Also, if you've opened up your watch and flashed firmware via SWD you're in a great position to do some development work on Bangle.js firmware, so it'd be a massive help if you felt like wading in and suggesting some tweaks/changes :)

  • Everyone should be happy, right

    Yes :-)

    It is a difficult topic and it is easy to overdo it and not be aware of the barriers erected. There is a proverb in czech. Example of it can be seen in this post because when you check the top countries it is really not 'all over the world' at all, it is simply a list of top richest countries of the world, and you may really miss to see this pattern if you live in one of them. The kickstarter (or prices in the shop) makes perfect sense as a funding for UK based person who can then give full time to the project, and it shows everywhere in the attention to detail, cool features like emulator done in week, tutorials - and it makes all the difference in the world for Espruino. I can hack fitness trackers for two years in the evenings after kids go to sleep but still don't have something more polished than ugly basic watch app.

    But on the other hand you don't want to be closed club. One must really appreciate the $35 raspbery pi (or $5 pi zero) because its reach to kids, hackers, students at that price level is really 'all over the world' - something first world person may not fully appreciate.

    Anyway, Espruino is currently just about right in this, I've seen couple of other projects where it went too far without people noticing. To stay on topic one such project is DroidScript for me. I first found it thanks to Espruino, checked the website, installed it and it looked nice until I noticed the limitations (you can't even open some examples because there is limit on number of opened files, BLE plugin is free in google play but once you install it you notice it doesn't work until you pay (I see they updated its description in store now so it is clear). And then you notice the price is quite high monthly payment, and the you find discussion threads where even the users in the forum frown upon people who point out that they cannot afford it (exactly in the sense of the proverb linked above). One can then just politely walk away an ignore such (very good) project, which I did. Well after wasting some time with it because you don't find such details on their .org based site which initially looks open and friendly.

    So please relax, the balance is OK here, just wanted to explain that by my comment above I really do not advocate moving into direction where DroidScript seems to be.

    And I am in fact more happy when kid from India asks me for help with hacking his $5 fitness tracker that even he can afford to possibly destroy, then answer somebody else here who can buy official boards.

    So yes, it is hard to find the balance :-)

  • The main reason I posted this thread on the forum was that I thought my issue could concern other people with native Bangle.js as well.
    As a newbie, I couldn't imagine that a different version for the compiler could be responsible for such an issue.
    Money wise, I do support Gordon by owning a Pico, a Puck.js and his book. I also backed is Bangle.js Kickstarter campaign and did a donation recently.
    Again I thank Gordon for his willingness to help me despite being occupied to bring the Bangle.js out there and my DIY Bangle.js not benefiting him directly.

  • Sat 2019.12.07

    Thank you @sebi for your support owning the collection of official Espruino boards. Anxious for my Kickstarter pledge too.

    re #31: @fanoush 'asks me for help with hacking his $5 fitness tracker'

    As it appears Bangle.js support may now be provided by you, that would be your choice. I may have seemed a bit on edge regarding gratis support, but after re-reading Gordon's comment, re-educated me on the missing connectivity link. Hadn't immediately realized this and may not even be a support issue to have to consider; . . . as the COST for the devloper kit, p/s and cables plus separate shipping, along with the ~five week wait from an unvetted (and possible cheap knock-off) vendor, down time to additionally learn the DK environment, does place the starting point and (it just works) RISK beyond, just aquiring an official supported Bangle.js . Definitely not worth it for me anyway as I'll be excited to get up and running quickly after the Kickstarter excitement. Should I be able to complete my other projects this winter, I may (more likely next winter) pick up the developer kit to get a bit more learning under my belt.

    From post#30

    'bear in mind that the cost of an nRF52DK and F18 watch may be more than the cost of just buying a Bangle.js so you'll be doing it for fun rather than to get a bargain :)'  Gordon

    So there is no 'bargain' for those considering that path.

  • Hello there, and sorry to re-open the discussion.

    When I set my bangle in DFU mode (hold BTN1 + BTN2 until it reboot, and release before the === line is complete), I can see "DfuTarg" bluetooth device in my bluetooth discovery app (laptop and mobile).

    When I select it, the watch displays "Connected", and a couple of seconds after, says "Disconnected".
    On the laptop/mobile side, the bluetooth app says it could pairing was rejected.

    I am pretty annoyed, because my previous attempt to upload a new Firmware failed before completion, and the watch can not boot any more...

  • When I select it, the watch displays "Connected", and a couple of seconds after, says "Disconnected".
    On the laptop/mobile side, the bluetooth app says it could pairing was rejected.

    What does it mean 'when I select it'?
    You should not use laptop app/browser and should not 'pair it' in this mode.
    See https://www.espruino.com/Bangle.js#firmw­are-updates for the procedure.
    There is nrfConnect or nrfToolbox app for Android to do this DFU update.

  • Sorry if the wording wasn't right.
    Using the nRF toolbox, I'm following the procedure, and I'm blocked here:

    Tap Select Device and choose the device called DfuTarg

    I don't see DfuTarg device in the list my phone displays.

    That is why I though I needed to pair.

  • Oh, OK, you previously said

    I can see "DfuTarg" bluetooth device in my bluetooth discovery app (laptop and mobile)."

    So you see it on laptop but not on phone? So it may also be something with your phone or nrfToolbox, not just the watch. So maybe just try again, toggle bluetooth, put the watch near the phone, restart phone, go to more radio quiet place or maybe try nrfconnect instead, but that one is maybe harder to use. If you see DfuTarg in the list click connect and there should be DFU icon in top right corner.

  • With some screenshots it will help.

    Here is the list of bluetooth devices I can reach on my Android phone: DfuTarg is here.
    On Android

    Here the list I have in nfrToolbox, and DfuTarg isnt't available
    On NFRToolbox

    I've rebooted the phone in case, but it didn't changed.

    2 Attachments

    • android.jpg
    • nfrtoolbox.jpg
  • What happens if you tap "SCAN"? nRF connect worked just fine with espruinos for me.

  • scan does not find it either.

  • Geez...
    It finally worked. If you don't have your location enabled (on your phone), scan doesn't return anything...

    I figured out as it was written in nfConnect tutorial.
    I was really worried: I thought I bricked the watch!!

    Thanks everyone for your support.

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

[Solved] Trouble performing BLE DFU update on Bangle.js

Posted by Avatar for sebi @sebi