Hi all,
need to establish a CIS connection to an already connected BLE device with security level >= 2.
However when the ACL connection has security level >= 2 and the host sends the HCI command "HCI_LE_Create_CIS" (0x2064) to the Softdevice, the Softdevice responds with status "Encryption Mode not Acceptable" (0x25).
Is this not supported or am I missing some Kconfig?
Using nRF52840 with NCS 2.9.0.
Flow:
- Connect ACL connection
- Upgrade security level to 2 or 3
- Create CIG
- Create CIS - FAILS
Zephyr Logs:
ACL connection security:
[ 0.904327] <inf> _conn: Security changed for C0:2F:98:7B:3A:84 (random) (level 2)
Creating CIG:
[ 3.940063] <dbg> bt_hci_core: opcode 0x2062 param_len 51
[ 3.940063] <dbg> bt_hci_core: buf 0x20025160
[ 3.940093] <dbg> bt_iso: id 0, latency C to P 50, latency P to C 50, interval C to P 45000, interval P to C 45000, sca 0, packing 0, framing 0, num_cis 4
[ 3.940124] <dbg> bt_iso: [0]: id 0, c_phy 2, c_sdu 247, c_rtn 3, p_phy 2, p_sdu 247, p_rtn 3
[ 3.940155] <dbg> bt_iso: [1]: id 1, c_phy 2, c_sdu 247, c_rtn 3, p_phy 2, p_sdu 247, p_rtn 3
[ 3.940185] <dbg> bt_iso: [2]: id 2, c_phy 2, c_sdu 247, c_rtn 3, p_phy 2, p_sdu 247, p_rtn 3
[ 3.940216] <dbg> bt_iso: [3]: id 3, c_phy 2, c_sdu 247, c_rtn 3, p_phy 2, p_sdu 247, p_rtn 3
[ 3.940216] <dbg> bt_hci_core: buf 0x20025160 opcode 0x2062 len 54
[ 3.940246] <dbg> bt_hci_core: kick TX
[ 3.940277] <dbg> bt_hci_core: TX process start
[ 3.940307] <dbg> bt_hci_core: fetch cmd
[ 3.940307] <dbg> bt_hci_core: Sending command 0x2062 (buf 0x20025160) to driver
[ 3.940338] <dbg> bt_hci_core: buf 0x20025160 len 54 type 0
[ 3.940338] <dbg> bt_sdc_hci_driver:
[ 3.940338] <dbg> bt_sdc_hci_driver:
[ 3.940734] <dbg> bt_sdc_hci_driver: Exit: 0
[ 3.940734] <dbg> bt_hci_core: kick TX
[ 3.940795] <dbg> bt_sdc_hci_driver: Command Complete (0x2062) status: 0x00, ncmd: 1, len 14
[ 3.940826] <dbg> bt_hci_core: buf 0x20024f3c len 16
[ 3.940856] <dbg> bt_hci_core: opcode 0x2062
[ 3.940887] <dbg> bt_hci_core: opcode 0x2062 status 0x00 buf 0x20024f3c
[ 3.940887] <dbg> bt_hci_core: sync cmd released
[ 3.940917] <dbg> bt_hci_core: kick TX
[ 3.941040] <dbg> bt_hci_core: TX process start
[ 3.941040] <dbg> bt_conn: start
[ 3.941040] <dbg> bt_conn: no connection wants to do stuff
[ 3.941101] <dbg> bt_hci_core: rsp 0x20025160 opcode 0x2062 len 11
Creating CIS:
[ 3.941131] <dbg> bt_hci_core: opcode 0x2064 param_len 5
[ 3.941162] <dbg> bt_hci_core: buf 0x20025160
[ 3.941192] <dbg> bt_hci_core: buf 0x20025160 opcode 0x2064 len 8
[ 3.941223] <dbg> bt_hci_core: kick TX
[ 3.941253] <dbg> bt_hci_core: TX process start
[ 3.941253] <dbg> bt_hci_core: fetch cmd
[ 3.941284] <dbg> bt_hci_core: Sending command 0x2064 (buf 0x20025160) to driver
[ 3.941284] <dbg> bt_hci_core: buf 0x20025160 len 8 type 0
[ 3.941314] <dbg> bt_sdc_hci_driver:
[ 3.941314] <dbg> bt_sdc_hci_driver:
[ 3.941375] <dbg> bt_sdc_hci_driver: Exit: 0
[ 3.941375] <dbg> bt_hci_core: kick TX
[ 3.941436] <dbg> bt_sdc_hci_driver: Command Status (0x2064) status: 0x25
[ 3.941467] <dbg> bt_hci_core: buf 0x20024f3c len 6
[ 3.941467] <dbg> bt_hci_core: opcode 0x2064
[ 3.941528] <dbg> bt_hci_core: opcode 0x2064 status 0x25 buf 0x20024f3c
[ 3.941528] <dbg> bt_hci_core: sync cmd released
[ 3.941558] <dbg> bt_hci_core: kick TX
[ 3.941650] <dbg> bt_hci_core: TX process start
[ 3.941680] <dbg> bt_conn: start
[ 3.941680] <dbg> bt_conn: no connection wants to do stuff
[ 3.941772] <wrn> bt_hci_core: opcode 0x2064 status 0x25
[ 3.941772] <dbg> bt_iso: Failed to connect CISes: -5
Relevant prj.conf:
# Security
CONFIG_BT_SMP=y
CONFIG_BT_BONDABLE=y
CONFIG_BT_MAX_PAIRED=5
CONFIG_SETTINGS=y
CONFIG_BT_SETTINGS=y
CONFIG_BT_FIXED_PASSKEY=y
CONFIG_BT_USE_DEBUG_KEYS=n
CONFIG_BT_GATT_AUTO_SEC_REQ=y
# ISO (CIS) configuration
CONFIG_BT_ISO_CENTRAL=y
CONFIG_BT_ISO_PERIPHERAL=y
CONFIG_BT_ISO_TX_MTU=247
CONFIG_BT_ISO_RX_MTU=247
CONFIG_BT_ISO_MAX_CHAN=4
CONFIG_BT_ISO_MAX_CIG=1
CONFIG_BT_ISO_TX_BUF_COUNT=10
CONFIG_BT_ISO_RX_BUF_COUNT=10
CONFIG_BT_CTLR_CONN_ISO_STREAMS_PER_GROUP=4
Any help is highly appreciated.