Argon doesn't take WiFi credentials

Hi,

After extensive testing we have found that 50% of our Argon modules are bricked (not recoverable and able to connect to particle cloud after running the following code

Steps to recreate defect

We had plugged argons flashed with following code

STARTUP(System.enableFeature(FEATURE_ETHERNET_DETECTION));
SYSTEM_THREAD(ENABLED);
SYSTEM_MODE(SEMI_AUTOMATIC);
void setup()
{
	{
		SINGLE_THREADED_BLOCK() { // single threaded execution starts now
			Particle.connect();
		}
	}
        ...
}

void loop
{
	static uint32_t lastPublishTime = millis();
	if(millis() - lastPublishTime > 4000)
	{
		lastPublishTime = millis();
		if(Particle.connected())
			Particle.publish("Testing", "Testing");
	}
}

It worked perfect for 10~15 minutes after flashing, but then the module becomes a white color

It does not pair with mobile app anymore in the setup mode.

And also after I recover system firmware, same situation.

I would note we have 50% of the modules working after we flashed with the same code
And another strange is another module connected via WiFi flashed with same sketch is working well.

What is the goal of calling Particle.connect within a SINGLE_THREADED_BLOCK?

Iā€™m not sure thatā€™s safe to do - it is quite possible that something during Particle.connect could end up waiting on the system thread, which would then deadlock because the single threaded block would prevent swapping to the system thread.

Its target, is to enable Cloud connection in system auto mode, so that device os should reconnect automatically if disconnection has happened.

And also I dont want program blocks until cloud connection has succeeded when I use AUTO mode.

I would not do it that way, because I donā€™t think it will work reliably. You should use

waitUntil(Particle.connected);

after Particle.connect.

You want to block the application thread from proceeding, but not block the system thread from running.

1 Like

But our product should be predict cloud disconnection when boot

If we use your mentioned solution, our logic could not work when startup until it has connected to cloud.

What solution do you have for that?

Just call Particle.connect() from setup(). Not in a SINGLE_THREADED_BLOCK. Automatic reconnection will occur, and loop will continue to run when not connected.

1 Like

Thank you, I will test your suggestion

otherwise, I think I can use system manual mode

And it was reason of broken modules?

If module has broken with this sketch, I could not recover that module by any solution

  • Recovering system firmware using DFU mode
  • Flashing Softdevice SDK and bootloader/system firmware using Particle Mesh Debugger

There is no solution for mesh as same as ā€œparticle device doctorā€ in Photon/P1 etc?

Are you able to enter safe mode? ( breathing magenta)

I could not enter into safe mode as mentioned in documentation

Hi

Following up on my engineers comments yesterday.
Iā€™ve been testing the Argon modules with RC27 on my network at home

My Argon modules stay connected to my wifi for maybe 5 mins then go into a disconnecting flashing green state. Only recovery method is a power off/on restart.

I cannot see this as a known issue on the release notes??

Is this a commonly experienced issue?

**Note I have P1 modules connected and stable on the same wifi network for months

Thank