Eddystone Protocol Specification

April 14, 2016 · View on GitHub

Common Elements

Every Eddystone frame type must contain the following PDU data types:

  • The Complete List of 16-bit Service UUIDs as defined in The Bluetooth Core Specification Supplement (CSS) v5, Part A, § 1.1. The Complete List of 16-bit Service UUIDs must contain the Eddystone Service UUID of 0xFEAA. This is included to allow background scanning on iOS devices.
  • The Service Data data type, Ibid., § 1.11. The Service Data - 16 bit UUID data type must be the Eddystone Service UUID of 0xFEAA.

The specific type of Eddystone frame is encoded in the high-order four bits of the first octet in the Service Data associated with the Service UUID. Permissible values are:

Frame TypeHigh-Order 4 bitsByte Value
UID00000x00
URL00010x10
TLM00100x20
EID00110x30
RESERVED01000x40

The four low-order bits are reserved for future use and must be 0000.

Note: although the core Bluetooth data type are defined in the standard as little-endian, Eddystone's multi-value bytes defined in the Service Data are all big-endian.

An example frame type may look like:

Byte offsetValueDescriptionData Type
00x02LengthFlags. CSS v5, Part A, § 1.3
10x01Flags data type value
20x06Flags data
30x03LengthComplete list of 16-bit Service UUIDs. Ibid. § 1.1
40x03Complete list of 16-bit Service UUIDs data type value
50xAA16-bit Eddystone UUID
60xFE...
70x??LengthService Data. Ibid. § 1.11
80x16Service Data data type value
90xAA16-bit Eddystone UUID
100xFE...

With subsequent bytes comprising the frame-specific Service Data.

The individual frame types are listed below.

Eddystone-UID

The Eddystone-UID frame broadcasts an opaque, unique 16-byte Beacon ID composed of a 10-byte namespace and a 6-byte instance. The Beacon ID may be useful in mapping a device to a record in external storage. The namespace portion of the ID may be used to group a particular set of beacons, while the instance ID identifies individual devices in the group. The division of the ID into namespace and instance components may also be used to optimize BLE scanning strategies, e.g. by filtering only on the namespace.

Eddystone-URL

The Eddystone-URL frame broadcasts a URL using a compressed encoding format in order to fit more within the limited advertisement packet.

Once decoded, the URL can be used by any client with access to the internet. For example, if an Eddystone-URL beacon were to broadcast the URL https://goo.gl/Aq18zF, then any client that received this packet could choose to visit that url.

The Eddystone-URL frame forms the backbone of the Physical Web, an effort to enable frictionless discovery of web content relating to one’s surroundings. Eddystone-URL incorporates all of the learnings from the UriBeacon format from which it evolved.

Eddystone-TLM

The Eddystone-TLM frame broadcasts telemetry information about the beacon itself such as battery voltage, device temperature, and counts of broadcast packets.

Eddystone-EID

The Eddystone-EID frame broadcasts an encrypted ephemeral identifier that changes periodically at a rate determined during the initial registration with a web service. The broadcast ephemeral ID can be resolved remotely by the service with which it was registered, but to other observers appears to be changing randomly. This frame type is intended for use in security and privacy-enhanced devices.