Possible Fix for Mesh Reconnect Issue based on RSSI values


If you have a Particle Mesh device that is say perfectly stable at a line of sight distance of 300 m, and then it becomes disconnected, presently that device needs to be moved about 200 m closer to the gateway to reconnect. (Take these measurements with a grain of salt.)


Test the (lets call it the MLE) OPENTHREAD_CONFIG_MLE_LINK_REQUEST_MARGIN_MIN which is normally set to a value of 10, why doesn’t Particle try lower values say 7 to 3.

The MLE value of 10 is the difference between the RSSI value and background noise allowed for a device to re-connect.

This value is in the Particle github at https://github.com/particle-iot/openthread/tree/master/src/core inside the file openthread-core-default-config.h at line 1652 a fixed link to the file commit is here

Why test the Particle version of OpenThread with different values?

See this openthread-users group blurb about the RSSI values. Here is a quote from the thread:

The OPENTHREAD_CONFIG_MLE_LINK_REQUEST_MARGIN_MIN configuration represents a tradeoff between link stability and range. Of course, weighing the tradeoff can depend on a variety of factors, including hardware platform and operating environment.

RSSI values are a range: -1 Strong Signal -------> -99 Weak Signal

An MLE was very sensibly set by OpenThread so that for reconnection the Thread only looks at signals from -1 to -89 for perfect (no) background noise and a lower range for really bad background noise. Which makes lots of sense, until you see the RSSI values when working with the Particle Mesh. The best value I could get without Antennae and the 2 devices touching was -19, and that value dropped off dramatically within the first 2 meters. (2 meters between a Xenon and and Argon and my RSSI values could easily be -60)

However my Xenons are perfectly stable with an RSSI value of -98, perhaps the Particle hardware is more stable than what OpenThread was designed to work with!

Anyway, since the Particle Cloud is not Open Sourced (as far as I can tell). I can’t test this information out, so I can’t really help Particle with some of it’s connection issues. (If someone wants to contact me about how to make my own Particle Cloud I would be very interested. :grinning: and then I could spend hours testing to see if this does help)

So this is out of my hands and just a suggestion for Particle to try.

Since po-util.com gives access to the Particle and OpenThread firmware code, this feature is accessible. See post Local Build Argon using po-util with OpenThread

I will post some code when I get it working.


My devices, even before making any changes, have become too unstable, not sure why, so for now their is no point trying to do any distance testing inside. I will have to test things outside (line of sight) and see if the stability gets any better.

A few weeks ago I was easily getting 60 meters inside and 600 meters outside, presently barely getting 10 m inside. Not really sure why.

Maybe new sources of 2.4GHz interference nearby?

1 Like