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

Scalability of the scan function

We are implementing scan functionality in nRF51. I would like to understand if anyone has tested or tried to scale this functionality when there are thousands of beacons around. So lets say in a set up where we have thousands of beacons scattered near by, and if we try to scan for those beacons and read their advertising packets using nRF51, how far this will scale. We tested with about 300 or so beacons and it works fine. nRF51 is able to scan and pick up signals in just one or max two scan cycles. But we want to know if someone from Nordic can predict how will it function if there are say 4000 beacons around within the range of say 70 sq metres with each of the beacons running at highest transmission power (and hence the range will be high)

How quick is the scan function. How much time does it take to read a signal, report and process it. I have a call back function (adv_report) where i process the advertising data. Is this sequential? Does the scan process wait for this call back to finish?

Appreciate some insights from Nordic staff and other experts who could have dealt with this scenario

Best Prasanna

  • Hi Prasanna

    I don't think we have made experiments with hundreds or event thousands of beacons within range of each other, so my answer is purely based on theory.

    I suspect the bottleneck for how many beacons can be advertising in the same area is the on-air packet collision probability.

    • BLE beacons are BLE advertising packets.
    • Each BLE beacon transmits a single advertising packet on three different advertising channels, i.e. three packets in total.
    • The scanner will listen to one advertising channel when the beacon advertises on the three channels.
    • Each beacon packet transmission takes around 1 millisecond.

    So the on-air collision probability is mostly dependent on the advertising interval you set for your beacons. If you e.g. set beacon to advertise every 1 second, it will occupy 1/1000 of the time domain of each advertising channel. If you have 500 beacons with 1 second advertising inteval, I would guess that you are already at 50% packet collision rate. With 1000 beacons advertising in the range of each other, you are most likely losing most of the packets. This is the most basic probability theory, but perhaps gives an idea to what degree this can be scaled.

    I suspect the scanner will be fast enough, as I would say it gets at least 2 milliseconds to process each beacon message, which is relatively long time, unless you plan to do a lot of processing in the application once you receive the advertising report.

    The nRF51 CPU is mostly available during scanning events.

Related