• @jerryn thanks! That is really useful.

    So... there was an issue in the 2v10 firmware where sometimes the flash memory wouldn't accept a write request (writes happen in blocks of 256 bytes), and that looks exactly like what happened here because exactly 3x256 bytes are unset. However it looks like you're on firmware 2v11 already judging by what you posted above?

    In 2v11 I was pretty sure I fixed that - it checks and rewrites the data up to three times to try and avoid any issues.

    Please could you try the following?

    • Connect with the Web IDE, and run reset(1)
    • Now run require("Storage").eraseAll(); - this will remove everything from the flash memory
    • Now copy and paste the following into the left of the IDE:

      var f = require("Flash"), l = 8*1024*1024;
      var d = new Uint8Array(256);
      for (var i=0;i<l;i+=256) {
      f.write(d, 0x60000000+i);
      var s = E.sum(f.read(256,0x60000000+i));
      if (s) console.log("Data not cleared at "+i+" = "+s);
      if ((i&65535) == 0) console.log("Check "+i);
      }
      Bangle.factoryReset();
      

    It'll take a few minutes to complete (it needs to count all the way to 8 million) but what it's doing is writing zeros to all of flash memory and seeing if it all completes ok. Please can you check if it says anything other than Check ###I just want to rule out there being a problem writing to a particular area of memory first.

    But it seems this is not specifically related to iOS integration. It's just that iOS integration writes the list of messages into flash memory, and that causes a bunch of writes. If those writes fail then there can end up being problems.

About

Avatar for Gordon @Gordon started