Hello!

I'm working on the InfiniTime project, an open source firmware for the PineTime from Pine64. It's based on the NRF52832 MCU.
InfiniTime is running on FreeRTOS and uses NimBLE as BLE stack.

By the way : thanks everyone working on this project! Thanks to you, we can build a 100% open source firmware for our smartwatch, which is great! Thanks also to this mailing list that have already helped us a couple of times!

I'm trying to analyze a strange issue we have for quite some time : BLE connectivity works fine (we use it to synchronise the time, send heart rate data, notify battery level, firmware update,...) for  ~24h. After roughly 24h, we lose all BLE connectivity : a host device cannot connect to the watch, and the watch does not advertise itself when it should (advertising is restarted every time the watch is woken up by a push on the button). It looks like the ble stack just stops.

I've already done a few experiments:
 - Run a BLE sniffer (the NRF sniffer based on the nrf52dk) next to the watch for a day : The sniffer would see all advertising messages whenever the watch was supposed to advertise until it saw nothing. I saw no strange message between the last time the sniffer saw the advertise messages and the time I noticed the watch was not advertising anymore.  - Connect the debugger once BLE does not work anymore and look at the tasks : both LL and Host tasks were waiting for an event on  their event queue. No deadlock or infinite loop.  - Enable the monitor mode and log all HCI messages using btmon. I did this a while ago, but as far as I remember, I couldn't see anything wrong.  - Change the timeout of the calls to ble_npl_eventq_get() to check if the tasks were running properly : they did. They just didn't receive any new event3
 
So, as far as I can see, it looks like everything is running fine, but no new event is generated to unlock the ble tasks. So I guess I have to probe a bit deeper in the radio/isr code?

Any suggestion to analyze this issue is welcome. What debug info can I add/enable to try to understand what's happening under the hood? I have a NRF52DK board on hand with a logic analyzer if needed.

The source code is here (https://github.com/JF002/InfiniTime) and we are using nimble 1.3 master branch commit 82153e744833821e20e9a8b0d61c38b2b0dbcfe1.

Thanks for your help!

Reply via email to