STM32WB-WBA Enhanced ATT

1. Enhanced ATT (EATT) feature

Enhanced ATT is a Bluetooth® Low Energy 5.2 standard feature: it is implemented for STM32WB and STM32WBA.
Whereas the original Unenhanced Attribute protocol operates in a sequential manner, the Enhanced Attribute Protocol provides a way to perform concurrent/parallel transactions between a Bluetooth® Low Energy client and a server and potentially reduce the latency of operations in some applications.

For example, this is useful on a smartphone where multiple applications may be interfacing with a Bluetooth® Low Energy device.
By using EATT, an application’s Attribute transaction would not be blocked while another application’s ATT transaction is in progress, essentially allowing different applications to interact with a Bluetooth® Low Energy device in parallel and potentially reducing latency.

1.1. Enhanced Attribute Protocol (EATT) new capabilities

• EATT modifies the sequential transaction model, making concurrent ATT transactions possible when conducted over distinct Enhanced ATT bearers.
• EATT uses the L2CAP Enhanced Connection-Oriented Channels mode. This L2CAP mode provides flow control so that EATT can be regarded as reliable.
• MTU values at the ATT layer and L2CAP layer have been made independently configurable, and this may reduce latency experienced by some applications that share the BLE stack with other applications.

1.2. Changes introduced in Bluetooth® Low Energy stack by the introduction of EATT

If EATT is enabled, at GATT initialization, two new characteristics are added to the GATT service:

Client Supported Features (for "Enhanced ATT bearer" and "Multiple Handle Value Notifications)
Server Supported Features (for "EATT Supported")

New GATT information are stored in NVM:

Client Supported Features (for "Enhanced ATT bearer" and "Multiple Handle Value Notifications)

Enhancement of existing GATT commands/events and addition of new GATT commands/events.

1.3. New events

ACI_GATT_EATT_BEARER_EVENT

ACI_GATT_MULT_NOTIFICATION_EVENT

1.4. New commands

ACI_GATT_READ_MULTIPLE_VAR_CHAR_VALUE

ACI_GATT_SEND_MULT_NOTIFICATION

1.5. Enhancement of existing GATT commands and events

Backward compatibility is maintained.
Signification of "Connection Handle" parameter is extended.


1.6. GATT commands and events supporting the enhancement

Refer to Bluetooth®Programming Manual PM0271 [1].

1.7. Flag configuration on STM32WB

To enable EATT feature on STM32WB:
Use SHCI_C2_BLE_INIT_OPTIONS_ENHANCED_ATT_SUPPORTED to configure CFG_BLE_OPTIONS_EXT in app_conf.h

Feature available only in "full extended" ble stack and certified in Cube 1.16.

connectivity EATT MX interface.png


1.8. Flag configuration on STM32WBA

To enable EATT feature on STM32WBA:
Use BLE_OPTIONS_ENHANCED_ATT to initialize "options" field in pInitParams structure in app_ble.c

Feature available only with "full" ble stack and Link Layer and certified in Release 1.2.0.

1.9. how to implement on STM32WB and STM32WBA applications

1. Set the flag and build the application.

2. Set the variable CFG_BLE_NUM_LINK to take into account the number of Bluetooth® Low Energy links + Channel_Number (parameter in ACI_L2CAP_COC_CONNECT command).
This Channel_Number corresponds to the number of "bearers" we want to establish.

Info white.png Information
The number of EATT bearers (Channel_Number parameter) must be taken into account in the number of links defined in app_conf.h file, see CFG_BLE_NUM_LINK define.

3. Pairing and bonding of Bluetooth® Low Energy link.

4. Establish a Connection Oriented Channel (COC) over the Bluetooth® Low Energy link with SPSM = 0x0027.

5. If condition 2. is filled, Channel_Number x ACI_GATT_EATT_BEARER_EVENT are received on central and peripheral sides.

On central side, Channel_Index (in ACI_GATT_EATT_BEARER_EVENT) is included between 0x00 and 0x1F.

On peripheral side, Channel_Index (in ACI_GATT_EATT_BEARER_EVENT) is included between 0x20 and 0x3F.

To address separately each bearer:
The connection handle to apply is between 0xEA00 and 0xEA1F for the central.

The connection handle to apply is between 0xEA20 and 0xEA3F for the peripheral.

2. Example of EATT feature including 5 bearers and data exchange

BLE and COC link establishment with EATT (SPSM=0x0027)


EATT bearers events


GATT data exchange


3. References