Beacon technologies use the “advertising” mechanism of the Bluetooth Low Energy (BLE) standard. A beacon device sends out a radio packet every short while. Surrounding receiving devices (such as mobile phones) pick up the packet, and receive codes from the beacon to decide what to do for the user.

Apple defines the iBeacon protocol to contain five parts of useful information:

  • iBeacon prefix: a fixed value that identifies the advertising packet as an iBeacon packet.
  • UUID: a 16-byte code that an app specifically “listens” for to identify whether a beacon of interest is nearby.
  • Major: a 2-byte code (256 variations) that typically is used to identify the store where the beacon is installed.
  • Minor: a 2-byte code (256 variations) that typically is used to identify a particular zone inside the store indicated above.
  • Reference RSSI: a (not-so-accurate) signal strength value measured one meter from the beacon. This is used for approximate range measurement.

Google defines its Eddystone protocol in a similar fashion, but with several types of packets. The Eddystone-UID is similar to iBeacon packets, but with a shorter 10-byte “namespace” ID and a 6-byte instance ID. The Eddystone-URL format allows a beacon to directly push an URL (web link) to a mobile phone.

AniBeacon works by allowing the user to arbitrarily configure the content of the BLE advertising packet. By doing so, AniBeacon can trigger response from apps that listens for the iBeacon, Eddystone-UID and Eddystone-URL protocols (and any other BLE-based beacon format).

How does one program an AniBeacon device?