Device Modes

Now that we've gone over connecting your device, we're going to review the different modes for your Core. We suggest that you work through this section, putting your device in the different listed modes to familiarize yourself with them.

Standard Modes

Connected

When it is breathing cyan, your Core is happily connected to the Internet. When it is in this mode, you can call functions and flash code.

OTA Firmware Update

If your Core is blinking magenta, it is currently loading an app or updating its firmware. This state is triggered by a firmware update or by flashing code from the Web IDE or Desktop IDE. You might see this mode when you connect your Core to the cloud for the first time.

Note that, if you enter this mode by holding MODE on boot, blinking magenta indicates that letting go of the MODE button will enter safe mode to connect to the cloud and not run application firmware.

Looking For Internet

If your Core is blinking green, it is trying to connect to the internet. If you already setup the Wi-Fi connection, give your device a few seconds to connect and start breathing cyan.

If you haven't yet connected your Core to Wi-Fi, then set your device to Listening Mode. If your Core continuously blinks green and won't stop, then try doing a full firmware update.

Wi-Fi Off

If your Core is breathing white, the Wi-Fi module is off. You might see this mode if:

  • You have set your module to MANUAL or SEMI_AUTOMATIC in your user firmware
  • You have called WiFi.off() in your user firmware

Listening Mode

When your Core is in Listening Mode, it is waiting for your input to connect to Wi-Fi. Your Core needs to be in Listening Mode in order to begin connecting with the Mobile App or over USB.

To put your Core in Listening Mode, hold the MODE button for three seconds, until the RGB LED begins blinking blue.

Wi-Fi Network Reset

To erase the stored Wi-Fi networks on your Core, hold the MODE button for about ten seconds, until the RGB LED blinks blue rapidly.

DFU Mode (Device Firmware Upgrade)

If you wish to program your Core with a custom firmware via USB, you'll need to use this mode. This mode triggers the on-board bootloader that accepts firmware binary files via the dfu-utility. (Note: Some users reported issues with dfu-util on a USB3.0 ports on Windows. Use a USB2.0 port if the USB3.0 port doesn't work.)

Installation tutorial can be found here.

And a usage guide here.

To enter DFU Mode:

  1. Hold down BOTH buttons
  2. Release only the RST button, while holding down the MODE button.
  3. Wait for the LED to start flashing yellow
  4. Release the MODE button

The Core now is in the DFU mode.

Factory Reset

A factory reset restores the firmware on the Core to the default Tinker app and clears all your Wi-Fi credentials.

Procedure:

The procedure is same as the one described above (DFU Mode), but in this case you should continue holding down the MODE button until you see the Core change from blinking yellow to blinking white. Then release the button. The Core should begin after the factory reset is complete.

  1. Hold down BOTH buttons
  2. Release only the RST button, while holding down the MODE button.
  3. Wait for the LED to start blinking yellow (continue to hold the MODE button)
  4. The LED will turn solid white (continue to hold the MODE button)
  5. Finally, the LED will turn blink white rapidly
  6. Release the MODE button

You can reset Wi-Fi credentials by performing a Wi-Fi Network Reset.

Troubleshooting Modes

These modes let you know about more atypical issues your Core might be exhibiting. Use this section to troubleshoot strange colors you might see from your Core.

Wi-Fi Module Not Connected

If the Wi-Fi module is on but not connected to a network, your Core will breathe blue. Note that this will be dark blue and not cyan.

Cloud Not Connected

When the Core is connected to a Wi-Fi network but not to the cloud, it will breathe green.

This can be caused by the currently running application firmware which may interfere with the cloud maintenance tasks which are usually executed between iterations of loop() or via an explicit call of Particle.process(). That commonly happens when the code blocks for more than 10 seconds. In addition to regularly allowing for cloud maintenance (via dropping out of loop() and/or calling Particle.process()) you can take manual control of the connection, choose a better suited SYSTEM_MODE and/or opt for SYSTEM_THREAD(ENABLED). To correct the "offending" firmware you may need to flash new firmware either via USB or Safe Mode.

Bad Public Key

When the server public key is bad, the Core will blink alternately cyan and red.

Blinking red indicates various errors.

  • 2 red blinks: Could not reach the internet.
  • 3 red blinks: Connected to the internet, but could not reach the Particle Cloud.
  • Blinking "orange": This sometimes is seen as yellow or red and indicates bad server keys. To fix this issue, use the Particle CLI to restore the server keys using particle keys server in your terminal window, while having the device in DFU mode.

Red Flash SOS

Is your Core blinking red? Oh no!

A pattern of more than 10 red blinks is caused by the firmware crashing. The pattern is 3 short blinks, 3 long blinks, 3 short blinks (SOS pattern), followed by a number of blinks that depend on the error, then the SOS pattern again.

Perform a factory reset, tweak your firmware and try again!

There are a number of other red blink codes that may be expressed after the SOS blinks:

  1. Hard fault
  2. Non-maskable interrupt fault
  3. Memory Manager fault
  4. Bus fault
  5. Usage fault
  6. Invalid length
  7. Exit
  8. Out of heap memory
  9. SPI over-run
  10. Assertion failure
  11. Invalid case
  12. Pure virtual call
  13. Stack overflow

The two most common ones are:

Hard Fault (1 blink between 2 SOS patterns)

Out of heap memory (8 blinks between 2 SOS patterns)

If your Core crashes repeatedly with an SOS code, first try recovering with Safe Mode and flashing Tinker with the CLI to see if it was something recently added in your user application.

particle flash <mydevice> tinker

If it's not possible to enter Safe Mode, your system firmware may be corrupted. Try putting your Core into DFU Mode and flashing the system firmware locally over USB (and optionally flash the Tinker application) with:

particle update
particle flash --usb tinker

Don't forget that the community forum is always there to help.