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

Bottleneck?

I'm trying to figure where the BLE bottlenecks are to figure if I should use BLE or maybe Gazell for my product. I've just started to use the BLE stack, so I guess that there's a lot of pitfalls that I havent experienced yet. Anyway, I've tweaked the HTS example to send out more data, and are now getting the figures below:


Columns
1. Payload Bytes
2. MCP Interval ms
3. nRF Interval ms
4. nRF Timer ms
5. Packets per sec
6. Payload per sec
1	20	7,5	10	24	24
1	7,5	7,5	10	59	59
20	20	7,5	10	25	500
20	7,5	7,5	10	59	1180
20	7,5	7,5	3	64	1280

I'm making a product that will use two sensors that are each sending 12 bytes 50 times pr. second. I do have a buffer, so it's not important that they arrive "on time". Anyway, this adds up to 600 bytes per second for each sensor. Now the questions are:

  1. Is it safe to expect that each device can send 1180 bytes per second 2, Isn't there a bottleneck somewhere (MCP maybe) - 1180 bytes per second is nowhere near 120kpbs
  2. Should I send data by using "long data" services - will it bring down the indication overhead
  3. Should I drop indication and live with packet dropouts

With the figures above, I think I'm already too close to the limits, as I might get need for more sensors in the future.

  • The payload is the size of the packet that I'm sending. The Interval's represents the interval setup on each end, the MCP (PC) and BLE Stack (nRF51822). The timer is the application timer interval, used for sending the packets, also on the nRF51822. The example is located in the SDK, and I've modified it to make the test (it's not available anymore, as I use to only have one project for all my research - and it was not under source control at the time). It is located here: Nordic\nrf51822\Board\nrf6310\ble\ble_app_hts

  • By saying "The packets are still ACK-ed on the link layer, so you should not have any data loss", do you mean Notification?

    Why so many posts I've read say otherwise, i.e., no Ack for Notification? Or what they mean is Ack from application level?

Related