Bluetooth Scanning API

Meraki APs with an integrated Bluetooth Low Energy (BLE) radio can detect and locate nearby Bluetooth Low Energy devices. This data is then provided via API to third-party applications. Examples of such devices include smartwatches, battery-based beacons, Apple iBeacons, fitness monitors, and remote sensors.  Using the BLE beacons, mobile devices within close proximity are enable to perform various actions including but not limited to customer engagement, asset tracking as well as provide valuable business insight based on location.  Using the UUID and bytes, organizations are able to determine device location, track end-user behaviors or trigger an action such push notifications.  Organization can create use cases for indoor wayfinding and mapping, asset tracking, and more.

Bluetooth clients

Detected devices will also be displayed in the Wireless > Monitor > Bluetooth clients page. The list of BLE clients can be viewed for several different observation time periods (two hours, one day, one week), and displays several useful pieces of information such as the AP that observed the device and, when available, the manufacturer of the device. The dashboard allows tagging the Bluetooth devices to identify individual or groups of devices.

Email alerts

Additional details about each Bluetooth device can be seen on the client details page. The name of the Bluetooth client can also be edited for easier tracking. Email alerts can be enabled to trigger when the device becomes visible by the access point and when the device is no longer visible.

Enable Bluetooth Scanning

Using the physical placement of the access points from the Map & Floorplan on the Dashboard, the Meraki cloud estimates the location of the client. The geo-location coordinates (latitude, longitude) and X,Y location data accuracy can vary based on a number of factors and should be considered a best effort estimate. AP placement, environmental conditions, and client device orientation can influence X,Y estimation; experimentation can help improve the accuracy of results or determine a maximum acceptable uncertainty for data points.

To enable BLE devices to be located, enable the BLE scanning radio on the access points. BLE Scanning is enabled in the Wireless >  Bluetooth Settings > Scanning settings page by selecting “Scanning enabled” in the Scanning section, as shown in Figure 3 below:

Bluetooth API Data Elements

Name Format Description
apMac string MAC address of the observing AP
apTags [string] JSON array of all tags applied to the AP in dashboard
apFloors [string] JSON array of all floorplan names on which this AP appears
clientMac string Device MAC
seenTime ISO 8601 date string Observation time in UTC; example: “1970-01-01T00:00:00Z”
seenEpoch integer Observation time in seconds since the UNIX epoch
rssi integer Device RSSI as seen by AP
location location Device geolocation; null if location could not be determined
lat decimal Device latitude in degrees N of the equator
lng decimal Device longitude in degrees E of the prime meridian
unc decimal Uncertainty in meters
x [decimal] JSON array of x offsets (in meters) from lower-left corner of each floorplan
y [decimal] JSON array of y offsets (in meters) from lower-left corner of each floorplan

Enable the Scanning API with BLE Scanning, and the data will include both WiFi and Bluetooth devices seen by the access points in a single data feed. The event type BluetoothDevicesSeen is used to identify the observations from the Bluetooth radio. Below are the JSON formats used by the Scanning API for Bluetooth devices.

HTTP POST body format

   "data":<event-specific data>

Meraki Setup

The Scanning API is configured in the Meraki Dashboard on the Network Wide > General settings page in a few simple steps:

  1. Turn on the API by selecting Scanning API enabled in the dropdown box.
  2. Specify a post URL and the authentication secret (the secret is used by your HTTP server to validate that the JSON posts are coming from the Meraki cloud)
  3. Specify which Scanning API version your HTTP server is prepared to receive and process.
  4. Configure and host your HTTP server to receive JSON objects.
  5. Upon the first connection, the Meraki cloud will perform a single HTTP GET; the server must return the organization-specific validator string as a response, which will verify the organization’s identity as the Cisco Meraki customer. The Meraki cloud will then begin performing JSON posts.

Protocol flow between Meraki cloud and third-party server:

Meraki Docs

Bluetooth Beaconing

The Cisco Meraki MR30H, MR32, MR33, MR42, MR52, MR53, MR72, MR74 and MR84 WiFi access points have a built-in BLE iBeacon Advertising mode. You can enable the beacon right from the Cloud-hosted dashboard and configure the UUID, Major, and Minor. Meraki’s BLE enabled access points enable customers to begin developing practical applications for BLE devices. For example, you can use the BLE beacon advertising in a mobile app to trigger notifications or determine the position of the smartphone for wayfinding. These can be broadly categorized into ‘push’ applications, where the AP informs an aware device that it is in a certain location, or ‘pull’ applications, where the AP listens for beacons and uses this information to assist with asset tracking and control through the dashboard.

Configuring Beacons

Beacons are periodic signals emitted using Bluetooth Low Energy radio technology and conforming to a specific data packet format. The data packet looks like this:

Field Preamble Access Address Header MAC Address Beacon Prefix UUID Major Minor TX Power CRC
Size 1B 4B 2B 6B 9B 16B 2B 2B 1B 3B

The Preamble, Access Address, Header, MAC Address, and CRC will be set as part of the BLE radio’s frame construction. The TX Power is a calibrated indicator of the RSSI of the transmitted measured at a 1m distance; this can be used for rough estimation of proximity to the device emitting the Beacons.

UUID, Major, and Minor are fields defined by the Beacon network administrator. Typically, an organization will define a unique identifier for their habitual usage: the UUID. All Beacons deployed throughout their locations would have the same UUID.

To differentiate Beacons at different offices or store locations, and Beacons within different areas of those locations, the Major and Minor fields are used. For example, a chain restaurant might decide that all restaurants within a city will share a Major, and each restaurant within that city will have a different Minor.

Meraki APs with an integrated Bluetooth Low Energy radio can emit Beacons with following technical specifications:

  • Beacon interval: 100 ms
  • Transmit power: 0 dBm

Beacon mode can be enabled under Wireless > Configure > Bluetooth Settings by selecting “On” beside Advertising in the Beaconing section, as show in Figure 1 below:

Figure 4: Enabling BLE Beacon advertising
Once advertising is enabled, the UUID, Major, and Minor fields of the Beacon frame can be set. The Major/Minor values can either be set automatically and uniquely assigned on a per-AP basis for the network, or can be assigned globally for all AP’s in the network. When advertising is enabled, Unique mode will be the default setting.

Unique mode will automatically assign the same major value and unique minor values to each AP in the network. If Unique mode is configured on a parent template network, then the networks bound to that template will assign unique major values per network, and unique minor values per AP within those networks.

Saving these settings will activate the BLE Beacon on the Meraki AP’s integrated Bluetooth Low Energy radio.

Figure 5: Setting the BLE Beacon UUID/Major/Minor

Figure 6: Assigning the Unique Major/Minor Values

Figure 7: Assigning the Non-unique Major/Minor Values

Viewing Beacon Values

After the unique or non-unique values have been configured, you can view the assigned values from the Wireless > Bluetooth settings, as shown in the above Figures 6 and 7. Additionally, these values can be retrieved via the Dashboard API as shown below:

curl -L -H 'X-Cisco-Meraki-API-Key: <key>' -X GET -H 'Content-Type: application/json' '[networkId]/devices'

Successful HTTP Status: 200
    "name":"My AP",
    "address":"1600 Pennsylvania Ave",
    "tags":" recently-added ",
    "beaconIdParams": {
      "uuid": "00000000-0000-0000-0000-000000000000",
      "major": 5,
      "minor": 3,

Figure 5: API response after querying the Dashboard API to list the devices in a network