Adafruit's Bluefruit LE modules currently support the following 'Beacon' technologies:

  • Beacon (Apple) via AT+BLEBEACON
  • UriBeacon (Google) via AT+BLEURIBEACON (deprecated)
  • Eddystone (Google) via AT+EDDYSTONE*

Modules can be configured to act as 'Beacons' using the following commands:

AT+BLEBEACON

Codebase Revision: 0.3.0

Parameters: The following comma-separated parameters are required to enable beacon mode:

  • Bluetooth Manufacturer ID (uint16_t)
  • 128-bit UUID
  • Major Value (uint16_t)
  • Minor Value (uint16_t)
  • RSSI @ 1m (int8_t)

Output: None

# Enable Apple iBeacon emulation
# Manufacturer ID = 0x004C
AT+BLEBEACON=0x004C,01-12-23-34-45-56-67-78-89-9A-AB-BC-CD-DE-EF-F0,0x0000,0x0000,-59
OK
# Reset to change the advertising data
ATZ
OK
  
# Enable Nordic Beacon emulation
# Manufacturer ID = 0x0059
AT+BLEBEACON=0x0059,01-12-23-34-45-56-67-78-89-9A-AB-BC-CD-DE-EF-F0,0x0000,0x0000,-59
OK
# Reset to change the advertising data
ATZ
OK
AT+BLEBEACON will cause the beacon data to be stored in non-volatile config memory on the Bluefruit LE module, and these values will be persisted across system resets and power cycles. To remove or clear the beacon data you need to enter the 'AT+FACTORYRESET' command in command mode.

Entering Nordic Beacon emulation using the sample code above, you can see the simulated beacon in Nordic's 'Beacon Config' tool below:

AT+BLEURIBEACON

Converts the specified URI into a UriBeacon advertising packet, and configures the module to advertise as a UriBeacon (part of Google's Physical Web project).

To view the UriBeacon URIs you can use one of the following mobile applications:

Codebase Revision: 0.4.7

Parameters: The URI to encode (ex. http://www.adafruit.com/blog)

Output: None of a valid URI was entered (length is acceptable, etc.).

AT+BLEURIBEACON=http://www.adafruit.com/blog
OK

# Reset to change the advertising data
ATZ
OK

If the supplied URI is too long you will get the following output:

AT+BLEURIBEACON=http://www.adafruit.com/this/uri/is/too/long
URL is too long
ERROR
If the URI that you are trying to encode is too long, try using a shortening service like bit.ly, and encode the shortened URI.
UriBeacon should be considered deprecated as a standard, and EddyStone should be used for any future development. No further development will happen in the Bluefruit LE firmware around UriBeacon.

Deprecated: AT+EDDYSTONEENABLE

This command will enable Eddystone support on the Bluefruit LE module. Eddystone support must be enabled before the other related commands can be used.

Codebase Revision: 0.6.6

Parameters: 1 or 0 (1 = enable, 0 = disable)

Output: The current state of Eddystone support if no parameters are provided (1 = enabled, 0 = disabled)

This command was removed in firmware 0.7.0 to avoid confusion. Use AT+EDDYSTONESERVICEEN in 0.7.0 and higher.
# Enable Eddystone support
AT+EDDYSTONEENABLE=1
OK

# Check the current Eddystone status on the module
AT+EDDYSTONEENABLE
1
OK

AT+EDDYSTONEURL

This command will set the URL for the Eddystone-URL protocol.

Codebase Revision: 0.6.6

Parameters

  • The URL to encode (mandatory)
  • An optional second parameter indicates whether to continue advertising the Eddystone URL even when the peripheral is connected to a central device
  • Firmware 0.6.7 added an optional third parameter for the RSSI at 0 meters value. This should be measured by the end user by checking the RSSI value on the receiving device at 1m and then adding 41 to that value (to compensate for the signal strength loss over 1m), so an RSSI of -62 at 1m would mean that you should enter -21 as the RSSI at 0m.  Default value is -18dBm.

Output: Firmware <= 0.6.6: none.  With firmware >= 0.6.7 running this command with no parameters will return the current URL.

# Set the Eddystone URL to adafruit
AT+EDDYSTONEURL=http://www.adafruit.com
OK
  
# Set the Eddystone URL to adafruit and advertise it even when connected
AT+EDDYSTONEURL=http://www.adafruit.com,1
OK

AT+EDDYSTONECONFIGEN

This command causes the Bluefruit LE module to enable the Eddystone URL config service for the specified number of seconds.

This command should be used in combination with the Physical Web application from Google, available for Android or iOS.  Run this command then select the 'Edit URL' option from the app to change the destination URL over the air.

Codebase Revision: 0.6.6

Parameters: The number of seconds to advertised the config service UUID

Output: None

# Start advertising the Eddystone config service for 5 minutes (300s)
AT+EDDYSTONECONFIGEN=300
OK

AT+EDDYSTONESERVICEEN

Adds or removes the Eddystone service from the GATT table (requires a reset to take effect).

Codebase Revision: 0.7.0

Parameters: Whether or not the Eddystone service should be enabled or not, using on of the following values:

  • on
  • off
  • 1
  • 0

Output: If the command is executed with no parameters it will disable a numeric value indicating whether the service is enabled (1) or disabled (0).

You must perform a system reset for this command to take effect.
# Enable Eddystone service
AT+EddyStonServiceEn=on
OK

AT+EddyStonServiceEn=1
OK

# Disable Eddystone service
AT+EddyStonServiceEn=off
OK

AT+EddyStonServiceEn=0
OK

AT+EDDYSTONEBROADCAST

This command can be used to start of stop advertising the Eddystone payload using the URL stored in non-volatile memory (NVM).

Codebase Revision: 0.7.0

Parameters: Whether or not the payload should be broadcast, using one of the following values:

  • on
  • off
  • 1
  • 0

Output: If executed with no parameters, the current broadcast state will be displayed as a numeric value.

# Enable broadcasting current setting of EddyStone (stored previously on nvm)
AT+EddyStoneBroadcast=on
OK

AT+EddyStoneBroadcast=1
OK
    
# Disable broadcasting current setting of EddyStone (still stored on nvm)
AT+EddyStoneBroadcast=off
OK

AT+EddyStoneBroadcast=0
OK

This guide was first published on Aug 07, 2015. It was last updated on Mar 08, 2024.

This page (Beacon) was last updated on Nov 08, 2014.

Text editor powered by tinymce.