Bluetooth settings and PAwR (Periodic Advertising with Responses)

When calling the bt_conn_le_create_synced function to create a connection to a peripheral, which is synced to the PAwR train,
I get a CONNECTION FAILED TO BE ESTABLISHED (0x3E) error from the connected callback.
This only happens, when I enable persistent Bluetooth configuration in the peripheral (i.e., enable CONFIG_BT_SETTINGS).

Does the CONFIG_BT_SETTINGS option influence the connection process from the PAwR sync train?
Did i miss a crucial Kconfig?

Here is the proj.conf of my peripheral.

#BLE
CONFIG_BT=y
CONFIG_BT_OBSERVER=y
CONFIG_BT_BROADCASTER=y
CONFIG_BT_EXT_ADV=y
CONFIG_BT_PERIPHERAL=y
CONFIG_BT_SMP=y
CONFIG_BT_BONDABLE=y
CONFIG_BT_GAP_PERIPHERAL_PREF_PARAMS=n
CONFIG_BT_CONN_CHECK_NULL_BEFORE_CREATE=y
CONFIG_BT_L2CAP_TX_BUF_COUNT=8
CONFIG_BT_EXT_ADV_LEGACY_SUPPORT=y
CONFIG_BT_EAD=y
CONFIG_BT_SETTINGS=y

#PAWR
CONFIG_BT_PER_ADV_SYNC=y
CONFIG_BT_PER_ADV_SYNC_TRANSFER_SENDER=y
CONFIG_BT_PER_ADV_SYNC_TRANSFER_RECEIVER=y
CONFIG_BT_PER_ADV_SYNC_RSP=y
CONFIG_BT_PER_ADV_SYNC_BUF_SIZE=247

#DIS
CONFIG_BT_DIS=y
CONFIG_BT_DIS_PNP_VID=0x1915
CONFIG_BT_DIS_PNP_PID=0x5484
CONFIG_BT_DIS_PNP=y
CONFIG_BT_DEVICE_NAME="My esl"
CONFIG_BT_DIS_MODEL="Nordic_Lite_ESL"
CONFIG_BT_DIS_MANUF="NordicSemi"

#Memory sizes
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048
CONFIG_MAIN_STACK_SIZE=2048
CONFIG_HEAP_MEM_POOL_SIZE=4096

#Storage
CONFIG_FLASH=y
CONFIG_FLASH_MAP=y
CONFIG_NVS=y
CONFIG_FLASH_PAGE_LAYOUT=y
CONFIG_SETTINGS=y

#OTS
CONFIG_BT_OTS=y
CONFIG_BT_OTS_MAX_OBJ_CNT=0x10
CONFIG_BT_OTS_OACP_WRITE_SUPPORT=y
CONFIG_BT_OTS_OACP_PATCH_SUPPORT=y
CONFIG_BT_OTS_OLCP_GO_TO_SUPPORT=y
CONFIG_BT_OTS_DIR_LIST_OBJ=y

#SPI
CONFIG_SPI=y

#DK IO
CONFIG_DK_LIBRARY=y

#LOG
CONFIG_LOG=y

Any help is greatly appreciated.

  • You can leave the central config unchanged (so also with CONFIG_BT_SETTINGS=y). The problem is only with the peripheral. When executing the esl_c acl scan 1 1 command the central scans for peripherals and syncs with them automatically, though this can take a couple of seconds. This works in the current implementation. When executing esl_c acl connect_esl 0 the central tries to connect to the peripheral with PAwR address 0. This fails if the peripheral has CONFIG_BT_SETTINGS enabled and succeeds otherwise.

    So first check that the peripheral and the central have established a PaWR sync, then try to restablish a connection, then the error should happen.
    You can check the peripheral serial output. It should print SYNCHRONIZED when the sync was successful.

    The tag storage errors are unrelated to this problem. It should work either way.

    Thank you for your effort and please let me know if I can help you further with reproducing the error.

    Best regards,

    Ben

Related