Bluetooth® Low Energy (BLE) Link Layer Packet Types
Bluetooth® Low Energy Packet Types
The Bluetooth® Low Energy (BLE) Link Layer has only one packet format used for both advertising channel packets and data channel packets.
To see where/how advertising and data channel packets are used in BLE communications, please visit the "Discovery (Advertising and Scanning)" and "Bluetooth Low Energy (BLE) Link Layer Connections" pages.
Advertising Channel PDUs
Advertising channel PDUs serve two purposes:
- Broadcast data for applications that do not require a full connection.
- Discover Slaves and connect to them.
Advertising Channel PDU Types
There are seven advertising channel PDU types, each having a different payload format and function:
- Advertising PDUs
- ADV_IND, ADV_DIRECT_IND, ADV_NONCONN_IND, ADV_SCAN_IND
- Scanning PDUs
- SCAN_REQ, SCAN_RSP
- Initiating PDUs
- CONNECT_REQ
ADV Packet Type | Type of Advertising Supported |
---|---|
ADV_IND | Connectable Undirected Advertising |
ADV_DIRECT_IND | Connectable Directed Advertising |
ADV_NONCONN_IND | Non-Connectable Undirected Advertising |
ADV_SCAN_IND | Scannable Undirected Advertising |
ADV_IND Packet
This packet type supports connectable, undirected advertising and is used when a Slave/Peripheral device is powered up for the first time (i.e., has never connected with a Master) and is looking to connect with any node (it's promiscuous). This typically represents a factory default state.
The payload consists of:
- Advertiser device address (6 bytes)
- Several Advertisement Data Structures with the following format:
- AD Length (1 byte)
- AD Type (1 byte)
- See Bluetooth SIG GAP data types for defined AD data types
- AD Data (up to 29 bytes)
- See Bluetooth core specification supplement for AD data formats
Common AD Data Types
Typically, ADV_IND packets contain the Complete Local Name (Type id 0x09) and 128-bit Service UUID (Type id 0x07).
ADV_DIRECT_IND Packet
This packet type supports connectable, directed advertising and would typically be used after a Slave/Peripheral has connected with a Master/Central. It is not looking to be discovered, rather, it already has the device address of its peer and wishes to re-connect quickly to a specific Master/Central device.
The payload consists of:
- Advertiser device address (6 bytes)
- Scanner device address (6 bytes)
Data Channel PDUs
Once in a connection, devices can send data to one another. This is achieved by exchanging data channel PDUs during regularly scheduled connection events. Due to the protocol overhead of the higher layers, the maximum data payload is 246 bytes as shown:
Data Channel PDU Field ID | Full Name |
---|---|
PDU He | Data PDU Header |
MIC | Message Integrity Check |
L2 He | L2CAP Header |
Op | ATT Operation Code |
Par/Pay | ATT Parameters & Payload |