This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

IPhone BLE paired to nrf52840 running at full bandwidth. How many of these systems (IPhone paired to nrf52840s) can be in one room?

I have many of these types of systems running in a single room but when I try to run more than 8 I start start to get errors. How many systems should be able to run in the same room at the same time?

Parents
  • Markl said:
    I guess we really just want to know if eight device pairs is an expected number that can be supported with regard to high speed BLE data transfer, or if there is some parameters(s) we can try adjusting to improve the situation. 

     If you are sending a lot of data, i.e., spending the entire connection event to send packets, and there is no "radio idle" time between connection events/intervals, and you have 8 devices that does this, the channel utilization starts to get high, packet collision can happen, and that will reduce the throughput & bandwidth. The SoftDevice will try to retransmit packets that are not ack’ed on the link layer, so if your application is continuing pushing packets to the SoftDevice, the internal SoftDevice buffer might get full. If that happens, the function sd_ble_gatts_hvx() will return NRF_ERROR_RESOURCES. Over time the central(phone in this case) might be able to set a channel map that reduces the probability of packet collisions. But the application needs to gracefully be able to handle the NRF_ERROR_RESOURCES return code. That said, it might also help to increase the SD buffer, e.g. by increasing the value of  NRF_SDH_BLE_GAP_EVENT_LENGTH in sdk_config.h

Reply
  • Markl said:
    I guess we really just want to know if eight device pairs is an expected number that can be supported with regard to high speed BLE data transfer, or if there is some parameters(s) we can try adjusting to improve the situation. 

     If you are sending a lot of data, i.e., spending the entire connection event to send packets, and there is no "radio idle" time between connection events/intervals, and you have 8 devices that does this, the channel utilization starts to get high, packet collision can happen, and that will reduce the throughput & bandwidth. The SoftDevice will try to retransmit packets that are not ack’ed on the link layer, so if your application is continuing pushing packets to the SoftDevice, the internal SoftDevice buffer might get full. If that happens, the function sd_ble_gatts_hvx() will return NRF_ERROR_RESOURCES. Over time the central(phone in this case) might be able to set a channel map that reduces the probability of packet collisions. But the application needs to gracefully be able to handle the NRF_ERROR_RESOURCES return code. That said, it might also help to increase the SD buffer, e.g. by increasing the value of  NRF_SDH_BLE_GAP_EVENT_LENGTH in sdk_config.h

Children
No Data
Related