ESP32, Pair Bluetooth Classic with more than 20 devices - arduino

I have a project in which I want to share an information twice or more aday via Bluetooth Classic with about 50 Android devices that use "Simple Bluetooth Terminal" (Every device holder opens the App in proximity of the ESP32 board to get the information).
My concern is with the limitation of Esp32 to pair with no more than 20 devices.
At first test I found that when this limit is exceeded (when I pair with more than 20 devices), it just pairs new devices in places of others (overwrite) FIFO or LIFO, so for my case, every device needs to pair again before any new connection, would this harm the ESP32 board in long term use as is the case with EEPROM that has limited write cycle?
Thanks in advance.

Related

BLE/NRF52 - Connect two BLE-Centrals (Smartphone) with one Peripheral but receive the same notify signal?

I am planning to develop a small project with a NRF52 (or other BLE chip if that'd matter). Preliminary, I would like to know, if I can broadcast data without "abusing" the advertising bytes?
Scenario: Two smartphones connect with my device and they enable some notify-characteristic over which i would like to receive data with a potentially high frequency (up to 100Hz maybe) on both devices. (I know 100Hz is already close to the minimum 7,5ms or so that ble supports... just to say i wanna reach that limit basically and be as fast as possible with receiving)
So: if I connect two central devices, will they receive the same notify signal or will I have to send one for each central device, essentially lowering the max frequency at which i can receive data?
In the latter case, is the best way to broadcast ble data to multiple devices via the advertising bytes?
Kind regards, have a good one
When you use GATT notifications over BLE, the notifications are individual per connection. So if you want to send the same notification to two connected clients, the data is duplicated over the air. In general, all GATT traffic is individual per connection.
If you send one packet per 10 ms to two devices, that should be fine. Note though if one packet is lost, it will be resent during the next connection event and hence then two packes will be sent to that device (assuming you produce an additional packet after 10 ms as usual).
You can use advertising instead to broadcast data. Every device that scans can see your data. Data you send in ADV_IND can be seen by an unlimited amount of scanners.
If it's better to use advertisements or GATT to send data to multiple devices depends on a lot of factors. You should experiment what works best for you.

Bluetooth low energy characteristic access only works once

Im trying to develop a ble application, where a peripheral device (a Ti CC2650LP) reads sensor data via UART and writes them to a characteristic. The central device (a Win 10 PC) reads this characteristic via notification and outputs it in a special software.
My problem is: when I use my test pc everything works fine, but when ich use a different pc with my software i always get the same readings. It seems i cant access the characteristic. Everytime i reconnect the peripheral as a bluetooth device, the reading changes, but the software still only shows this one reading. I can see in my software, that the characteristic gets read but the value doesnt change. I'm pretty sure its a connection issue.
Has anyone had this kind of issue before?

In BLE is there any limitation of Number of BLE devices interacting on Advertise / scan topology or what are the possible limitations?

Recently i have started working on BLE for a upcoming project. i will describe the overall system first.
We have a approx 100 BLE device placed in small compartment (all are within the radio range of each other), and have one central device / gateway which will also has BLE and wifi (within the range of all 100 BLE device). we want to update some small amount of data from all 100 BLE devices to cloud through central device / gateway and vice versa. So the question is :-
which BLE network topology would be best suitable for such application?
If i am going for ADVERTISE / SCAN topology, is it possible to collect the data of all the 100 BLE
device ?
For such number of device is over the air firmware update possible through single gateway ?
IS it possible that gateway can request each BLE device one by on and collect data ?
Basically is it possible to collect data of applox. 100 BLE devicesin connection less mode ?
As we are new to BLE development, correct me if my understating is wrong.
Thanks In Advance !!

Slow detection of radius Network Dot Beacon

I'm trying to use a WiPy board as a BLE scanner and we're detecting some extrange behaviours on radius Network Dot beacons.
We are trying with several beacon manufacturers, all emiting as iBeacon with an advertising interval of 100ms (10 per second). In the board we detected every second at least 4-5 advertising packets of this beacons, but most of the times 0 or 1 of the radius beacon dot.
We've tried with both altBeacon or iBeacon configuration and the results are similar.
This is a screenshot of the configuration with the RadBeacon app:
Are we configuring something wrong or are the beacons having an unexpected behaviour?
Not 100% of advertising packets send out by a Bluetooth LE device will be detected by receiving devices. The actual percentage received depends on a number of factors including:
Transmitter power level
Distance between the two devices
Radio noise in the area
Bluetooth radio congestion
Antennas on both transmitter and receiver
Orientation of antennas
Under good conditions (close range, high transmitter power), I typically see 80-90% of packets get detected by Android and iOS devices which allow you to easily count individual BLE packets.
Since your detection rate is much lower, you may want to try a number of things:
Increase your transmitter power level from -18 dBm to 3 dBm. Having the weakest power output configured is the most likely cause of your issue.
Bring your transmitter and receiver closer together.
If the above two suggestions don't help, I would use an independent tool such as an Android phone to actually count the number of BLE packets detected. I have an bare-bones app you can run on Android to do this here, but you'll need a copy of Android Studio to build and run it.

Is it possible to set several advertisements for the same Bluetooth LE device?

To test bluetooth scalability, I want the same device (a Raspberry Pi or a laptop) to emit several BLE advertisements. So far, I have tried using bleno (NodeJS), hcitool and CoreBluetooth for OSX, but I can not setup more than one.
Is this a hardware/system/bluetooth limitation? Has somebody managed to do this?
Different bluetooth devices have different maximum advertising rates. These typically range from 10Hz to 40Hz. Some bluetooth devices have the ability to spoof their MAC address so different advertisements appear to come from different physical devices. This is often important for scalability testing, because some receivers keep track of unique devices by MAC address.
As #Emil says in his answer, it is possible to "interleave" advertisements such that you change the advertisement (and ideally the MAC address) every few hundred milliseconds so it appears by receiving devices that there are multiple advertisers around. I have done this with both Raspberry Pi and iOS transmitters, but in neither case could I alter the MAC address.
It is important to understand, though, that the actual number of packets received when you do this does not change. So while you may be testing scalability of unique advertisements detected, you will not be doing the same thing as testing with multiple physical advertisers.
That's not possible by the Bluetooth specification. However you can start off with one data then set a timer in your app that stops advertising. Then you start off again with the next data. And so on.

Resources