Is this "feature" documented?

I have noticed that I can force a Boron to connect to the cellular network and Particle if I do the following:

Press and hold the “mode” button,
Press and release the “reset” button
Release the “mode” button once it starts flashing blue / red

This is very helpful as many of my sketches keep the device off-line until a scheduled reconnect and this can help helpful to bring a device on-line quickly. I looked to see if I could find any reference to this in the forums or documents and came up short (it is likely in there somewhere but I could not put my finger on it).

I am asking about this as I would like to rely on this “feature” and would like to know it will be there in the long-haul and to get a little more detail about what state this puts the device into? My assumption is that this simply puts the device into SYSTEM_MODE(AUTOMATIC); until the next reset - but is that correct?

Thanks,

Chip

Do you mean “Safe Mode”?

You can even initiate that mode from within your program via System.enterSafeMode()
And via CLI particle usb safe-mode.

This mode is there since the Spark Core and will very positively be present on future devices too.

1 Like

@ScruffR ,

Thank you - safe mode it is.

I might suggest one update to the documentation to highlight one other helpful use for this feature: once the device connect to the Particle cloud, it will receive pending firmware updates.

For example, for the LoRA nodes, the only reason to connect to Particle is to get updates. With this approach, I can use the “user button” for other uses.

Thank you, Chip

1 Like

Hmm, while this could be explicitly documented, I’d think since OTA updates intrinsically depend on a Particle Cloud connection and Safe Mode by definition initiates a Particle Cloud connection and also shares the same magenta color code as an ongoing OTA update it would appear that the implicit relation between all these could be considered self explanatory :wink:

BTW, you can also use the Mode Button (via digitalRead(BTN) or System.on()) in your code and tie your current update logic to it to free your user button - unless you mean the Mode Button when you say “user button” and you already do that anywho :blush:

2 Likes

@ScruffR ,

Oh, I see that you are saying there - that is a brilliant idea!

I have a separate “user button” on my carrier board but having only one button can be limiting. Your suggestion on reading the Mode button and using the System.on() call opens up many interesting possibilities.

Thank you!

1 Like