Starting Spark Core without wifi [SOLVED]

How do I set the Spark Core to start when it is not in wifi range (outside, for example)? I found this thread:

But the link provide does not work. If I boot the device while it is connected to wifi, the application keeps working even if I go outside the wifi range, but the application won’t start if I turn on the core when outside wifi range.


If you use SEMI_AUTOMATIC mode and start WiFi yourself using



Then your code will always run with or without a wifi connection.


Try this snippet:


uint8_t retry_count = 0;
unsigned long old_time = millis();

void setup(){

void loop(){
     if(millis() - old_time >= 2000){        
        if(retry_count < 10){

            else if (!Spark.connected()){
            retry_count = 0;
        old_time = millis();

    // place the rest of your code below


1 Like

If I set the device to semi automatic mode by adding SYSTEM_MODE(SEMI_AUTOMATIC); , I am guessing that I won’t be able to flash the device, right? So how can I set the device to try and connect once after it is switched on and if it fails it proceeds in SEMI_AUTOMATIC mode?


@osprey, the code i wrote will automatically attempt to reconnect the moment wifi connection drops.

If you have a requirement that the device must first connect upon boot-up, you can add a Spark.connect() in setup().

I have to warn that your device will be stuck here until it finally connects so it is all or nothing.

Otherwise, the snippet i wrote above will work well. Give it a try and see how it behaves :wink:

1 Like

@kennethlimcp I tried that snippet and the device got stuck into an infinite loop in which it attempts to connect and then runs my code. I could not flash the device and ended up having to apply a factory reset. I am totally new to Spark/Particle (received it today) and do not know of another method to stop the code from running.


I must have been doing something wrong. I just tried your code one more time and this time it worked fabulously. Sorry for the false alarm!


Have fun :smile:

This code is kinda stable but the WiFi.connect() blocks for 30+ seconds when there is no valid SSID in the vicinity. Needs some fixing but works great for me :smile: