[Solved] Can't update Electron from 0.4.8 to 0.5.1

Help. I am at my wits end. I have an Electron running 0.4.8 that I bought to go with the RGBMatrixPanel I got at Maker Faire. The Electron is running version 0.4.8 of the firmware. The current RGBPixelClock example in the IDE requires 0.5.1. I have updated my particle CLI to version 1.14.1 and installed the dfu-util version 0.9. I have done the firmware update every way possible, starting with the easy “particle update” all the way to specific dfu-util commands (ie dfu-util -d 2b04:d00a -a 0 -s 0x8020000 -D system-part1-0.5.1-electron.bin). In ALL cases everything goes great. No errors. All messages positive. Of course in NO case do the tools actually show you what is installed when the device reboots.

But now EVERY time I go to build.particle.io it tells me my device is running 0.4.8. I am stuck. Is there any other tool besides the web IDE that will show me what version of firmware my device is running? I was shocked that it’s not shown on the dashboard or in the particle-cli device list.

Any help will be greatly appreciated.

You can use the Windows or OSX updater

And particle serial inspect will show you if the update actually took (which I’d assume).
0.5.1 would be #15 for system module 1 & 2.

There currently is an issue with Build not recognizing your 0.5.1 device as such, but it should see it as 0.5.0 and this should work for that lib too.
Try to build a dummy app for 0.4.8 and flash that OTA, then clear the Build cache. This should at least bring you up to 0.5.0.

Or you just build (not flash) for 0.5.1 with Build, download the binary and upload this via CLI.

Still no joy for me. I have included the log for my flashing of the pixel clock built against the 0.5.1 version.

I also flashed a test app built against 0.4.8 and cleared the cache but still see 0.4.8 in the IDE.

Finally, particle serial inspect just prints “! serial: No devices available via serial” which is probably a clue. I have the device connected via USB. I tried with and without the Lion battery attached. I can get serial output if I open a terminal program.

Ugh.

ltmac-zzimmerman:particle zzimmerman$ particle flash --usb ~/Downloads/firmware\ (3).bin
Found DFU device 2b04:d00a
checking file /Users/zzimmerman/Downloads/firmware (3).bin
spawning dfu-util -d 2b04:d00a -a 0 -i 0 -s 0x08080000:leave -D /Users/zzimmerman/Downloads/firmware (3).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 = 43776
Download [=========================] 100% 43776 bytes
Download done.
File downloaded successfully

Flash success!

More on serial inspect:

$particle serial list
Found 1 device connected via serial:
/dev/cu.usbmodem14521 - Electron
$ particle serial inspect

! serial: Serial timed out

As @ScruffR said currently the IDE is not happy about identifying when an electron is running 0.5.1 system firmware. It will ID 0.4.8 and 0.5.0 fine, but does not change to 0.5.1 when you update system firmware. We’re working on fixing this ID hiccup, and for now as a workaround you can download the compiled binary for 0.5.1 and flash with the CLI. I see you have tried that and are having issues. It looks like your firmware binary transferred ok though. Particle serial inspect requires the device to be in Listening Mode, which I’m guessing you did since DFU and normal running mode results in a serial timeout without identifying the device for me, but double check that. Also you can try particle serial identify. It’s very strange your device was found on list but timed out for identify.

@BloatedWarthog assuming you can get system firmware updated on your electron with the CLI or the Device Upgrader, the Build IDE is now detecting 0.5.1 properly. Update your electron to 0.5.1. Then flash an older app like a 0.5.0 blinky app to your electron. When you refresh the browser you system firmware should be recognized as 0.5.1, and you’ll be able to OTA apps to it now as 0.5.1 as you wish.

I will try that process once I get home later today. With 5.1 there is an issue with flashing the electron OTA using the CLI but I wont care if it works from the web IDE

What is the issue you’re seeing with the CLI @Slimfetz? Is it over DFU, OTA or SERIAL? What system firmware version and user app firmware version are you using when having the issue?

@Bdub flashing OTA using cli. @ScruffR is seeing the same thing. Here is the relevant thread

@BloatedWarthog, @Slimfetz: A bugfix has been released to Build.

Once you have your Electron updated to 0.5.1, just OTA flash an 0.5.0 or 0.4.8 dummy app via Build and then refresh the Build window in your browser.

Super awesome! @ScruffR you have been super helpful and informative. I appreciate your time.

1 Like

@BloatedWarthog if you get the latest CLI v1.14.2 and refresh your browser you should be unblocked now. Please let us know if you are still having trouble.

Hey thanks @BDub! I am up and running again. And in case you’re interested, I updated my particle app to 1.14.2 and then did “particle update”. It appeared to succeed, but when I ran the IDE and checked my device was still reporting 0.4.8. So then I build the pixel clock example against 0.5.1 and downloaded it as firmware. Then I used “particle flash --usb firmware.bin” to load it onto my Electron. That worked and when I went back to the IDE I now see it running 0.5.1.

Thanks again for your support! Can’t wait to start digging deeper into the particle environment.

1 Like

Nice! Yeah the IDE won’t automatically know you are running 0.5.1 system firmware until it gets a describe message from the device. This is most easily generated by changing the user app. You can do it as you did, or you can use the IDE to send a 0.4.8 user app first, refresh the browser, and then you should be able to do 0.5.1. This of course is a little bit more data usage, so your method is preferred.