Skip to content

Latest commit

 

History

History
54 lines (36 loc) · 3.01 KB

protocol-specification.md

File metadata and controls

54 lines (36 loc) · 3.01 KB

Eddystone Protocol Specification

Common Elements

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

  • The Service Solicitation data type as defined in The Bluetooth Core Specification Supplement (CSS) v5, Part A, § 1.10. The List of 16 bit Service Solicitation 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 Type High-Order 4 bits Byte Value
UID 0000 0x00
URL 0001 0x10
TLM 0010 0x20

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

An example frame type may look like:

Byte offset Value Description Data Type
0 0x02 Length Flags. CSS v5, Part A, § 1.3
1 0x01 Flags data type value
2 0x06 Flags data
3 0x03 Length Service Solicitation. Ibid. § 1.10
4 0x03 Service Solicitation data type value
5 0xAA 16-bit Eddystone UUID
6 0xFE ...
7 0x?? Length Service Data. Ibid. § 1.11
8 0x16 Service Data data type value
9 0xAA 16-bit Eddystone UUID
10 0xFE ...

With subsequent bytes comprising the frame-specific Service Data.

The individual frame types are listed below.

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

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.

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