# Using BLE, how fast can I get ~50 bytes of data from the master to a slave? How does that change when increasing the number of slaves present?

In personal project of mine I'm looking to have a system where a number peripherals need to have provided to them, in as real-time as possible, small (~50 bytes max) amounts of information from a central controller. I was considering using low power Bluetooth for this and I'm wondering what kind of performance I could expect. How many times per second could I send this 'packet' of data if there was only one peripheral? What about if the number increases to, say, ten?

You are going to be limited by what is known as the Connection Interval. This defines how often the Central (host) communicates with the Peripheral.

BLE uses a frequency-hopping scheme; two devices each send and receive data from one another on a specific channel, and then meet on a new channel sometime later. The time between the each hop is defined as the Connection Interval.

There can be a maximum of six packets (four for iOS) sent per connection interval, and each packet can have up to 20 bytes of payload. So in your case you would use up three packets, which would fit in one connection interval. You would waste the remaining packets.

According to the BLE specification, the allowable range for the Connection Interval parameter is from 7.5 ms to four seconds. With a minimum Connection Interval of 7.5 ms, you could send theoretically 133 connections per second. So your throughput would be 133*50*8 = 53.2 kb/s. This doesn't count the initial time to establish an initial connection while scanning for Peripheral BLE devices (which will be sending out Advertising packets on a periodic basis). Also, if an ACK has to be sent back to acknowledge receipt of the packets of data, this will require another Connection Interval, and thus halve the data rate.

Note: the Apple iOS guidelines limit the minimum connection interval to 20 ms, not 7.5. So you would only have a maximum of 50 connections per second. In that case the throughput would be 33*50*8 = 20.0 kb/s.