Duo stuck in DFU mode (flashing yellow)


#1

I finally got a chance to work with my Duo. It fired up OK the first time; I installed the requested software on my Mac laptop without issue and proceeded to update the firmware as per the getting started guide. Rebooted, and nothing lit up (well, there was a dim blue light on the other LED). Figured out that problem; was able to get back into DFU mode and resent the firmware. Now, I’m stuck with the LED flashing yellow and I can’t get it into any other mode. Holding down setup cycles magenta, then yellow, and that’s all. There’s no safe mode; no reset to factory; nothing.

I’ve tried on my Mac laptop and my PC. Windows says “Duo DFU mode” (or something like that) in device manager and wouldn’t recognize the driver so I gave up and went back to the Mac, which can still communicate with the dfu-util. I’ve tried sending multiple versions of the firmware multiple times (checking the correct address after noting that was a common mistake). I’ve tried using the RBlink to resend the bootloader. I’ve resent the WiFi .bin file

I’ve reviewed the forums and tried :leave after the address of one of the uploads, along with several other things mentioned in various posts and nothing has returned me to a normal mode. Hell, at this point I’d take a different mode; at least there would be progress…

Hope that’s enough information to start with. Not sure what to try next. Any suggestions?


#2

Hi @napenthe,

Release the setup button when blinking magenta will force the Duo enter safe mode. The reason why it can not enter factory reset mode is that your factory reset firmware is invalid.

You need install the DFU driver using Zadig. See here.

In short, you can enter DFU mode, except running into system firmware, right? Could you please post the instructions you updating the system firmware?

Kind regards.


#3

Well, I tried that. If I release the setup button when it’s flashing magenta, it switches to flashing yellow. I’m still in DFU mode - I can’t get anything else to come up. I will try the DFU driver as soon as I can…

As far as the firmware process, I’m using this from the getting started guide. I saw similar posts in various threads.

To update System-Part1, type:$ dfu-util -d 2b04:d058 -a 0 -s 0x08020000 -D duo-system-part1.bin
To update System-Part2, type:$ dfu-util -d 2b04:d058 -a 0 -s 0x08040000 -D duo-system-part2.bin
To update User-Part, type:$ dfu-util -d 2b04:d058 -a 0 -s 0x080C0000 -D duo-user-part.bin
To update factory reset image, type:$ dfu-util -d 2b04:d058 -a 2 -s 0x140000 -D duo-fac-tinker.bin

Thanks for the response!


#4

I think there isn’t even a valid system firmware in your Duo, so it just fell into DFU mode. Did these DFU commands execute successfully? How about following this instruction to recover your Duo:


#5

From what I saw in the terminal window, they executed correctly and completely. I did see that recovery post, but again remember that I can’t GET to another mode. I only see magenta and yellow. I’ll review the rest of the post and see if there’s anything else that works.

Thanks again


#6

I am experiencing exactly the same here. It was a firmware 2.2 version before upgrade. It’s now struck at DFU mode no matter I have already successfully loading 2.2, 2.3 and 2.4 firmware tons of times.


#7

Hi @napenthe & @zee,

Could you dump the firmware to local file:

dfu-util -d 2b04:d058 -a 0 -s 0x08020000 -U duo-system-part1-dump.bin
dfu-util -d 2b04:d058 -a 0 -s 0x08040000 -U duo-system-part2-dump.bin

and then upload them to somewhere I can download it from internet.

Thank you!


#8

Let’s try this…


#9

Hi @napenthe,

I downloaded the files and the files you dumped were not firmware images(all system-part1, system-part2 and user-part were not), while more like html script. So you must have downloaded the wrong firmware images. How did you download the firmware images from internet? We need to point out this issue to prevent someone else from downloading the wrong images.

Thank you!


#10

I thought that might be the direction we were headed.

I know I downloaded the files from the right place, but I’m in the habit of right clicking and choosing “save as…” or “save link as…” etc.

When I first downloaded the files, I clicked the links normally which took me to another page. I didn’t see a download link there that I remember (and the structure has changed, so I can’t confirm), so I went back up and right clicked the first link. Websites where this won’t work usually show the file to download as “download.html” or something to that effect, but this showed the correct filename so I proceeded.

Obviously, that was my issue…

I checked this morning and found the “view raw” link on the second page and clicked that (again, I can’t remember if I saw that before or not). I should have known something was wrong previously because the .zip wouldn’t decompress regardless of what program I used (Stuffit, WinZip, etc.) so I was downloading the .bin files manually - or at least I thought I was. I even remember seeing a post about that, but couldn’t find the “raw” download that was mentioned. Now, the .zip downloaded correctly and uncompressed with Stuffit.

