nRF5 SDK v13.0.0
Eddystone Beacon Application
This example requires the following SoftDevice: S132

Important: Before you run this example, make sure to program the SoftDevice.

The Eddystone Beacon Application example can be used to turn your nRF5 Development Kit board into an Eddystone Beacon. The application is intended to be used without modifications. When it is running, the beacon can be configured through the Eddystone Configuration Service.

Eddystone protocol

Eddystone is an open beacon format designed by Google that defines a Bluetooth low energy (BLE) message format for proximity beacon messages. See the Eddystone GitHub repository for the protocol specification, the Eddystone Configuration Service specification, and further information. The example application supports all features defined in the specifications except for per-slot variable advertising intervals.

The Eddystone protocol describes different formats for advertising packets, called frame types, that can be used to create beacons. The following frame types are available:

The example provides five advertising slots, and the user can configure each slot to use any of these frame types. There must not be more than one slot of the Eddystone-TLM frame type, but all other frame types can be used in more than one slots. The slot configuration is done through the Eddystone Configuration Service.

Security features

While the Eddystone-UID frame type is broadcast unprotected, the Eddystone-EID frame type provides protection against known beacon vulnerabilities.

The Eddystone-EID frame type randomizes the device ID of the beacon, as well as the encrypted advertising data. This process protects against spoofing and malicious asset tracking, because the encrypted and changing advertising data makes it difficult to fake or track an Eddystone-EID.

If a beacon is configured to broadcast the Eddystone-EID frame type, the Eddystone-TLM frame type is automatically encrypted. Otherwise, the transmitted information would make the device uniquely identifiable. Using encrypted TLM frames also ensures message integrity, which means that you can rely on the telemetry information being sent from the expected beacon. Encrypted Eddystone-TLM is often referred to as Eddystone-eTLM.

Note that you should never use an Eddystone-UID frame type together with Eddystone-EID, because the UID could be used to bypass the security protection.

Setup

You can find the source code and the project file of the example in the following folder: <InstallFolder>\examples\ble_peripheral\ble_app_eddystone

There is no need for you to modify the example code to test the beacon application, because most of the configuration is done through the Eddystone Configuration Service when the beacon is up and running. However, you can configure some basic settings in es_app_config.h. Before going into production, make sure to change the following settings:

Testing

To test the Eddystone Beacon Application, you must install the nRF Beacon for Eddystone Android app. It is available from Google Play and the nRF Beacon for Eddystone GitHub repository.

Test the Eddystone Beacon Application by performing the following steps:

  1. Compile and program the application.
  2. Observe that LED 1 on the board starts blinking and that the board starts broadcasting an Eddystone-URL. You can read the URL with any beacon scanner that is compatible with Eddystone.
  3. Press Button 1 on the board to put the board (resp. beacon) in connectable mode for 60 seconds. Observe that LED 3 is turned on.
  4. Open the nRF Beacon for Eddystone app, then tap the connect button on the update tab. The list of connectable Eddystone beacons is displayed.
  5. Select your device. By default, it is advertising as "nRF5x_Eddystone".
  6. Enter the beacon manufacturer lock code. By default, this code is FFFFFFFFFFFFFFFF (16 F characters).
  7. Observe that after entering the correct lock code, the application reads through all slots and displays the information for each slot. Also observe that LED 2 is turned on.
  8. Test the supported features of the beacon. For example, configure all slots, then perform a factory reset and ensure that the beacon has been reset to its default state.
  9. Test disabling the automatic relocking capability:
    1. In the app, select Lock state and set it to Disable automatic relock.
    2. Disconnect from the device and repeat steps 3 to 5. Observe that you can now unlock the beacon without entering a lock code.

Documentation feedback | Developer Zone | Subscribe | Updated