Bluetooth® Low Energy (BLE) Link Layer Packet Types

Last modified by Microchip on 2023/11/10 11:16

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.

Advertising channel packets and data channel packets

BLE packet Protocol Data Unit (PDU) size in specifications v4.0 and v4.1 is 2-39 bytes.

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.

Back to Top

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 Header and Payload

Back to Top

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_IND, ADV_NONCONN_IND, ADV_SCAN_IND packets are used for broadcasting data in broadcast applications (e.g., Beacons).

ADV Packet TypeType of Advertising Supported
ADV_INDConnectable Undirected Advertising
ADV_DIRECT_INDConnectable Directed Advertising
ADV_NONCONN_INDNon-Connectable Undirected Advertising
ADV_SCAN_INDScannable Undirected Advertising

Back to Top

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.

Factory default state advertising PDU

The payload consists of:

Back to Top

Common AD Data Types

Typically, ADV_IND packets contain the Complete Local Name (Type id 0x09) and 128-bit Service UUID (Type id 0x07).

A single 128-bit UUID consumes 16/29 of the bytes available in the ADV_IND payload. If you need to send more advertising data, consider initializing and enabling SCAN_RSP packets in your application.

Back to Top

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.

Only one Master/Central device (with a matching MAC address) will receive/pass ADV_IND_DIRECT messages to its application layer.

​The advertising interval is based on whether Low Duty Cycle or High Duty Cycle mode is used:

  • Low Duty Cycle Directed Advertising
    • The time between the start of two consecutive ADV_DIRECT_PDUs is <= 10 ms.
  • High Duty Cycle Directed Advertising
    • The time between the start of two consecutive ADV_DIRECT_PDUs is <= 3.75 ms.

The Link Layer exits this advertising state after 1.28 s. If no Central responds, the Advertiser will need to re-trigger this advertising mode.

Refer to the BLE 4.2 Specification, Vol 6, Part B, Section 4.4.2.4.

Advertising Channel

The payload consists of:

The Master/Central device must be in the SCANNING state to detect ADV_DIRECT_IND advertising packets.

Back to Top

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:

The maximum data payload is 246 bytes

Data Channel PDU Field IDFull Name
PDU HeData PDU Header
MICMessage Integrity Check
L2 HeL2CAP Header
OpATT Operation Code
Par/PayATT Parameters & Payload

In BLE v4.0 and v4.1, the maximum ATT Parameter+Payload size is 22 bytes.

Back to Top