[SELF-RESOLVED] Can't factory reset/hard reset Pixl.js

Posted on
  • The instructions say:

    Hard Reset To clear out all saved code, reset Pixl.js while keeping
    BTN1 held for around 10 seconds (even while Pixl.js says SELF TEST
    Release BTN1).

    Once Pixl.js displays Removed saved code from Flash you can release it
    - this will clear out any previously saved code and bonding data that could have caused problems.

    Note: If you release BTN1 when instructed by the text Release BTN1
    then a self-test will be performed. Saved code will not be loaded from
    flash, but will not be erased from flash either - a subsequent reset
    will start Espruino up loading the saved code as normal.

    However, when I repower the device with BTN1 held down, I see the board go into bootloader mode, as it tells me that I should RELEASE BTN1 FOR DFU. I continue to hold down BTN1 for 10 seconds, but once the progress bar gets to the end, it just prints out READY TO UPDATE and not SELF TEST. Please help because I've basically bricked it (can't access Bluetooth btw)!

    Before the problem, I overwrote the splash screen to be


    I also ran


    at startup, and wrote code to the device using the 'Direct to Flash (execute code at boot, even after 'reset()') - USE WITH CARE' option. The IDE warns me that it's hard to recover the device when code crashes, but I originally ignored it.

    Many thanks,

  • Also, firmware version v2.08 if that helps!

  • Seems to always advertise in my Bluetooth unpaired device list as 'DfuTarg'... Even when I've powered off both my phone, laptop and Pixl.js and turned them all on without holding down BTN1 to go into the bootloader

    Though on my laptop (which is a Chromebook) shows 'No compatible devices found' when the Bluetooth pairing dialog shows up in the IDE

    I can't actually connect to it though; using an app on my phone to flash a new firmware copy never works since it hangs when trying to connect Nevermind, it seems to be copying now! Must be a one-in-a-million chance...

    If anybody knows how to fix this, please let me know.

  • Update... I managed to reflash a new copy of v2.08 back onto my Pixl.js through the DFU mode of the nRF Toolbox app, and I've managed to get going again! I eventually got to the point where the progress bar actually moves on the app and shows a status percentage, instead of it just saying 'Uploading...'.

    Upon auto-resetting after the update, the board doesn't execute my reset-run code, and so I can now fix my dodgy code once again 😅 The terminal then shows -> Bluetooth to tell me that my endeavours were successful.

    Note to self: Never set the IDE to the 'Direct to Flash (execute code at boot, even after 'reset()') - USE WITH CARE' mode! I find it weird that there's this option, when the similarly-named perfectly normal 'Direct to flash (execute code at boot)' option works just like that one in that the code still runs after reset. Less dangerous though, from what I can see.

    Also top tip, just keep trying to do a firmware update via the DFU, because you could get lucky and the transmission might not actually fail for once.

    Still very confused as to why it didn't want to go into hard reset mode... Probably is a bug or something.

    Thanks to everybody on this thread who helped! /me pats self on the back

  • Great - glad you got it sorted!

    What type of IDE were you using? Just one one on https://www.espruino.com/ide/?

    A month or so ago I actually removed the execute code at boot, even after 'reset()' from the drop-down upload options menu for exactly this reason (although it's still there if you go to settings) - but the Native IDE hasn't been updated for a while and would still have it.

    What you power your Pixl.js on, what does it say right at the start? I just tried on one here (that says DFU 2V07) and the BTN1 thing works for me.

    It seems another option with 2v08 is:

    • Boot up holding BTN4
    • As soon as Pixl.js says SELF TEST press and hold BTN1

    And it should then clear out saved code for you as well :)

  • Hi Gordon,

    I was using the Chrome Extension, as well as the build from my PR on GitHub. I don't know how long ago the Chrome Extension was updated, but I changed the code upload mode through the settings dialog.

    I think the issue was to do with the board running out of flash storage? I had a lot of code on the board at the time, and I only had around 2-3 KB left. I've since made the code much more efficient and ran a require("Storage").eraseAll();! I discovered the board went into this state when it runs out of RAM or flash (can't tell exactly) whilst uploading a big (> 8 KB) file. I believe that the SELF TEST mode now works correctly now that I've freed the memory!


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

[SELF-RESOLVED] Can't factory reset/hard reset Pixl.js

Posted by Avatar for James-Livesey @James-Livesey