Electron Updates via usb sometimes possible sometimes not

I recently noticed a weird behavior of my testing electron. After doing a manual firmware update via usb (orange flashing light of electron) my electron didn’t behave as it should be even the update process states a Flash Success. Then I tried to install tinker with the following log but also than my old user firmware is running. Any ideas?
Tried with 0.5.3 and 0.6.0 (for me currently 0.5.3 is better as my electrons in the field are on 0.5.3). Somehow I got it to work but after pressing the reset button the old firmware was there again. I also searched for factory reset but as I understood this is not possible anymore.
Any help appreciated!

$ particle flash --usb tinker
Found DFU device 2b04:d00a
spawning dfu-util -d 2b04:d00a -a 0 -i 0 -s 0x08080000:leave -D /usr/local/lib/node_modules/particle-cli/binaries/electron_tinker.bin
dfu-util 0.9

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2016 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

dfu-util: Invalid DFU suffix signature
dfu-util: A valid DFU suffix will be required in a future dfu-util release!!!
Deducing device DFU version from functional descriptor length
Opening DFU capable USB device...
ID 2b04:d00a
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 = 0x08080000, size = 5776
Download	[=========================] 100%         5776 bytes
Download done.
File downloaded successfully

Flash success!

Are you using the latest CLI (currently 1.19.4)?

Yep:

$ particle --version
1.19.4

Maybe you download the three 0.5.3 system binaries flash them via CLI in order (or inverse order if you already have a higher version installed) and then try again --usb tinker

I tried (btw you mean 2 parts for 0.5.3, right?). The result is one more time very surprising. The Output:

$ dfu-util -d 2b04:d006 -a 0 -s 0x8020000 -D system-part1-0.5.3-electron.bin
dfu-util 0.9

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2016 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

dfu-util: Invalid DFU suffix signature
dfu-util: A valid DFU suffix will be required in a future dfu-util release!!!
Deducing device DFU version from functional descriptor length
Opening DFU capable USB device...
ID 2b04:d00a
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 = 122916
Download	[=========================] 100%       122916 bytes
Download done.
File downloaded successfully

$ dfu-util -d 2b04:d006 -a 0 -s 0x8060000:leave -D system-part2-0.5.3-electron.bin
dfu-util 0.9

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2016 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

dfu-util: Invalid DFU suffix signature
dfu-util: A valid DFU suffix will be required in a future dfu-util release!!!
Deducing device DFU version from functional descriptor length
Opening DFU capable USB device...
ID 2b04:d00a
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 = 122436
Download	[=========================] 100%       122436 bytes
Download done.
File downloaded successfully

Now the interesting thing is I had not to install tinker again, it booted directly the Tinker App. Great, than I wanted to install my own Firmware with particle flash --usb firmware.bin and of course it didn’t work. I made a 2nd firmware update to 0.5.3 but it still booted with tinker. So I am still confused and not sure what is wrong here.

You’re right - 0.5.3 only prepared for the 3rd part that came with 0.6.0 :blush:

Could you post the output of

particle serial inspect
// and
particle binary inspect firmware.bin
$ particle serial inspect

! serial: No serial port identified

The problem here is that I can not get into Listening Mode with that device at the moment. When I just press the Mode Button for 3 seconds it ended up in DFU Mode (orange blinking) and for my understanding I need Listening Mode to get this command working, right? Or is Listening Mode not available with tinker? Thats very weird cause I know normally pressing Mode + shortly Reset ends up in DFU Mode. Yesterday with my old firmware it worked to getting manually in Listening Mode (3s Mode Button) but not with tinker at the moment.

$ particle binary inspect firmware.bin
firmware.bin
 CRC is ok (2a7d7d7a)
 Compiled for electron
 This is an application module number 1 at version 4
 It depends on a system module number 2 at version 21

Short Information on top:
What I also found out is that the device is of course in console.particle.io but then yesterday I downloaded the particle app to test out tinker (never tried before) and there this named device does not appear even when I pull to refresh. Than it was shortly in the list after reopening the App but with one more pull to refresh it was gone again… so on the Electron the tinker shows with the led is permanent on (with white, maybe blue and red light)?

You can force the device into listening mode by removing the SIM.

Mh that does not work for me. I tried to remove SIM while electron has no power --> doesn’t go to listening mode. Tried to press mode button for longer time ends up in DFU Mode as well.
Than I inserted and removed the SIM with power --> doesn’t force electron to enter listening mode.

So till now no chance to perform the command $ particle serial inspect with success.

@ScruffR should I throw away my Electron now as it is not possible to flash it?

If there is a real issue with the device, you can contact official support here: https://docs.particle.io/support/support-and-fulfillment/menu-base/

They will see if an exchange can be performed.

Also, you should not hit reset after holding MODE button as that will end up in DFU mode.

You should power up, press on only the MODE button.

Yes I do as stated below:

So I will contact official support as you mentioned, thanks. Because it is neither possible to go into listening mode nor flash a new firmware successfully with DFU Mode.

@kennethlimcp I bought another 50 electrons and I noticed that it is the same behaviour for one more electron. Is this a know Issue that can happen?
I upgraded from 0.5.3 to 0.6.1 and vice versa but it seems that it never takes my own user firmware. how could that be? to be honest that is not very trustful to use particle.
Are there any other hints how that could be fixed? To be honest I don’t want to wait to get a replacement, rather I would fix it as soon as possible by my own if there are other possibilites.

Do you have CLI installed?

Yes, of course

Can you place it in listening mode and run particle serial inspect

$ particle serial inspect
Platform: 10 - Electron
Modules
  Bootloader module #0 - version 6, main location, 16384 bytes max size
Integrity: PASS
Address Range: PASS
Platform: PASS
Dependencies: PASS
  System module #1 - version 21, main location, 131072 bytes max size
Integrity: PASS
Address Range: PASS
Platform: PASS
Dependencies: PASS
  System module #2 - version 21, main location, 131072 bytes max size
Integrity: PASS
Address Range: PASS
Platform: PASS
Dependencies: PASS
  System module #1 - version 21
  empty - main location, 131072 bytes max size
  User module #1 - version 4, main location, 131072 bytes max size
UUID: C4BB06BC07F23C10730E38F8252B33ACB83C3DDE1DADFFE100841641808BBC6C
Integrity: PASS
Address Range: PASS
Platform: PASS
Dependencies: PASS
  System module #2 - version 21
  empty - factory location, 131072 bytes max size

This Electron doesn’t seem to be anywhere near 0.6.1
The (obscure) version number of 0.6.1 would be 105 and yours is at 21.

particel identify should give you the more readable version number

Yes it is 0.5.3 as I dont want to test and investigate with 0.6.1 because under 0.5.3 my application was very stable after some effort.

@mojo90, you need to be more specific in order to find the issue.

From the inspection above, is it from the electron that is not running user firmware that you flashed?

What happens if you flash tinker using particle flash --usb tinker in DFU Mode?