Help with firmware update

I was trying to update firmware to 4.7 using the CLI. I’m using Windows. I updated part 1 successfully. While trying to update Part 2, I started getting a flashing red SOS.

I put the device in safe mode and tried to update part 2. I’m getting the following error:
flash device said {“ok”:false,“code”:200,“errors”:[{“id”:"[ ]",“status”:“Update failed - File was too big!”}]}

How shall I address this?

Here you’ll find several different ways to update
https://github.com/spark/firmware/releases/tag/v0.4.7

You can even download the binaries to flash via USB

Thanks @ScruffR. I did download the binaries to my computer. When I try to upload part2, I get a ‘file too big’ error. I think the main issue I have is that the Photon is out of memory. I’m not sure how that is possible. My code is very small. I’m wondering whether the old firmware files are still in memory.

Anyway, I think the next step for me is to clear the memory. Any idea how to do that?

Thanks

There is no need to clear the memory, just flashing it will overwrite it.

Maybe you try the dfu-util way and make sure to actually copy-paste the commands from the link above - the target address for the two system parts are different, so don’t reuse the part1 command.

And also double check that you got the Photon files and not the ones for the P1.

Of make sure you’be got the latest CLI version, and then do particle update :slight_smile:

@ScruffR @Moors7 So I used dfu-util to download the files to the Photon. But I keep getting the same error: white LED, followed by green flashing LED, followed by cyan flashing LED, followed by two red SOS, and then the procedure is repeated with the white LED. Any further ideas?

No further ideas with these symptoms, but some plea to help us to ensure to be on the same page.

Could you please repeat the system update with dfu-util and post the exact commands and the full output on the console when uploading part1 and part2.
And after that also perform particle flash --usb tinker in DFU mode and post the output of this too.


BTW: Did your “file too big” error got away then?

And between the two SOS patterns, do you not see any other red blink? There should be one or more red flashes to indicate the kind of SOS fault.

Here is the output from the cmd line window. Yes, there is a long red flash between the two red SOS signals.

    C:\Users\Siddharth\Documents\dfu-util-0.8-binaries\win32-mingw32>dfu-util -l
    dfu-util 0.8
    
    Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
    Copyright 2010-2014 Tormod Volden and Stefan Schmidt
    This program is Free Software and has ABSOLUTELY NO WARRANTY
    Please report bugs to dfu-util@lists.gnumonks.org
    
    Found DFU: [2b04:d006] ver=0200, devnum=30, cfg=1, intf=0, alt=1, name="@DCT Flash   /0x00000000/01*016Kg", serial="00000000010C"
    Found DFU: [2b04:d006] ver=0200, devnum=30, cfg=1, intf=0, alt=0, name="@Internal Flash   /0x08000000/03*016Ka,01*016Kg,01*064Kg,07*128Kg", serial="00000000010C
    "
    
    C:\Users\Siddharth\Documents\dfu-util-0.8-binaries\win32-mingw32>dfu-util -d 2b04:d006 -a 0 -s 0x8020000 -D system-part1-0.4.7-photon.bin
    dfu-util 0.8
    
    Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
    Copyright 2010-2014 Tormod Volden and Stefan Schmidt
    This program is Free Software and has ABSOLUTELY NO WARRANTY
    Please report bugs to dfu-util@lists.gnumonks.org
    
Invalid DFU suffix signature
    A valid DFU suffix will be required in a future dfu-util release!!!
    Opening DFU capable USB device...
    ID 2b04:d006
    Run-time device DFU version 011a
    Claiming USB DFU Interface...
    Setting Alternate Setting #0 ...
    Determining device status: state = dfuIDLE, status = 0
    dfuIDLE, continuing
    DFU mode device DFU version 011a
    Device returned transfer size 4096
    DfuSe interface name: "Internal Flash   "
    Downloading to address = 0x08020000, size = 249740
    Download        [=========================] 100%       249740 bytes
    Download done.
    File downloaded successfully

C:\Users\Siddharth\Documents\dfu-util-0.8-binaries\win32-mingw32>dfu-util -d 2:04:d006 -a 0 -s 0x8060000:leave -D system-part2-0.4.7-photon.bin
dfu-util 0.8

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2014 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to dfu-util@lists.gnumonks.org

Invalid DFU suffix signature
A valid DFU suffix will be required in a future dfu-util release!!!
Opening DFU capable USB device...
ID 2b04:d006
Run-time device DFU version 011a
Claiming USB DFU Interface...
Setting Alternate Setting #0 ...
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
DFU mode device DFU version 011a
Device returned transfer size 4096
DfuSe interface name: "Internal Flash   "
Downloading to address = 0x08060000, size = 169832
Download        [=========================] 100%       169832 bytes
Download done.
File downloaded successfully

I'm a bit surprised that part2 worked with this typo there, but the result looks OK.


Can you also perform the above mentioned command and post the result?

Don't flash your code, but try out Tinker first.

This worked.
particle flash --usb tinker

C:\Users\Siddharth\Documents\dfu-util-0.8-binaries\win32-mingw32>particle flash --usb tinker
Found DFU device 2b04:d006
checking file  C:\Users\Siddharth\AppData\Roaming\npm\node_modules\particle-cli\binaries\photon_tinker.bin
spawning dfu-util -d 2b04:d006 -a 0 -i 0 -s 0x080A0000:leave -D 

    C:\Users\Siddharth\AppData\Roaming\npm\node_modules\particle-cli\binaries\photon_tinker.bin
    dfu-util 0.8
    
    Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
    Copyright 2010-2014 Tormod Volden and Stefan Schmidt
    This program is Free Software and has ABSOLUTELY NO WARRANTY
    Please report bugs to dfu-util@lists.gnumonks.org
    
    Opening DFU capable USB device...
    ID 2b04:d006
    Run-time device DFU version 011a
    Claiming USB DFU Interface...
    Setting Alternate Setting #0 ...
    Determining device status: state = dfuIDLE, status = 0
    dfuIDLE, continuing
    DFU mode device DFU version 011a
    Device returned transfer size 4096
    DfuSe interface name: "Internal Flash   "
    Downloading to address = 0x080a0000, size = 3952
    
    Download        [                         ]   0%            0 bytes
    Download        [                         ]   0%            0 bytes
    Download        [=========================] 100%         3952 bytes
    Download done.
    File downloaded successfully
    Invalid DFU suffix signature
    A valid DFU suffix will be required in a future dfu-util release!!!
    
    Flash success!

Should I run the dfu-util again? Also, what is tinker? A brief explanation of what happened would be helpful.

Thanks so much for your help!

No, you don’t need to run dfu-util again - now you should be set up for business as usual :wink:

Tinker is the default application firmware that gets pre-flashed with all new Particle devices.
This is the firmware that is meant to interact with the Particle mobile apps to just use the device out the box and do some “tinkering” like switching the onboard LED on and off, set pins HIGH/LOW, read the pin states and so on.

Since it’s the default firmware, it’s available as prebuilt binary and has its own command in Particle CLI, and hence is a good way to put your device back into a predefined good state.

Excellent. Thanks again for your help!

1 Like