BANKO Invalid and cannot upload any (new) firmwares due to CRC mismatch #7337
Replies: 1 comment
-
Posted at 2025-02-01 by franz_banglejs Hi, If I where you I'd try uploading the current latest stable firmware version. (Which is this one at the moment.) Edit: Sorry, I should probably have read your entire post before posting something that's of no help. Posted at 2025-02-01 by jeroenpeters1986 no problem @franz_banglejs, thanks for taking the time to checkout the question anyway :-) Posted at 2025-02-01 by jeroenpeters1986 In the mean time I have also tried to use https://thegecko.github.io/web-bluetooth-dfu/ to upload the new firmware, as well as a few older versions. After a few seconds the Bangle's screen states CONNECT and then it stops transmitting, while it hasn't even uploaded 10% of the firmware. Also I noticed now that when I used NRF Connect app, when I click Start (to transmit), the Bangle reboots.. and it is showing the screen from my orginal post again. The app nRF Connect errors with "3072 bytes were sent while 0 bytes were reported as received". Posted at 2025-02-01 by @fanoush The CRC mismatch should be harmless and should be unrelated to BLE DFU issues. It finds bad/incomplete update file in storage and skips it because CRC does not match (as it is incomplete). The message would go away if you would remove the bad file but you can't now and it doesn't matter. If you can get the watch to DFU mode and see DFUTarg device in nrfConnect then I hope nothing is lost and you should just retry possibly with different phones and also make sure you have the right zip file for the device. Can you possibly try Android phone too? BANK0 invalid is strange to get when updating from file which actually never happened due to bad CRC. Most probably you got that one later when BLE DFU via nrfConnect failed in the middle. BANK0 invalid means there is no main Espruino firware there so you can't run recovery which is written in javascript and implemented in main firmware. You only have bootloader now that can only do update over BLE in this state. Posted at 2025-02-01 by jeroenpeters1986 Hi @fanoush thank you for answering me on such short notice. I am glad to have your explanation so I have a bit of a better understanding. I don't have an Android phone available right now, but I do however have a Linux device so I could maybe connect the WebIDE. I don't know how to do this, since Bluetooth isn't available now. Would this work with the charger/USB-cable? I could not really find this in detail. Also, if you might know any procedures that get me to lose things but still could reset it to upload new firmwire, no worries. I have a list of my installed software and there isn't much data on it that I would like to preserve, maybe a GPS route or so. I do not care if I lose data compared to restoring the watch :-D Thank you so much for taking the taking to view my thread and answering me! Posted at 2025-02-01 by jeroenpeters1986 Also good to know, I also tried updating with the WebIDE (with settings -> Flasher). I did not know this was possible, @gfwilliams keeps amazing me with this active development! Anyway, this also results in the ERROR on screen and a reboot.
The line that interest me is "index.js:96721 notify: Error: The state of the DFU process does not allow this operation", somehow it's clear for the IDE that there is something wrong. Maybe this will help. Posted at 2025-02-03 by @fanoush Sorry, can't help with that but I think if you got someone with Android phone and install nrfConnect then it could work better from there. Not sure what settings you have on iPhone in nrfConnect but if it fails in the middle of DFU upload then it may help to fiddle with DFU options -> Packet receipt notification procedure - either turn it off if it is on or on if it was off and increase or decrease number of packets. Here I found similar issue describing it for iPhone adafruit/Adafruit_nRF52_Bootloader#293 (comment) Posted at 2025-02-03 by jeroenpeters1986 Hi @fanoush I will def try to get someone to lend the Android phone and also if I can tweak the nrfConnect setting.
So I think the incorrect file you pointed out may still be there and that could be the problem.. I don't know for sure. When I get someone with Android I'll let you know. I will now have to recharge the watch as it can only reboot itself untill the battery is drained Posted at 2025-02-03 by @fanoush
A photo or short video of how it ends and reboots would be interesting to see, it is not clear what exactly fails and what is the result. Do you still see the BANK0 INVALID message? Posted at 2025-02-03 by @gfwilliams Hi - sorry you're having troubles. It does look like the firmware update went wrong (we've updated the bootloader now but I guess you might be using the old one). The Please can you try the instructions for recovery at: https://www.espruino.com/Firmware+Update#android-ios-app You should be able to install this app on your iPhone and flash direct using that: https://apps.apple.com/gb/app/nrf-device-firmware-update/id1624454660 Just make sure that you're flashing the It's possible that going through Web Bluetooth for the IDE, https://thegecko.github.io/web-bluetooth-dfu, etc was making the upload unreliable somehow, so having a native app may really help Posted at 2025-02-03 by jeroenpeters1986 Thank you both for answering. @fanoush Yes I will record a video with some examples and try to get pictures of the screens. @gfwilliams Yes, it's using the v2.12 bootloader (DFV 2V12). The docs said it might be okay to have an old one. Do you mean the recovery from https://www.espruino.com/Bangle.js2#recovery-menu btw? I tried this, but that does not work (on my watch atm). Using the DFU Firmware Updater app you linked doesn't work either. When I press Upload, the watch shows I will create a video, but I have to wait until I can get a second phone to film the process, you can see what happens on my phone and the watch at the same time. Posted at 2025-02-03 by jeroenpeters1986 I had to trim it a bit but I hope it's clear to see what the watch does when i try to upgrade it Attachments: Posted at 2025-02-03 by @fanoush It is clear that you are doing it in the right way and watch reboots when it should not. Maybe this is 'normal' behaviour when the dfu app disconnects (??), maybe @gfwilliams knows? So I am not sure if watch reboots first while the phone is still trying to update it or the phone gets that red error and disconnects and then the watch reboots because DFU is finished. Random ideas
Posted at 2025-02-03 by jeroenpeters1986 @fanoush the watch reboots when I hit update. If I wait, the watch waits (until the DFU timeout). Posted at 2025-02-03 by @fanoush
yes but when you hit update the watch prints CONNECTED and iphone gets error about sending some number of bytes and getting 0 and watch reboots. It is not clear to me if the iphone disconnects due to that error and then watch reboots or if watch reboots first and then iphone gets the error with 0 bytes because of the reboot. first means iphone gets confused and disconnects from the watch and then watch has nothing to do and reboots to possibly try new update (which makes sense), second means that the watch reboots in the middle of update when it should not
so can/did you try turning it off completely by the toggle above the number?
oh, OK, too bad Posted at 2025-02-04 by @gfwilliams Thanks for the video! And good to know it's the DFU 2v12 bootloader I'd actually forgotten about this, but what happened was after we released Bangle.js, Apple updated iOS in such a way that it then refuses to give the Bangle.js DFU the Bluetooth connection speed it requests, and then the DFU thinks something is wrong and disconnects almost immediately, and I think that's what you're seeing here. I updated DFU so that it doesn't do this, but I'm pretty sure DFU 2v12 has the problem. Normally it wouldn't be an issue because you'd upload with the app loader and you wouldn't need to use the low level bootloader but we've been unlucky here. So I'm afraid that was bad advice from me to use the iOS app - really I think the best way forward is:
edit: I do remember people said they had success just trying DFU over and over again using the iPhone, but it only manages to update a small amount at a time before the disconnects, so doing that will take a very long time Posted at 2025-02-04 by jeroenpeters1986 Thanks @gfwilliams, I also tried it using the flasher mode on the WebIDE. Sometimes the bar loads all the way until the end, but it still results in an error. I have a neighbour with an Android Phone. I think that might be my best option. I will ask him if I can come by this week to check this. When I have tried this I will let you know in this topic. Posted at 2025-02-04 by ThomasVikström
Yeah, I remember I had this problem as well, and with 11 Bangles it was a pain in the... but it worked out in the end in my case. Posted at 2025-02-04 by jeroenpeters1986 Wow, thanks all for your time and suggestions! It turns out patience is a virtue. I tried many many times by uploading the 2v25 over and over again using https://thegecko.github.io/web-bluetooth-dfu/ and after another automatic reboot it suddenly works! It's even got my installed apps.. It's after midnight here, so I will sort out how to update my DFU 2v12 bootloader to newer version tomorrow. I am very glad it isn't bricked :-) Thanks again @fanoush @gfwilliams and @ThomasVikström! Posted at 2025-02-05 by @gfwilliams Phew, glad it's sorted! Sorry this ended up being such a pain! Hopefully the new bootloader will ensure this kind of thing doesn't happen again. Posted at 2025-02-05 by Ivor I hope the cat appreciates how much trouble they have been. Posted at 2025-02-05 by jeroenpeters1986 I just updated the bootloader too :-) And for the cat.. she is missing a few hairs but is her purry self again @Ivor haha :-D |
Beta Was this translation helpful? Give feedback.
-
Posted at 2025-02-01 by jeroenpeters1986
Hi,
today I wanted to update my firmware to the v2.25 using the App Loader, since this was stated to be the recommended way. Prior to this (my last update was v2.20) I updated using the nrf connect app, which worked fine.
Then (and I know this sounds ridiculous) my wife yelled that there was an emergency with the cat. I got to her and the cat (which is now fine), but I got back about 10 minutes later. My screen was locked and when I unlocked, progress 'hang' on about 80%. I watched it for minutes going by but there was no progress anymore. Also the watch hang at this percentage and didn't see any progress.
Since nothing was happening I had rebooted the watch by holding the button, but then I received a BANKO invalid. I am afraid that when the iPhone locked, it shut down the update process..
I also did try update new firmware, also the v2.24 using the DFU Update app also, and NRF Connect app, but the watch keeps showing a CRC Mismatch, Not Flashing message.. And the apps fail.
The watch keeps rebooting itself. I also cannot get into the recovery menu. The tips I got from the https://forum.espruino.com/conversations/401636/ thread, but my issue seems to be different.
Rebooting it manually also doesnt seem to work. I can get into the DfuTarg mode, but updating always fail :-(
Is there anything else I can try, or am I bricked now?
Attachments:
Beta Was this translation helpful? Give feedback.
All reactions