3. iBeacons
• iBeacon is a BLE profile
specification formalised by
Apple. It is not a standard.
• It can work on all devices
that support Bluetooth LE,
not just iOS.
• 2 primary use cases:
Proximity and Ranging.
• Works indoors.
5. Bluetooth LE Support
• Requires a Bluetooth LE chip. Only newer phones/
tablets has it.
• Windows: Phone 8.1 (?%), Lumia 520, 620, 625,
720
• iOS: 7.0+ (87%), iPhone 4s+, iPad 3rd generation+
• Android: 4.3 (14%), Samsung Galaxy S3+, Nexus
4+
6. iBeacon protocol
• Advertisement bluetooth
package.
• Mac-address is spoofed on
iOS.
• Proximity UUID: 16 byte UUID
• Major: 0 - 65.535
• Minor: 0 - 65.535
• TxPower: Signal Strength at
1m from iBeacon.
7. Detecting a iBeacon
• Can make drive-by-detection hard. Battery matters on both
ends.
• Devices do not talk to each other. Phone simply listens to
heartbeats from iBeacon.
• Scan time and intervals should be non-regular numbers,
eg. scan period of 1.1s. instead of 1s.
8. Detecting proximity
• Just check for existence of the
right combination of
<Proximity UUID, Major,
Minor>
• No guarantee that iBeacon is
unique.
9. Detecting range
• Hard problem. Many scientific papers
on the subject.
• Water blocks bluetooth signals. Guess
what humans are mostly made of?
• Algorithm not known on iOS.
• Thus only rough estimates ->
Immediate, Near, Far.
• Recommendation is to use relative
range instead of absolute.
• “You know if you are close to an
iBeacon, otherwise you don’t know
anything”.
10. Code/SDK’s
• Android doesn’t not provide a common API. Each
app must implement it.
• Androids Geofencing API doesn’t support
iBeacons (yet).
• SDK’s exist that make it easy: Estimote, Radius
Network, Gimbal (soon?).
• Demo app: https://github.com/cmelchior/trifork-
ibeacon-demo
12. Lessons learned
• Android Bluetooth stack is flawed. Crashes when it has
seen 2000 MAC’s: https://code.google.com/p/android/
issues/detail?id=67272
• When monitoring, battery impact is small. It is still
noticeable over a day however. Scan intervals
matters!!!
• Ranging is very unprecise.
• Exit/Entry into a region can happen very frequently due
to scans missing the iBeacon.