Peripheral stops notifying data after working for some hours, then get backs to work in an hour

Hi,

I get a very strange issue. Below is my device information:

  1. NCS v2.4.0, Zephyr
  2. It acts as a Peripheral
  3. It advertises itself, accepting connection
  4. Connection parameters:
    • interval: ~500ms
    • latency: 0
    • timeout: 4s
  5. Connection TX power: 0 dBm
  6. TX MTU: 247
  7. ACL TX Count: 10
  8. ... (prj.conf is attached)

My device is connected with a sensor, reads its data, and notifies the processed 254-byte sensor data to the connected Central every 1 second. (My Peripheral almost does not receive data from the Central).

The Central devices that we test are iPhone, iOS17 with negotiated MTU confirmed by the stack being 244. Since every sensor data sent by my application every second is 254-byte, it requires to send 2 packets (244 + 10) in each second.

Things work for the first few hours, i.e. the connected Central receives data successfully. However, after that, the Central does not receive data anymore although the connection is still maintained.

I tried to increase the TX Buffer Count to 10 but it does not help.

I checked event length: CONFIG_BT_CTLR_SDC_MAX_CONN_EVENT_LEN_DEFAULT, which is 7500 us, which is good.

How come my Peripheral just stops working without any error thrown, and recovers itself then? Is this related to some TX buffer parameters? Is there something wrong with my TX parameters in my prj.conf?

Look forward to your replying.

Best regards,

7725.prj.conf 

Parents Reply Children
Related