Photon LED stuck at Cyan

Hi,

I am experiencing problems with accessing the Photon.

I have followed this guide (https://docs.particle.io/guide/getting-started/connect/photon/) to connect my device through USB for Windows 7 (as I do not have an Android/Apple phone). Everything seemed to work out fine, but when I reset my Photon one of two things happen:
1: It starts blinking green for about 3 seconds which is followed by a few blinks of cyan ending in cyan with no blinking or breathing.
2: Same procedure, but instead of ending in stale cyan the LED simply turns off. This happens about 1/5 times.

It does not seem like I can actually access the Photon from the browser IDE, and I am at a loss as I cannot find information on the meaning of constant cyan nor of the LED being shut off.

Edit: I have now tried resetting the WiFi-connections and using an iPad to set up the network. It gives the same result where it appears to have been a successful installation, but the device LED is either stuck at cyan or completely shut off and there was no sign of it being really connected.

Does anyone have a suggestion on what could be wrong, and perhaps how to fix it?
Thanks in advance!
Regards Andreas

Solid cyan or breathing cyan?

Try placing the device in Safe mode.

Solid Cyan. For some reason I am not able to get it into safe mode. I am following the procedure described here (https://docs.particle.io/guide/getting-started/modes/photon/), but with no luck. It does not show magenta at any point, but skips directly to DFU mode.

What version of system firmware is your photon running?

I am not sure. I tried using the USB to update the firmware, but had some trouble with it. Luckily I had a backup Photon that works perfectly, so for now I will work with that so I can get coding :smile:. Thank you very much for your interest and inputs!

I am experiencing the same problem. The LED shows solid cyan and in some cases turns off after the startup sequence, safe mode does not work but gets me directly to DFU mode.

Any ideas how to get my Photon back to factory default?

Connecting via USB works somehow with particle via the terminal. At least a device is being found, but as soon as it tries to connect via WiFi it keeps telling me, “no device found”.

Any suggestions on what to do? Help is greatly appreciated.

Safe Mode helps reflashing your device. You need to release SETUP as soon you catch the first glimps of magenta.
But in DFU particle flash --usb tinker will put factory app firmware back on too.

Stuck LED often comes in connection with I2C code but inadequate wiring.

So I finally got into safe mode (breathing magenta). Thanks for the help.
However, it is breathing magenta/blue and red.

Any ideas what that means? Couldn’t find red breathing in the help files.

EDIT: Thanks ScruffR, after getting du-util to work and following your advice the photon works normally again.

Breathing magenta (=blue+red) is Safe Mode and cloud connected. So you can flash OTA.

This is happening to me as well. However, the device works for some time (breaths cyan) before it gets stuck in cyan and I cannot connect to it. Every time this happens I push the reset button and the device starts breathing again after a few seconds. This is unacceptable as I intend to have devices deployed and I need them to be more reliable than this. What do you suggest?

Some simple things to start with:

  • be sure to update to 0.4.9 which has many stability improvements, especially if using I2C devices

  • check if your application or library is disabling interrupts. For the LED to completely freeze means the system tick interrupt is not firing.

I suggest that you provide details about your current system setup, version of firmware, attached hardware and application libraries used. I hope you can appreciate, we rarely see device hanging like this so the trigger is most likely in your particular use case.

  1. Firmware is confirmed to be 0.4.9

  2. I don’t think I am disabling interrupts. Could you send a link that explains how to do this? @mdma

I am using the AM2315 without external libraries. However, I just imported the Adafruit AM2315 library and I am working with that one to see if the problem persists. This library does not seem to be disabling interrupts either.

The AM2315 is an I2C device and most occurences of this symptom where due to missing/wrong pull-ups, so

  • have you got your pull-up resistors in place?
  • what value?

Try toning it down a bit, especially when the root of the problem is not yet confirmed to be on Particle's side.

1 Like

10Kohm is the value. I believe if I had the wrong value the sensor would not have worked before failing. It worked for many days before failing.

@manuelgodoy, can you post your code? I don’t believe much else can be done until we can see it.

Here is my code. Thank you very much for the help.

//#define USE_PUBLISH

#define I2CADDR 0x5c
#define READREG 0x03

float humidity;
float temp;
String str;
#ifndef USE_PUBLISH
char cstr[50];
#endif

void setup() {
    Wire.begin();
    #ifndef USE_PUBLISH
    Particle.variable("Ambient",cstr,STRING);
    #endif
}

void loop()
{
    uint8_t data[10];
    
    Wire.beginTransmission(I2CADDR);
    delay(2);
    Wire.endTransmission();
    
    Wire.beginTransmission(I2CADDR);
    Wire.write(READREG);
    Wire.write(0x00);
    Wire.write(4);
    Wire.endTransmission();
    
    delay(10);
    
    Wire.requestFrom(I2CADDR,8);
    for(uint8_t i=0; i<8; i++)
    {
        data[i] = Wire.read();
    }
    
    if(data[0] == READREG && data[1] == 4)
    {
        humidity = data[2];
        humidity *= 256;
        humidity += data[3];
        humidity /= 10;
        temp = data[4] & 0x7f;
        temp *= 256;
        temp += data[5];
        temp /= 10;
        if(data[4] >> 7) temp = -temp;
        str = "{\"humidity\":";
        str += String(humidity);
        str += ",\"temperature\":";
        str += String(temp);
        str += "}";
    }
    else
    {
        str = "Bad response from sensor";
    }
    
    #ifdef USE_PUBLISH
    Particle.publish("am2315",str);
    #else
    str.toCharArray(cstr,50);
    #endif
    delay(1000);
}

As well as updating system firmware to 0.4.9 can you confirm that you’ve compiled and flashed your application code against 0.4.9 too.

@mdma

I’m currently stress testing a my setup with an I2C device and getting stuck on cyan after many cycles of the wifi on//off (between 400-500). If you compile via the CLI is that going to use 0.4.9? I am running 1.9.3 of the CLI and use it to update the Photon’s I’m testing with via sudo npm update -g particle-cli && particle update