I have 10+ Boron 2G/3G deployed on the field and 2 with me on my bench. All are running device OS 1.4.4. Nothing is connected to the RST & MD pins.
It sporadically already happened before, but after the cloud service outage, it seems, that all are stuck in DFU mode, fast blinking yellow (at least the two devices on my bench are stuck in DFU mode). Now if I plug them into the computer with an USB cable, Windows 10 recognizes them as “Boron DFU Mode”.
Previously I assumed that this DFU mode was happening because of physical handling of the devices, cable plugging in, etc.
In my firmware I have an application watchdog, which is not functional in DFU mode of course, but also have the nRF hardware watchdog enabled, but now it does not fire either (previously it was working properly):
My questions:
1.) Why and how can a device enter into DFU mode automatically (without USB connection or pushing any buttons)?
2.) Is it an intended behavior, or a bug in the device OS?
3.) Why isn’t there any timeout for DFU mode (e.g. 1 hour), to recover stuck devices?
4.) Does DFU mode intentionally and automatically disables the nRF built-in hardware watchdog?
5.) Is there any way to recover my remote devices without visiting them?
I learned the lesson on the hard way: an external hardware watchdog is indispensable…
I didn’t yet try to reset the devices on my bench, (with reset button or EN pin), but that would probably exit DFU mode, because I’d like to test the remote reset solution on them, if there’s any.
Thank you for your quick reply.
1.) I don’t call System.dfu(), and it’s hard to believe, that all of my Borons has faulty mode switches, which goes wrong at about the same time. But I’ll investigate my PCB carefully to see if other parts may have some parasitic effects on those pins. However, I think it’s unlikely.
2.) Is there any known event or logic which puts the system into DFU mode without the intention of the user (intentional beeing e.g. System.dfu() or button sequences, or USB commands)
4.) Do you mean that DFU mode always starts after a reset? So there is no way for the system to go from run -> DFU, but only run -> reset -> DFU. That can explain why the HWDT is off.
5.) What can I try?
Nope, not meaning that, but we also don't know how the device ended up in DFU Mode in the first place, so the possibility needs to be considered.
Not really, but the limited number of distinguishable colours on the system LED may lead to some confusion and sometime there may be erroneous colour "codes" that don't indicate any known state.
But after clarifying the above and your error description it might be best to file a support ticket at support.particle.io (referencing this thread too).