DFU mode via 14400 baud not working

Hello—I’ve been connecting to devices @ baud 14400 for a few years to kick them into DFU mode but one of my devices (an E-Series 2G/3G) is not responding to that as expected today. Another device is, so I am confident that the routine and computer side of the connection are not the problems.

When I connect at 14400 (I’ve tried using a few different software options: Mac terminal, CoolTerm, VS Code/Workbench), the errant device appears to restart with RGB LED turning off for a second, flashing magenta for ~ 10 seconds, and then it restarts the user firmware that I already had on there. If I connect at 28800, it does go into listening/flashing blue mode. I’ve previously used the 14400 baud technique to put this same errant device into DFU mode dozens of times but today it is not working.

Unfortunately I do not have physical access to any pins other than the four USB pins (it is entirely potted in epoxy other than those) so I cannot put it in DFU mode using the pin/button technique.

Does anybody know what could be causing this new behavior and how to fix it? Thanks!

What device OS version are you using?

You should be able to place the device into DFU mode with:

particle usb dfu

This will use libusb rather than changing the baud to 14400.

There are several other particle usb commands that you may find useful:

Control USB devices
Usage: particle usb <command>
Help:  particle help usb <command>

Commands:
  list             List the devices connected to the host computer
  start-listening  Put a device into the listening mode
  listen           alias for start-listening
  stop-listening   Make a device exit the listening mode
  safe-mode        Put a device into the safe mode
  dfu              Put a device into the DFU mode
  reset            Reset a device
  setup-done       Set the setup done flag
  configure        Update the system USB configuration
  cloud-status     Check a device's cloud connection state

Global Options:
  -v, --verbose  Increases how much logging to display                   [count]
  -q, --quiet    Decreases how much logging to display                   [count]
1 Like

Thanks for the reply, @nrobinson2000. Unfortunately this results in the same behavior. The ESeries very much appears to be receiving the particle usb dfu command (or, equivalently, baud 14400) but in either case, it just begins flashing magenta for ~ 10 seconds and then resets user firmware. I can get it into listening mode but not DFU mode and I’ve reconfirmed that I can put other devices into DFU mode. Seems like there’s something pretty wrong with the hardware—at least that’s my best guess!

1.4.4. Pretty old, I know, but I had (almost) stable firmware written for that device OS.

Can you put the device into listening mode and run particle serial inspect?
In LM you can also reflash the bootloader and any other module that may have become corrupted.
particle flash --serial <firmwareModule.bin>

2 Likes

Thanks, @ScruffR.

particle serial inspect when in LM returns Could not get inspect device: Serial timed out. I tried three different terminal programs, including VS Code/Workbench.

particle flash --serial <firmwareModule.bin> returns:
Error writing firmware: Timed out waiting for initial response from device.

Maybe it’s worth mentioning what I can do since that seems to be a shorter list… I can put it into LM using baud 28800. I can also communicate with my device over USB in my user firmware’s CLI, verifying USB/serial communication. particle serial list works (i.e., the expected usbmodem and device ID are printed to screen), though particle serial mac and particle serial identify do not. I can also set another nearly identical device into DFU mode.

I also just ran particle update-cli and it said no plugins to update so that doesn’t appear to have been the issue either.

Is it possible for you to put the device into safe mode and then listening mode?

particle usb safe-mode
particle usb listen

From there you could try particle serial commands, flashing bootloader, DFU mode etc.

2 Likes

@nrobinson2000, thanks for taking additional time to try to help. I am more confident now that there must be some sort of hardware problem here as I can’t seem to make any headway running any other serial or usb commands.

Running particle usb safe-mode appears to restart the device, much like connecting at baud 14400. It flashes magenta for ~ 10 seconds, yellow for a couple, then picks back up at the top of user firmware. If I run particle usb listen after that, it does kick into listening mode, but I can’t do much from there.

particle serial flash <my-firmware.bin> or particle flash --serial <my-firmware.bin> both return Error writing firmware: Timed out waiting for initial response from device.

Particle console isn’t picking up any other problems either, well other than a somewhat weak cell connection. Doing the “health check” online returns:

29% cellular signal

This device may be experiencing lower-than-optimal Cellular signal. Devices in low connectivity environments may exhibit disconnects, long roundtrip times, and/or difficulties communicating with the Cloud.

* Operator: **AT&T Wireless Inc.**
* Access Technology: **3G**
* Cell Global Identity: **xxx-yyy-zzz**

491ms round-trip time

39kB of 111kB RAM used

24% battery charge

0 rate-limited publishes

Might just have to move on to another device at this point… Thanks again for your help!

If you try to place the device into listen mode as soon as you see the magenta from safe mode does it make a difference?

Also, opening a support ticket might be a good idea:
https://support.particle.io/hc/en-us/requests/new

1 Like

Afraid not! It doesn’t respond at all when it’s blinking magenta.

Good call. Thanks again.