I reloaded the two system files and the default image (v.0.2.3) and it booted up. I got different light patterns now (flashing magenta, then a fast flashing green, maybe a cyan and now the flashing blue) so I’m in better shape. Knowing that I’ve uploaded bad files, I’m guessing that everything will need to be sent again, but so I don’t make things worse, what procedure should I follow to make sure it’s all reloaded correctly? What pattern of lights should I see to confirm that everything is working correctly?

Thanks for all the help. I hate making stupid mistakes.


#11

No special procedure you need to follow, except that the address in the dfu commands are correct and the firmware images are specified correctly.

It’s hard to tell and it depends on the current state of your application. You can learn more about the RGB patterns, indicating the state of your Duo.

Cheers!


#12

Sorry, I wasn’t specific.

I’m guessing I need to reload the WiFi firmware and the DCT files to re-provision, unless they were never updated because of the bad files. If so, I see the WiFi firmware but don’t see the DCT bin file to download anymore.

I can’t find the duo-user-part anymore to re-download - do I need it?

I’d like to go to firmware 0.2.4; but I don’t see an updated factory image (duo-fac-tinker). What is the duo-fac-web-server file?

I tried to load the bootloader and an unlock utility using the RBlink during all the confusion - do they need to be removed from the Duo? They were obviously not working (downloaded the same way) but I don’t know if they uploaded and I want to clear out all the junk files that I tried to load.


#13

I know what you are confusing and what you told is true. I am busy reorganizing the file structure and some instructions to improve user experience – definitely is what lots of users are complaining about.

The DCT file is deleted considering it will erase the WiFi credentials and some system flags the Duo has stored before. The origin purpose of the DCT file is to invalid the device private key so that Duo will generate a new one. Now it is replaced with invalid_device_private_key.bin. You can download this file using:

dfu-util -d 2b04:d058 -a 1 -s 34 -D invalid_device_private_key.bin

Since the user part is not part of the system firmware, actually it is your application image so you can download it using Arduino or Particle WebIDE or, download other generated user part image using dfu-util. Regarding to the firmware update, it is unnecessary.

Since firmware v0.2.4, the factory reset image (used to be tinker application) is replaced with the web server application, the same as the default application when shipped out.

The unlock binary file is used to disable the write protection for system firmware. It will override the bootloader for Duo and vice versa, since they both using the same memory space. You won’t suppose to use it unless you are going to develop applications with WICED SDK (maybe it will also not needed for WICED SDK in the future). If you did load the unlock firmware, you need to load the bootloader again for recovery.


#14

Understood completely, and it wasn’t my intention to “complain” - just trying to get everything working again. Improving the quality of information for us is always appreciated…

If I’ve uploaded these bad files, would they have actually done anything? Yep, I uploaded the DCT, but if the file was bad, would it have actually deleted those settings? Is there a way to tell without having to reset it?

If I understand correctly, the user-part would be my own application that I would upload using something like the Arduino program. I would have downloaded a corrupted copy of it when it was available and uploaded it with the dfu-util along with the rest of the firmware, as stated in the guide; would it have done anything? Can that area of memory be purged of the bad data, or will it matter? Would a simple program overwrite whatever was there?

The unlock program would be the one that worries me the most. It would also be a bad download that was loaded using the DBlink - would it have applied? Is there a way to tell if the normal bootloader is running? I don’t need to develop anything right now and I couldn’t find instructions on the DBlink - how would I restore the bootloader if needed?


#15

The bad files would not do anything 'cos they can not even run up. A bad DCT image you loaded using dfu-util will override the old DCT so that the settings will be definitely deleted. You can’t tell unless you make it reset to run.

Don’t worry. Any bad files you loaded to Duo whether using dfu-util or other tools can be purged by loading the right images. Even if you load a bad file using RBLink, you can still recover the bootloader by drag n drop the correct bootloader image and then use dfu-util to recover the rest images. Upon the system firmware is recovered, you can use Arduino IDE to upload your application, i.e. user part.

  1. Hold down both button
  2. Release only the reset button, while holding down the SETUP button.
  3. See if the RGB blinks in the sequence: magenta > yellow > green > white

#16

I got the 0.2.4 firmware loaded successfully and the board booted OK. Setup wireless and it connected to my AP and to the cloud. I was able to push an example sketch from the Particle Build site successfully. I read your last post and tested the mode cycling. The LED flashed in the correct order, which - of course - reset the Duo…

Figures…

At least setting it back up was easy. Reconnected to the AP and the cloud. Pushed the example sketch again from the Build site and everything seems happy!

The only thing remaining from the getting started guide is connecting to the Duo’s webserver, which I couldn’t seem to do. Am I missing a download?

Many thanks to @guohui for helping to sort out my mistakes and patiently answering my questions. Hopefully this information will be helpful to someone else…


#17

The Duo is pre-loaded with the web server application. If you had downloaded other application to Duo, you can restore it using the Duo_WebServer example.

Cheers!


#18

Hi, that was my issue too. Thank you for posting about it.
Gustavo.