Wanna share a little update on [dis/re]connection issues.
I’ve received a noticeable number of reports lately from users whose connection was lost somewhere in the middle of an activity. Sometimes it recovered, but in other cases the watch remained in “reconnecting” state until the application or even the watch was restarted.
A special thanx to @larrybbaker for detailed reports that encouraged me to investigate the problem much deeper!
After investigating the issue, I learned that there could be a few issues in AURA:
AURA is Suunto’s native BLE management layer between Duktape and Zephyr BLE stack, managing connections to external sensors if i understood correctly.
AURA may try to create a connection while Zephyr still has an existing connection object for the same device. Instead of safely waiting, reusing it, or cancelling the old connection, the observed path reaches an internal assertion. AURA then restarts, potentially interrupting connections to the phone, HR belt, power meter, foot pod, and other sensors. Automatic recovery may then enter the same failing path again.
AURA uses a fixed pool of write requests. The analysis indicates that one completion path may fail to release a request when the associated client connection has already disappeared. If this happens repeatedly, the pool can eventually become exhausted and subsequent writes can fail or stop completing.
To be honest, this evidence based just on log analysis and available firmware bins without any access to internals of AURA it could be a false positive. But 90 percent sure it’s not.
From our side, app could reduce BLE pressure, avoid aggressive retries, and we’ve made this. We lost in reconnection reliability, however, wins in lower BLE pressure. However, it won’t resolve an inconsistent native connection state or release resources retained inside AURA.
I’ve shared a much more detailed technical report with Suunto, including the relevant logs, and step-by-step reasoning. So, hope it gives the Suunto team a useful starting point.
Apart of that, because AURA is shared by multiple BLE functions, this problem may not be limited to our application. It could also be relevant to reports of external sensors disconnecting during activities, such as those discussed in that thread - https://forum.suunto.com/topic/15629/hr-chest-strap-disconnected-during-activity - symptoms are really similar.