STM32WB-WBA Filter Accept List

Revision as of 09:31, 24 May 2024 by Registered User (→‎'''For advertiser and scanner''')
Under construction.png Coming soon

1. STM32WB-WBA - Bluetooth® Low Energy Filter Accept List

"Filter Accept List consists in a list of addresses of peer devices that a device intends to interact with."

Security is the first reason.

Bluetooth® Low Energy Filter Accept List
connectivity security filterAccepList.png


Filter Accept List helps reducing power consumption, there is no communication with devices not in the Filter Accept List.

  • Host specifies the required devices to communicate with.
  • Link Layer responds to devices in the Filter Accept List.
  • Interaction between layers are reduced.

Connection Accept List filters devices based on a list of Bluetooth® LE addresses on both central and peripheral side.
If accept list is on the central side, scan results from non-listed devices are dropped and connecting to non-listed devices is not enabled.
If accept list is on the peripheral side, only listed devices can connect and receive scan responses (scan requests and connection requests from non-listed devices are dropped).

2. From advertiser point of view

As soon as a device advertises using aci_gap_set_undirected_connectable command with advertising filter policy parameter set to 0x03: "Allow Scan Request from Filter Accept List Only, Allow Connect Request from Filter Accept List Only".
HCI_LE_ADVERTISING_REPORT events are sent by the device without AD_TYPE_FLAGS but it answers to scan request from devices in Filter Accept List.

3. For advertiser and scanner

To add a device in Filter Accept List:

If devices are bonded:

  • Use aci_gap_get_bonded_devices to know the address type and address of bonded devices, then
  • Use aci_gap_configure_filter_accept_list, which adds bonded devices address and address type to Filter Accept List.

In case devices are not bonded, it is possible to add devices to Filter Accept List using:

  • aci_gap_add_devices_to_list and set Mode parameter either to Append to the Filter Accept List Only (0x02) or to clear and set to Filter Accept List only (0x03)

The Filter Accept List is written in RAM.

4. For scanner

An other possibility is to use for connection:
aci_gap_start_auto_connection_establish_proc
aci_gap_start_selective_connection_establish_proc

These commands allow the adding of devices in filter accept list at connection.
With aci_gap_start_selective_connection_establish_proc command, scanning_filter_policy parameter set to "ignore device not in the whitelist" allows the device to receive LE_ADVERTISING_EVENT from devices in filter accept list.

5. First example: Connection between a smartphone and a STM32WB-WBA

5.1. first phase - add a device in Filter Accept List - connection and pairing

After pairing, smartphones that are using Resolvable Private Address (RPA), modify their own RPA.
For the STM32WB-WBA to be able to resolve the peer address, it is necessary to initialize the device with privacy enable and add peer address to resolving list using aci_gap_add_devices_to resolving_list and aci_gap_configure_filter_accept_list or aci_gap_add_devices_to_list with Mode set to Append to both resolving and Filter Accept List (0x04) or Clear and set both resolving and Filter Accept List (0x05)


5.2. second phase - add a device in Filter Accept List and Resolving List - connection and pairing

connectivity security filterAccepList2.png

6. Second example: Connection between two STM32WB-WBA

6.1. first phase - add a device in Filter Accept List - connection and pairing

6.2. second phase - add a device in Filter Accept List - connection and pairing

7. References