Setup:
1 NRF21540dk (Receiver)
Multiple custom nRF52840-based Beacons
nRF Connect SDK V2.3.0 + VSCode
Latest Version of Windows 11
Problem:
I'm working on a project which has multiple Beacons that send out (non-connectable) Bluetooth advertisements (both extended and legacy) containing various types of data. There is a receiver, which scans for the advertisements, and then does operations with the data from these advertisements. The program does not use any scanning filters – the first 4 bytes of the advertisement data are used to identify messages from our Beacons. Valid advertisements from our Beacons are handled by the Receiver on a first-come first-served basis (I.e. we are not using work queues or threads), and advertisements that do not come from one of our devices are ignored. Ideally, the Receiver should be able to see and handle the advertisements from all of the Beacons, which brings me to the issue.
The main problem is that when scanning for advertisements, the Receiver tends to only "see" advertisements from one of the Beacons, and rarely "sees" advertisements from the others. For example, If I were to print every advertisement from the Beacons that the Receiver "sees" when scanning along with the corresponding Beacon's MAC address, advertisements from one MAC address (Beacon) would make up at least 95% of the ones printed.
It's almost like the Receiver "latches on" to that one Beacon, or that one Beacon "dominates" all the others. I don't think it's an issue of signal strength or anything of that nature, as tx power is constant for all devices, and the "dominant" Beacon can be 10+ ft away from the receiver, while the other "ignored" Beacons are right next to it.
What could potentially be the cause(s) of this? Are there any things that can be done to remedy this? Is there anything I should try, or are there any best practices to make sure to follow? Thanks.