I fired up my other Electron (hate to be using my kickstarter free data months for this but…) so I can mess with this and try to reproduce the drop to blue flashing “listen” mode. I did manage to get it to breath white as well, and it turns out this was my fault. There’s an interesting behavior and flow that I hadn’t anticipated but now is understandable.
I have a global object (I know, topic for another debate) so of course its definition lies above and outside setup(). The object comes from a library I forked for a particularly handy chip I’m using. The library had a crap infinite loop in its constructor if the chip doesn’t report as available. So on my local debug Electron that doesn’t have the chip, the Electron powered up and infinitely breathed white because of that endless loop in the library. It seems that the background calls that do the 3G connect and the Particle Cloud connect don’t begin to get called until the setup() function. So if you never get in there because you’re defining an object and its constructor never returns, you never connect. This isn’t going to be causing the dropout to the listen state which is the crux of this thread, so investigation there must continue, but it does explain my white-breathing behavior when I was messing with the chip before as I had suspected something electrical and removed the Electron from its board to try to isolate it. Turns out that isolation caused my breathing white. I’ve since made my code a lot more solid. My constructor is fixed and I’ve also changed my globals to just be pointers and I then instantiate the objects in setup() so I can’t be caught prior to getting there.