-
• #2
What happens if you go to the IDE at https://www.espruino.com/ide/# and connect (top left)
Then on the left-hand side, paste in:
require("Storage").eraseAll()
- could take a whilerequire("Storage").write("hello","World")
require("Storage").read("hello")
- should write="World"
on the console
The
FW addr 0x00000000 fail
message is an internal error that comes up when the Bangle is unable to write anything into the external flash memory.Was the Bangle working when you put it away? For this kind of thing to happen I'd assume there could be some kind of damage to the internals (like water damage?)
You could always try totally flattening the battery (to reset everything) then charging it up fully, turning it on and trying again
-
• #3
I tried the IDE commands...
>require("Storage").eraseAll() =undefined >require("Storage").write("hello","World") FW addr 0x00000000 fail Status 255 FW addr 0x00000020 fail Status 255 Uncaught InternalError: Timeout on jshFlashWrite at line 1 col 41 require("Storage").write("hello","World") ^ >require("Storage").read("hello") =undefined >
It was working when it when away, I'll try totally flattening the battery.
Thanks for the help.
-
• #4
Could it be that you once flashed firmware for other board like PUCKJS or MDBT42Q and then reflashed it with BANGLEJS again? pin 21 which is normally a reset pin is used as flash CS pin https://github.com/espruino/Espruino/blob/master/boards/BANGLEJS.py#L142 and most other builds would reconfigure it back as reset pin which would make flash CS pin not working. You can verify by running
peek32(0x10001200)
If it prints21
then it is this issue and can be fixed. -
• #5
Thanks @fanoush! That's well worth testing @user148332
-
• #7
however flashing it with PUCKJS or MDBET42Q didn't help.
No, of course not, flashing with PUCKJS or MDBT42Q can only break it. But it is good the hardware is probably OK if you see 21.
It can be fixed by copy pasting following code to left side of WebIDE (use ctrl+v to paste)setTimeout(function() { NRF.restart(function(){ poke32(0x4001e504,2);while(!peek32(0x4001e400)); // enable flash erase poke32(0x4001e514,1);while(!peek32(0x4001e400)); // erase whole uicr poke32(0x4001e504,1);while(!peek32(0x4001e400)); // enable flash writing poke32(0x10001014,0x7A000);while(!peek32(0x4001e400)); // set bootloader poke32(0x10001018,0x7E000);while(!peek32(0x4001e400)); // set mbr settings poke32(0x1000120c,0xfffffffe);while(!peek32(0x4001e400)); // NFC pins as GPIO poke32(0x4001e504, 0);while(!peek32(0x4001e400)); // disable flash writing }) }, 2000);NRF.disconnect();
then wait few seconds, reconnect and try the
peek32(0x10001200).toString(16)
again, if it prints all FFs then it is fixed, reboot the watch (via buttons orE.reboot()
) and hopefully flash storage will start working again. -
• #8
That worked, thanks for the help.
I have an old BangleJS 1 that I am trying to use again. I installed the latest firmware 2v15 and tried to installed the default apps.
It is happy having the time set, refreshing the installed app list (none) but it seem to be timing out installing the first default app (bootloader).
From the browser console...
... for a while then ...
I have also tried ti with 2v10 and 2v14 (same problem installing the apps).
Any ideas?