February 18, 2015

Estimote Beacons: Expected Behavior, Challenges, and Improvement Areas

Beacon technology, as we all know, is one of the most talked about technologies in recent years. It is already used successfully at places like airports, film festivals, and Apple and Macy’s stores. The number of beacon manufacturers is increasing rapidly, too. The major beacon hardware present in the market are Estimote, Gimbal, Gelo, Glimworm, BlueSense, and Kontakt. Among these, Estimote is one of the largest and most well-known manufacturers of beacon hardware. So, we decided to test the beacons and see what all can be achieved using this technology.

We made an application for meeting room tracking in an office. Beacons were installed in all meeting rooms. On entering any room, the app would notify the server with the details of the detected beacon and the meeting room’s occupancy would be updated in the backend. So, if any employee had to set an impromptu meeting, he/she could check the application to see the available rooms. Environment details for this demo were as follows: Estimote beacons using Firmware Version: A2.1 & Hardware Version: D3.4. We built an iPhone 5 application (iOS 8.2) using the CoreLocation Framework.

While working on beacons, we observed several unusual behaviors and unexpected problems, some of which I will cover below.

Common Behavior of Estimote Beacons:

Estimote beacons are one of the most well-known and easiest-to-configure beacons that are available in the market. The various parameters that can be configured for each beacon and their common behavior are:

  1. Broadcasting Power: The broadcasting power of a beacon decides the range of its signals, and it can be configured such that the range of signals can be varied from approximately 2 meters to 70 meters. But as the signal strength of the beacons are significantly affected by obstacles, in most of the indoor locations the signals can generally be received till 40-50 m only.
  2. Proximity: The proximity of a device from a beacon is represented as one of the three zones – Immediate (0-50 cm), Near (0.5 – 3 m) and Far (>3 m). Although the zones remain fixed irrespective of a beacon’s broadcasting power, there is a huge variation in shown proximity as compared to the actual one. The signal strength is affected by several factors. Some of them are:
  • Obstacles between a user and the beacon. All objects behave as obstacles for signal strength, the most significant effect of which is caused by human body itself. Even a single person standing between beacon and user can decrease the signal strength drastically.
  • Orientation of mobile phone. The signal strength is affected even by the orientation of a mobile phone, depending on the side of mobile facing the beacon.
  • Placement of mobile phone. Whether the mobile phone is in the user’s hand or in the pocket can also severely affect the strength of the signals received by the phone. So, two users – one with the mobile phone in his hand and the other with it in his or her pocket – standing at the same distance are considered to be standing at a noticeably different distance.

Because of the above mentioned reasons, it was observed several times that the closer beacon was shown to be at a greater distance as compared to another beacon.


  1. Battery Drainage of mobile phone – Any application working on Beacon Technology requires both Bluetooth and location services to be active. This results in considerable battery drainage over a period of time, depending on the application’s requirement. The battery drainage can be considered to be approximately 10% per hour in an average application.
  2. Consistency in Beacon Detection – The interaction between application and beacons is generally not very smooth and every once in a while, inconsistent observations are obtained. The irregularity in consistent behavior increases with decreasing life of beacons. In our experiments, the beacon’s proximity was found to be continuously switching the ranges from immediate/near to unknown/far even when the mobile phone was kept next to the beacons.

Ways to Improve Experience:

Even after the above mentioned non-ideal behavior of beacons and inconsistency in beacon technology, we can include several logics to minimize the adverse effects.

  1. Proximity: Beacons should always be installed at a position so as to reduce the number of barriers between beacons and users. Since the human body also works as a major obstruction for the signals, beacons should preferably be installed at a higher position.
    To nullify the variation in proximity, because of device’s orientation, over a period of time, we should take the average of some aggregated readings over a short time interval and create all logics in the application on that averaged value.
  2. Continuous ranging for beacons: Mobile devices generally use two ways to interact with beacons:
    a. Monitoring: Monitoring a beacon refers to identifying the instances when a device enters or exits the range of beacons. Each beacon consists of a region which is defined in terms of the combination of UUID, Major and Minor of a beacon. It is generally defined to be the same for multiple beacons and its range depends on the strength of signals by beacons.
    b. Ranging: Monitoring only tells which region the device has entered into. So, if several beacons have the same region, as is generally the case, it isn’t enough to identify which beacon’s signals are being detected. So, once a device enters a beacon region, the process of ranging starts, which fetches the details of beacons, signal strength and the device’s proximity from them. Generally, an application stops ranging and just monitors for beacons when it is not inside any beacon region. But once ranging is stopped, it takes some time to start ranging again (usually 30 seconds to 1 minute, but sometimes can be up to 15 minutes too) after a beacon region is entered again. This causes the applications tracking a user’s movement to give the wrong results. So, if we want an application to keep on ranging for the beacons, the ranging should be started as soon as monitoring is started and the method to stop ranging should never be called.
  1. Consistency: As mentioned above, fluctuations are continuously observed in the beacon detection. But, we can still make a robust application by ensuring that the fluctuations are ignored. To achieve this, instead of taking into consideration only the latest detection, we should consider the values obtained over a certain period of time.

For example, consider the case where we have to track meeting rooms’ occupancy in an office and the time period is fixed to 1 minute. Let’s say an employee is detected by Beacon1 and is considered to be in Room1. After that, the app will keep a tab on the subsequent detection for one minute before updating anything. If in that one minute, the Beacon1 wasn’t detected even once, the app will notify the server to make an exit for the user. If the beacon was detected even once, the app will consider the employee to be in the same room.

Beacon technology has its challenges, but the scope for it in the market is also very large. Most of the challenges can be solved using the techniques described above, and Bluetooth LE is bound to become one of the most useful technologies in the future.