Bluetooth Low Energy allows devices to broadcast some information. Such broadcasting is known as Bluetooth LE Advertisement. It is widely used by BLE devices to transmit data without establishing a connection. The advertising is also used during the discovery process and includes important information about Bluetooth-enabled devices.
The common usage of Bluetooth LE Advertising is Bluetooth Beacons. A BLE beacon is a hardware transmitter - a class of Bluetooth Low Energy devices that broadcasts its identifier to nearby portable electronic devices. The technology enables smartphones, tablets, and other devices to perform actions when in close proximity to a beacon. Also, Apple uses Bluetooth LE Advertising in their Continuity protocol.
Bluetooth Framework provides methods to capture and decode Bluetooth LE advertisement packets (also known as frames) as well as build and broadcast your own (custom) advertisements. This feature is supported with Microsoft Bluetooth drivers on Windows 10 and above and with the BLED112 USB Bluetooth dongle on any Windows platform. The library package includes the Beacons sample application that shows how to enable Bluetooth LE advertisements capturing and broadcasting.
Receive BLE Advertisements
Bluetooth Framework provides a class that allows your application to monitor Bluetooth LE devices and to capture their advertisement frames. The class can decode the following Bluetooth LE advertisements (other unknown frames are reported to an application as a raw byte array, so the application can handle any type of frame):
- Appearance
- Basic Information
- Extended Information
- 16 bit Service Data
- 32 bit Service Data
- 128 bit Service Data
- 16 bit Solicitation Service
- 32 bit Solicitation Service
- 128 bit Solicitation Service
- TX Power
- 128 bit UUID
- Alt Beacon
- Eddystone TLM
- Eddystone UID
- Eddystone URL
- Apple Continuity
- Microsoft CDP Beacon
- Drone Remote ID
- Manufacturer Raw
Transmit BLE Advertising
Bluetooth Framework provides a class that switches your application to Bluetooth LE Advertiser mode. The class allows advertising a few predefined advertisements as well as any custom advertisement (there are some restrictions described below).
Supported Advertisement Types
The following advertisement types are reserved and are not allowed:
Data Type | Constant (wclUUIDs) | Description |
---|---|---|
0x00 | LE_GAP_AD_TYPE_NONE | Empty flags |
0x01 | LE_GAP_AD_TYPE_FLAGS | Flags |
0x08 | LE_GAP_AD_TYPE_LOCAL_NAME_SHORT | Shortened Local Name |
0x09 | LE_GAP_AD_TYPE_LOCAL_NAME_COMPLETE | Complete Local Name |
0x1B | LE_GAP_AD_TYPE_ADDRESS | LE Bluetooth Device Address |
0x1C | LE_GAP_AD_TYPE_ROLE | LE Role |
The following advertisement types are system-reserved and are not allowed if the advertisement is used with the Microsoft Bluetooth driver:
Data Type | Constant (wclUUIDs} | Description |
---|---|---|
0x02 | LE_GAP_AD_TYPE_SERVICES_16_MORE | Incomplete List of 16-bit Service UUIDs |
0x03 | LE_GAP_AD_TYPE_SERVICES_16_ALL | Complete List of 16-bit Service Class UUIDs |
0x04 | LE_GAP_AD_TYPE_SERVICES_32_MORE | Incomplete List of 32-bit Service UUIDs |
0x05 | LE_GAP_AD_TYPE_SERVICES_32_ALL | Complete List of 32-bit Service Class UUIDs |
0x06 | LE_GAP_AD_TYPE_SERVICES_128_MORE | Incomplete List of 128-bit Service UUIDs |
0x07 | LE_GAP_AD_TYPE_SERVICES_128_ALL | Complete List of 128-bit Service Class UUIDs |
0x0A | LE_GAP_AD_TYPE_TXPOWER | Tx Power Level |
0x0D | LE_GAP_AD_TYPE_COD | Class of Device |
0x0E | LE_GAP_AD_TYPE_PAIRING_HASH_C | Simple Pairing Hash C192 |
0x0F | LE_GAP_AD_TYPE_PAIRING_RAND_R | Simple Pairing Randomizer R192 |
0x10 | LE_GAP_AD_TYPE_DEVICE_ID | Security Manager TK Values |
0x11 | LE_GAP_AD_TYPE_SM_OOB_FLAGS | Security Manager Out-of-Band Flags |
0x12 | LE_GAP_AD_TYPE_CON_INTERVALS | Slave Connection Interval Range |
0x17 | LE_GAP_AD_TYPE_PUBLIC_TARGET_ADDRESS | Public Target Address |
0x18 | LE_GAP_AD_TYPE_RANDOM_TARGET_ADDRESS | Random Target Address |
0x19 | LE_GAP_AD_TYPE_APPEARANCE | Appearance |
0x1A | LE_GAP_AD_TYPE_ADV_INTERVAL | Advertising Interval |
0x1D | LE_GAP_AD_TYPE_PAIRING_HASH_C_256 | Simple Pairing Hash C256 |
0x1E | LE_GAP_AD_TYPE_PAIRING_RAND_R_256 | Simple Pairing Randomizer R256 |
0x3D | LE_GAP_AD_TYPE_3D_INFO | 3D Information Data |
Extended Advertisement
If your hardware supports Bluetooth 5 and above, Bluetooth Framework allows you to enable the Extended Advertisement Format when used with Microsoft Bluetooth drivers on Windows 10 and above. The Extended Advertisement Format can be enabled by setting the UseExtendedAdvertisement property of the Bluetooth LE Advertiser. When this property is set to True, the three additional properties are used during advertisement:
- Anonymous
If set to True, the device address is not included in the advertisement header. - IncludeTxRssi
If set to True, the transmit power level is included in the advertisement header. - PrefferedTxRssi
If enabled (to disable, set the property's value to -127), requests that the radio use the indicated transmit power level for the advertisement.
If your application enables the Extended Advertisement by setting the UseExtendedAdvertisement property to True but your hardware or OS does not support this feature, the WCL_E_BLUETOOTH_LE_EXT_ADV_NOT_SUPPORTED error will be returned when an application starts the advertisement.