Choosing an Advertising Interval

As mentioned in the article What are Beacons, advertising data is repeatedly transmitted by beacons. The rate at which this happens is determined by the advertising interval, in milliseconds (ms, 1000ms = 1 second). This value can be changed using the Android/iOS app provided by the beacon OEM.

If you set the advertising interval to say 100ms, the advertising data will be sent every 100ms which is 10 times every second. As an aside, many Bluetooth devices add a slight randomisation to the value so that if the transmission happens at the same time as (collides with) another beacon the collision won't happen forever.

The lower you set the advertising interval, the more power the beacon uses over time and hence the greater the battery use. A very very rough generalisation is that the relationship is linear. For example, of you change the value from say 200ms to 100ms than you will use up the battery in very roughly half the time.

At one end of the scale Apple recommend iBeacons transmit at 100ms. It the other end of the scale some beacons transmit, by default, every 1000ms and their specifications quote the battery life with a 1000ms advertising interval.

In order to understand what value to set, you have to think about what the OS (for iOS) or app (for Android) is doing when scanning for beacons. They don't scan all the time so as not to excessively consume the phone battery. If the phone scanning period doesn't correspond with the short time when the beacon happens to be transmitting then it won't be detected. If a beacon isn't detected then it might (or also might not!) get detected on the next scan. You can see that for longer advertising intervals, there is less chance of a beacon being detected within a reasonable time.

If you set the 100ms recommended by Apple, our experience is that, on iOS, you almost always get a detection within 5 secs (when the app is in foreground). As you lengthen the advertising interval there's less chance of the beacon transmit happening when the phone is listening so there are more missed detections. Note that even at 100ms there's a small chance you won't get a detection within a reasonable time because we are dealing with radio signals that can fluctuate due to blocking by objects or interference.

In practice, we have found it's necessary to set the advertising interval to between 300ms and 600ms to maintain a quick detection time. Increase the time further if quick detection time isn't that important in your situation.

A scenario where you might want to decrease the advertising interval is when you want more precise location derived from the RSSI (Received Signal Strength). Reducing the number of scans with missed detections allows more data to be collected and hence will make distance calculations more accurate. However, also see
Determining Location Using Bluetooth Beacons.

Another thing to be considered is that lower advertising intervals cause more phone battery drain but this is less of an issue with newer smartphones. 

Remember that you can, depending on the situation, use USB powered beacons to transmit at the optimum 100ms advertising rate where beacon battery use is not an issue.

A final consideration is the use of multi-advertising beacons that can transmit Eddystone-URL (Physical web), Eddystone-UID, Eddystone-TLM, sometimes 'simultaneously' with iBeacon. It's not really 'simultaneous' as one set of advertising data is sent after the other with proportionally greater use of battery. In practice, most implementations just transmit Eddystone-URL or Eddystone-UID and very few beacons support Eddystone-TLM yet. Also, Physical Web beacons tend to be associated with static things that user stands by for a longer time and hence advertising intervals tend to be set in the range of 700ms to 1000ms.

Tags: ibeacon, eddystone