Eddystone URL Generator

Martin Kompf

Bluetooth Low Energy Beacons are able to transmit web addresses wirelessly to smartphones. The URLs have to be in Eddystone format. This page helps to convert the URLs.

Bluetooth 4.0 Low Energy (BLE) aka Bluetooth Smart allows to transmit so-called advertising frames. Corresponding devices (Beacons) send these frames (or packets) permanently, so that they are readable for all nearby receivers, for example a smartphone. The frames may also carry user data, however their length is limited to 31 bytes. Google specifies under its Physical Web project a special form of user data, that transports a URL in the Eddystone format.

Enter the URL into the form! The length of the encoded URL is limited to 17 bytes, so that the use of URL-shorteners, like goo.gl, is recommended. The tool produces the result as uint8_t array that contains the complete advertising data including the Eddystone service Id.

The form also asks for the transmission power of the beacon. It is also part of the advertising packet and later helps in the determination of the spatially closest beacons and for indoor navigation. (If you do not know this value, then you will find at the end of the article a way to determine it experimentally.)

/* Result: */
uint8_t advdata[] =
  0x03,  // Length of Service List
  0x03,  // Param: Service List
  0xAA, 0xFE,  // Eddystone ID
  0x0A,  // Length of Service Data
  0x16,  // Service Data
  0xAA, 0xFE, // Eddystone ID
  0x10,  // Frame type: URL
  0xEB,  // Power
  0x02,  // http://
  0x07,  // .com

The result contains the complete encoded Eddystone advertising data as uint8_t array that you may directly put into a sketch for the RFduino. The following program example shows a minimal RFduino sketch for advertising a URL generated with the tool:

#include <RFduinoBLE.h>

uint8_t advdata[] = { 0x03, /* ... see above ... */ };

void setup() {
  // set the advertisement data
  RFduinoBLE_advdata = advdata;
  RFduinoBLE_advdata_len = sizeof(advdata);
  RFduinoBLE.advertisementInterval = 300; // ms
  RFduinoBLE.txPowerLevel = -8; // dBm
  // start the BLE stack

void loop() {
  // switch to lower power mode

To receive and test the Eddystone frames you may use, for example, a smartphone with Android 4.4 or higher and a corresponding app. The figures below show the reception of a Eddystone URL with the Physical Web application (left) and the nRF Master Control panel of Nordic Semiconductor (right).


The Physical Web application accesses the encoded URL when receiving a Eddystone frame and displays title and description of the respective website. When you touch the entry, then the web page is opened in the browser. The app is probably intended for end users.

The nRF Master Control Panel on the other hand provides detailed technical parameters of the Beacon, including the measured field strength in dBm. This value is useful for the experimental determination of the transmission power. For this purpose one measures the field strength at a distance of 1 m and adds 41 dBm to it. (41 dBm is the signal loss that occurs over 1 meter.) The app can also handle advertising frames in many different formats, such as iBeacon or RFduino. It is therefore a very useful tool for developers of applications for Bluetooth beacons.