]> granicus.if.org Git - esp-idf/commitdiff
componnent/ble_mesh: Use duplicate scan in ESP BLE Mesh
authorlly <lly@espressif.com>
Thu, 14 Feb 2019 07:34:03 +0000 (15:34 +0800)
committerlly <lly@espressif.com>
Fri, 19 Apr 2019 09:01:13 +0000 (17:01 +0800)
17 files changed:
components/bt/Kconfig
components/bt/ble_mesh/mesh_core/adv.c
components/bt/ble_mesh/mesh_core/adv.h
components/bt/ble_mesh/mesh_core/include/mesh_bearer_adapt.h
components/bt/ble_mesh/mesh_core/mesh_bearer_adapt.c
components/bt/ble_mesh/mesh_core/mesh_main.c
components/bt/ble_mesh/mesh_core/net.c
components/bt/ble_mesh/mesh_core/prov.c
components/bt/ble_mesh/mesh_core/provisioner_prov.c
examples/bluetooth/ble_mesh/ble_mesh_client_model/sdkconfig.defaults
examples/bluetooth/ble_mesh/ble_mesh_console/ble_mesh_node/sdkconfig.defaults
examples/bluetooth/ble_mesh/ble_mesh_console/ble_mesh_provisioner/sdkconfig.defaults
examples/bluetooth/ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_client/sdkconfig.defaults
examples/bluetooth/ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_server/sdkconfig.defaults
examples/bluetooth/ble_mesh/ble_mesh_node/sdkconfig.defaults
examples/bluetooth/ble_mesh/ble_mesh_provisioner/sdkconfig.defaults
examples/bluetooth/ble_mesh/ble_mesh_wifi_coexist/sdkconfig.defaults

index 9bf12da006ced1867cb2356d4133a58c538a8815..56eef0423390329c9884e9ddb083d948e62497a3 100644 (file)
@@ -1290,6 +1290,19 @@ menuconfig BT_MESH
 
 if BT_MESH
 
+comment "Note: If using Duplicate Scan, set Scan Duplicate Type to 0x2"
+config BT_MESH_USE_DUPLICATE_SCAN
+    bool "Support Duplicate Scan in BLE Mesh"
+    select BLE_SCAN_DUPLICATE
+    select BLE_MESH_SCAN_DUPLICATE_EN
+    default y
+    help
+        Enable this option to allow using specific duplicate scan filter
+        in BLE Mesh, Scan Duplicate Type must be set to 0x02.
+        make menuconfig -> Component config -> Bluetooth -> Bluetooth
+        controller -> Scan Duplicate Type -> Scan Duplicate By Device
+        Address And Advertising Data.
+
 config BT_MESH_FAST_PROV
     bool "Enable BLE Mesh Fast Provisioning"
     select BT_MESH_NODE
index ee4725f2bb9c3a7506ccc0b4438a3543b51232b7..b0414e16f13de8c1e7a8c8cb60d21a1a160c0253 100644 (file)
@@ -421,6 +421,22 @@ int bt_mesh_scan_enable(void)
     return bt_le_scan_start(&scan_param, bt_mesh_scan_cb);
 }
 
+#if defined(CONFIG_BT_MESH_USE_DUPLICATE_SCAN)
+int bt_mesh_duplicate_scan_enable(void)
+{
+    struct bt_le_scan_param scan_param = {
+        .type       = BT_HCI_LE_SCAN_PASSIVE,
+        .filter_dup = BT_HCI_LE_SCAN_FILTER_DUP_ENABLE,
+        .interval   = MESH_SCAN_INTERVAL,
+        .window     = MESH_SCAN_WINDOW
+    };
+
+    BT_DBG("%s", __func__);
+
+    return bt_le_scan_start(&scan_param, bt_mesh_scan_cb);
+}
+#endif
+
 int bt_mesh_scan_disable(void)
 {
     BT_DBG("%s", __func__);
index cd225cbd0df99cc4c80017854d2df9bcc5187786..512b90b5f1b5176aab630a27a61a8ee13734306a 100644 (file)
@@ -76,6 +76,8 @@ void bt_mesh_adv_init(void);
 
 int bt_mesh_scan_enable(void);
 
+int bt_mesh_duplicate_scan_enable(void);
+
 int bt_mesh_scan_disable(void);
 
 void ble_mesh_task_post(ble_mesh_msg_t *msg, uint32_t timeout);
index db158cae3f56a574460c72b81a2ee47c22d5c0c1..1c54a372a80c573ddff5f8b144fe0e5a5f81a5f5 100644 (file)
@@ -832,5 +832,30 @@ int bt_encrypt_le(const u8_t key[16], const u8_t plaintext[16],
 int bt_encrypt_be(const u8_t key[16], const u8_t plaintext[16],
                   u8_t enc_data[16]);
 
+enum {
+    BT_MESH_EXCEP_LIST_ADD = 0,
+    BT_MESH_EXCEP_LIST_REMOVE,
+    BT_MESH_EXCEP_LIST_CLEAN,
+};
+
+enum {
+    BT_MESH_EXCEP_INFO_ADV_ADDR = 0,
+    BT_MESH_EXCEP_INFO_MESH_LINK_ID,
+    BT_MESH_EXCEP_INFO_MESH_BEACON,
+    BT_MESH_EXCEP_INFO_MESH_PROV_ADV,
+    BT_MESH_EXCEP_INFO_MESH_PROXY_ADV,
+};
+
+enum {
+    BT_MESH_EXCEP_CLEAN_ADDR_LIST           = BIT(0),
+    BT_MESH_EXCEP_CLEAN_MESH_LINK_ID_LIST   = BIT(1),
+    BT_MESH_EXCEP_CLEAN_MESH_BEACON_LIST    = BIT(2),
+    BT_MESH_EXCEP_CLEAN_MESH_PROV_ADV_LIST  = BIT(3),
+    BT_MESH_EXCEP_CLEAN_MESH_PROXY_ADV_LIST = BIT(4),
+    BT_MESH_EXCEP_CLEAN_ALL_LIST            = 0xFFFF,
+};
+
+int bt_mesh_update_exceptional_list(u8_t sub_code, u8_t type, void *info);
+
 #endif /* #ifndef __MESH_BEARER_ADRPT_H__ */
 
index f4dae675b8288142bd9130fc1ec938bd7b6c7918..557307776424e00dc4801d3509a2a68caf272ed9 100644 (file)
@@ -259,7 +259,7 @@ static bool valid_le_scan_param(const struct bt_le_scan_param *param)
     return true;
 }
 
-static int start_le_scan(u8_t scan_type, u16_t interval, u16_t window)
+static int start_le_scan(u8_t scan_type, u16_t interval, u16_t window, u8_t filter_dup)
 {
     int err = 0;
 
@@ -330,13 +330,8 @@ static int start_le_scan(u8_t scan_type, u16_t interval, u16_t window)
 
     /*TODO: Need to process scan_param_setup_cback
      * Need to add menuconfig for duplicate scan*/
-#if defined(CONFIG_BLE_MESH_SCAN_DUPLICATE_EN) && CONFIG_BLE_MESH_SCAN_DUPLICATE_EN
     BTM_BleSetScanFilterParams(client_if, interval, window, scan_type, addr_type_own,
-                               BT_HCI_LE_SCAN_FILTER_DUP_ENABLE, scan_fil_policy, NULL);
-#else
-    BTM_BleSetScanFilterParams(client_if, interval, window, scan_type, addr_type_own,
-                               BT_HCI_LE_SCAN_FILTER_DUP_DISABLE, scan_fil_policy, NULL);
-#endif
+                               filter_dup, scan_fil_policy, NULL);
 
     /*TODO: Need to process p_start_stop_scan_cb to check if start successfully */
     /* BLE Mesh scan permanently, so no duration of scan here */
@@ -725,7 +720,7 @@ int bt_le_scan_start(const struct bt_le_scan_param *param, bt_le_scan_cb_t cb)
     }
 #endif
 
-    err = start_le_scan(param->type, param->interval, param->window);
+    err = start_le_scan(param->type, param->interval, param->window, param->filter_dup);
     if (err) {
 #if BT_DEV
         atomic_clear_bit(bt_dev.flags, BT_DEV_EXPLICIT_SCAN);
@@ -2153,5 +2148,33 @@ int bt_encrypt_be(const u8_t key[16], const u8_t plaintext[16],
 #endif /* CONFIG_MBEDTLS_HARDWARE_AES */
 }
 
+#if defined(CONFIG_BT_MESH_USE_DUPLICATE_SCAN)
+int bt_mesh_update_exceptional_list(u8_t sub_code, u8_t type, void *info)
+{
+    BD_ADDR value = {0};
+
+    if ((sub_code > BT_MESH_EXCEP_LIST_CLEAN) ||
+        (type > BT_MESH_EXCEP_INFO_MESH_PROXY_ADV)) {
+        BT_ERR("%s, Invalid parameter", __func__);
+        return -EINVAL;
+    }
+
+    if (type == BT_MESH_EXCEP_INFO_MESH_LINK_ID) {
+        if (!info) {
+            BT_ERR("%s, NULL Provisioning Link ID", __func__);
+            return -EINVAL;
+        }
+        memcpy(value, info, sizeof(u32_t));
+    }
+
+    BT_DBG("%s, %s type 0x%x", __func__, sub_code ? "Remove" : "Add", type);
+
+    /* The parameter "device_info" can't be NULL in the API */
+    BLE_MESH_BTM_CHECK_STATUS(BTM_UpdateBleDuplicateExceptionalList(sub_code, type, value, NULL));
+
+    return 0;
+}
+#endif
+
 #endif /* #if CONFIG_BT_MESH */
 
index 0684dc5ecf2ed9e11ae9a21cdf16d1b5862c0fd5..9ce7a630b448a027f23098ce47e79f65ea762117 100644 (file)
@@ -97,10 +97,21 @@ int bt_mesh_provision(const u8_t net_key[16], u16_t net_idx,
     /* Add this to avoid "already active status" for bt_mesh_scan_enable() */
     bt_mesh_scan_disable();
 
+#if defined(CONFIG_BT_MESH_USE_DUPLICATE_SCAN)
+    /* Add Mesh beacon type (Secure Network Beacon) to the exceptional list */
+    bt_mesh_update_exceptional_list(BT_MESH_EXCEP_LIST_ADD,
+        BT_MESH_EXCEP_INFO_MESH_BEACON, NULL);
+#endif
+
     if (IS_ENABLED(CONFIG_BT_MESH_LOW_POWER)) {
+        /* TODO: Enable duplicate scan in Low Power Mode */
         bt_mesh_lpn_init();
     } else {
+#if defined(CONFIG_BT_MESH_USE_DUPLICATE_SCAN)
+        bt_mesh_duplicate_scan_enable();
+#else
         bt_mesh_scan_enable();
+#endif
     }
 
     if (IS_ENABLED(CONFIG_BT_MESH_FRIEND)) {
@@ -181,7 +192,11 @@ int bt_mesh_prov_enable(bt_mesh_prov_bearer_t bearers)
     if (IS_ENABLED(CONFIG_BT_MESH_PB_ADV) &&
             (bearers & BT_MESH_PROV_ADV)) {
         /* Make sure the scanning is for provisioning invitations */
+#if defined(CONFIG_BT_MESH_USE_DUPLICATE_SCAN)
+        bt_mesh_duplicate_scan_enable();
+#else
         bt_mesh_scan_enable();
+#endif
         /* Enable unprovisioned beacon sending */
         bt_mesh_beacon_enable();
     }
@@ -242,11 +257,34 @@ int bt_mesh_provisioner_enable(bt_mesh_prov_bearer_t bearers)
         return err;
     }
 
+#if defined(CONFIG_BT_MESH_USE_DUPLICATE_SCAN)
+    if (IS_ENABLED(CONFIG_BT_MESH_PB_ADV) &&
+            (bearers & BT_MESH_PROV_ADV)) {
+        bt_mesh_update_exceptional_list(BT_MESH_EXCEP_LIST_ADD,
+            BT_MESH_EXCEP_INFO_MESH_BEACON, NULL);
+    }
+
+    if (IS_ENABLED(CONFIG_BT_MESH_PB_GATT) &&
+            (bearers & BT_MESH_PROV_GATT)) {
+        bt_mesh_update_exceptional_list(BT_MESH_EXCEP_LIST_ADD,
+            BT_MESH_EXCEP_INFO_MESH_PROV_ADV, NULL);
+    }
+
+    if (IS_ENABLED(CONFIG_BT_MESH_PROXY)) {
+        bt_mesh_update_exceptional_list(BT_MESH_EXCEP_LIST_ADD,
+            BT_MESH_EXCEP_INFO_MESH_PROXY_ADV, NULL);
+    }
+#endif
+
     if ((IS_ENABLED(CONFIG_BT_MESH_PB_ADV) &&
             (bearers & BT_MESH_PROV_ADV)) ||
             (IS_ENABLED(CONFIG_BT_MESH_PB_GATT) &&
              (bearers & BT_MESH_PROV_GATT))) {
+#if defined(CONFIG_BT_MESH_USE_DUPLICATE_SCAN)
+        bt_mesh_duplicate_scan_enable();
+#else
         bt_mesh_scan_enable();
+#endif
     }
 
     if (IS_ENABLED(CONFIG_BT_MESH_PB_GATT) &&
index be7f753954ed05a9f096bb75fa84411ea8e4c636..f58a8c816d9f05101a769dc92b9bf95a8221a956 100644 (file)
@@ -1478,10 +1478,21 @@ void bt_mesh_net_start(void)
         bt_mesh_adv_update();
     }
 
+#if defined(CONFIG_BT_MESH_USE_DUPLICATE_SCAN)
+    /* Add Mesh beacon type (Secure Network Beacon) to the exceptional list */
+    bt_mesh_update_exceptional_list(BT_MESH_EXCEP_LIST_ADD,
+        BT_MESH_EXCEP_INFO_MESH_BEACON, NULL);
+#endif
+
     if (IS_ENABLED(CONFIG_BT_MESH_LOW_POWER)) {
+        /* TODO: Enable duplicate scan in Low Power Mode */
         bt_mesh_lpn_init();
     } else {
+#if defined(CONFIG_BT_MESH_USE_DUPLICATE_SCAN)
+        bt_mesh_duplicate_scan_enable();
+#else
         bt_mesh_scan_enable();
+#endif
     }
 
     if (IS_ENABLED(CONFIG_BT_MESH_FRIEND)) {
index 8247984b0cf6e86678ae4907e8fe647630c38e32..d0dd7f5a3a452038db9b0c2f5fdef8229e434d0b 100644 (file)
@@ -263,6 +263,12 @@ static void reset_link(void)
         prov->link_close(BT_MESH_PROV_ADV);
     }
 
+#if defined(CONFIG_BT_MESH_USE_DUPLICATE_SCAN)
+    /* Remove the link id from exceptional list */
+    bt_mesh_update_exceptional_list(BT_MESH_EXCEP_LIST_REMOVE,
+        BT_MESH_EXCEP_INFO_MESH_LINK_ID, &link.id);
+#endif
+
     /* Clear everything except the retransmit delayed work config */
     memset(&link, 0, offsetof(struct prov_link, tx.retransmit));
 
@@ -1323,6 +1329,12 @@ static void link_open(struct prov_rx *rx, struct net_buf_simple *buf)
     atomic_set_bit(link.flags, LINK_ACTIVE);
     net_buf_simple_init(link.rx.buf, 0);
 
+#if defined(CONFIG_BT_MESH_USE_DUPLICATE_SCAN)
+    /* Add the link id into exceptional list */
+    bt_mesh_update_exceptional_list(BT_MESH_EXCEP_LIST_ADD,
+        BT_MESH_EXCEP_INFO_MESH_LINK_ID, &link.id);
+#endif
+
     bearer_ctl_send(LINK_ACK, NULL, 0);
 
     link.expect = PROV_INVITE;
index aecbec3500cc93b3341ef93a933be585ad5ea96d..2d165c7d32509a3a7e2a7de321bee3571784bfc6 100644 (file)
@@ -1077,6 +1077,12 @@ static void reset_link(int i, u8_t reason)
 
     prov_memory_free(i);
 
+#if defined(CONFIG_BT_MESH_USE_DUPLICATE_SCAN)
+    /* Remove the link id from exceptional list */
+    bt_mesh_update_exceptional_list(BT_MESH_EXCEP_LIST_REMOVE,
+        BT_MESH_EXCEP_INFO_MESH_LINK_ID, &link[i].link_id);
+#endif
+
     /* Clear everything except the retransmit delayed work config */
     memset(&link[i], 0, offsetof(struct prov_link, tx.retransmit));
 
@@ -1231,6 +1237,12 @@ static void send_link_open(void)
         }
     }
 
+#if defined(CONFIG_BT_MESH_USE_DUPLICATE_SCAN)
+    /* Add the link id into exceptional list */
+    bt_mesh_update_exceptional_list(BT_MESH_EXCEP_LIST_ADD,
+        BT_MESH_EXCEP_INFO_MESH_LINK_ID, &link[i].link_id);
+#endif
+
     bearer_ctl_send(i, LINK_OPEN, link[i].uuid, 16);
 
     /* Set LINK_ACTIVE just to be in compatibility with  current Zephyr code */
index ccec2ba49eef8cdf6a27c019722b6fed66df48dc..365ccbe944367acd822ddaa6dd5d1768e6622a53 100644 (file)
@@ -1,7 +1,13 @@
 # Override some defaults so BT stack is enabled
 # by default in this example
 CONFIG_BT_ENABLED=y
+CONFIG_BLE_SCAN_DUPLICATE=y
+CONFIG_SCAN_DUPLICATE_TYPE=2
+CONFIG_DUPLICATE_SCAN_CACHE_SIZE=200
+CONFIG_BLE_MESH_SCAN_DUPLICATE_EN=y
+CONFIG_MESH_DUPLICATE_SCAN_CACHE_SIZE=200
 CONFIG_BT_MESH=y
+CONFIG_BT_MESH_USE_DUPLICATE_SCAN=y
 CONFIG_BT_MESH_NODE=y
 CONFIG_BT_MESH_PROV=y
 CONFIG_NET_BUF_POOL_USAGE=y
index 1bc06c97de5adae44bd29211cee6ef3060a54635..56ab57107fc03c203b61d3c814f00ee57781b017 100644 (file)
@@ -4,7 +4,13 @@ CONFIG_CONSOLE_UART_BAUDRATE=921600
 CONFIG_ESPTOOLPY_BAUD_921600B=y
 CONFIG_MONITOR_BAUD_921600B=y
 CONFIG_BT_ENABLED=y
+CONFIG_BLE_SCAN_DUPLICATE=y
+CONFIG_SCAN_DUPLICATE_TYPE=2
+CONFIG_DUPLICATE_SCAN_CACHE_SIZE=200
+CONFIG_BLE_MESH_SCAN_DUPLICATE_EN=y
+CONFIG_MESH_DUPLICATE_SCAN_CACHE_SIZE=200
 CONFIG_BT_MESH=y
+CONFIG_BT_MESH_USE_DUPLICATE_SCAN=y
 CONFIG_BT_MESH_NODE=y
 CONFIG_BT_MESH_PROV=y
 CONFIG_NET_BUF_POOL_USAGE=y
index 310070047abdc1834620591bb2c9b4e9ad0a377a..146915e24ddd3d9b11cd6c7c953d2912638fdfdc 100644 (file)
@@ -1,7 +1,13 @@
 # Override some defaults so BT stack is enabled
 # by default in this example
 CONFIG_BT_ENABLED=y
+CONFIG_BLE_SCAN_DUPLICATE=y
+CONFIG_SCAN_DUPLICATE_TYPE=2
+CONFIG_DUPLICATE_SCAN_CACHE_SIZE=200
+CONFIG_BLE_MESH_SCAN_DUPLICATE_EN=y
+CONFIG_MESH_DUPLICATE_SCAN_CACHE_SIZE=200
 CONFIG_BT_MESH=y
+CONFIG_BT_MESH_USE_DUPLICATE_SCAN=y
 CONFIG_BT_MESH_PROV=y
 CONFIG_BT_MESH_PROVISIONER=y
 CONFIG_BT_MESH_UNPROV_DEV_ADD=20
index 06acfe124193269b70bfaff6ff54a89d032fbe24..cbd75f168f585b34cce9dd95ac64791a5bc66ced 100644 (file)
@@ -1,7 +1,13 @@
 # Override some defaults so BT stack is enabled
 # by default in this example
 CONFIG_BT_ENABLED=y
+CONFIG_BLE_SCAN_DUPLICATE=y
+CONFIG_SCAN_DUPLICATE_TYPE=2
+CONFIG_DUPLICATE_SCAN_CACHE_SIZE=200
+CONFIG_BLE_MESH_SCAN_DUPLICATE_EN=y
+CONFIG_MESH_DUPLICATE_SCAN_CACHE_SIZE=200
 CONFIG_BT_MESH=y
+CONFIG_BT_MESH_USE_DUPLICATE_SCAN=y
 CONFIG_BT_MESH_PROV=y
 CONFIG_BT_MESH_PROVISIONER=y
 CONFIG_BT_MESH_UNPROV_DEV_ADD=10
index 96405cd4de9eb7a96fc989d7b523539b10315771..a867c0743a10e6c4b4c2574b1fbe9d0d08da184e 100644 (file)
@@ -1,7 +1,13 @@
 # Override some defaults so BT stack is enabled
 # by default in this example
 CONFIG_BT_ENABLED=y
+CONFIG_BLE_SCAN_DUPLICATE=y
+CONFIG_SCAN_DUPLICATE_TYPE=2
+CONFIG_DUPLICATE_SCAN_CACHE_SIZE=200
+CONFIG_BLE_MESH_SCAN_DUPLICATE_EN=y
+CONFIG_MESH_DUPLICATE_SCAN_CACHE_SIZE=200
 CONFIG_BT_MESH=y
+CONFIG_BT_MESH_USE_DUPLICATE_SCAN=y
 CONFIG_BT_MESH_FAST_PROV=y
 CONFIG_BT_MESH_PROV=y
 CONFIG_BT_MESH_NODE=y
index 4c72f1b2c7e00e558148a9273a9306600f700926..8429ab42e272c6172b64a20f427f09fe972ab5ee 100644 (file)
@@ -1,7 +1,13 @@
 # Override some defaults so BT stack is enabled
 # by default in this example
 CONFIG_BT_ENABLED=y
+CONFIG_BLE_SCAN_DUPLICATE=y
+CONFIG_SCAN_DUPLICATE_TYPE=2
+CONFIG_DUPLICATE_SCAN_CACHE_SIZE=200
+CONFIG_BLE_MESH_SCAN_DUPLICATE_EN=y
+CONFIG_MESH_DUPLICATE_SCAN_CACHE_SIZE=200
 CONFIG_BT_MESH=y
+CONFIG_BT_MESH_USE_DUPLICATE_SCAN=y
 CONFIG_BT_MESH_NODE=y
 CONFIG_BT_MESH_PROV=y
 CONFIG_NET_BUF_POOL_USAGE=y
index 44bd88a819a72a9d153ce8b5419fc531c1251c54..e485d012847a6bbbba12941a3102567081cad6c8 100644 (file)
@@ -1,7 +1,13 @@
 # Override some defaults so BT stack is enabled
 # by default in this example
 CONFIG_BT_ENABLED=y
+CONFIG_BLE_SCAN_DUPLICATE=y
+CONFIG_SCAN_DUPLICATE_TYPE=2
+CONFIG_DUPLICATE_SCAN_CACHE_SIZE=200
+CONFIG_BLE_MESH_SCAN_DUPLICATE_EN=y
+CONFIG_MESH_DUPLICATE_SCAN_CACHE_SIZE=200
 CONFIG_BT_MESH=y
+CONFIG_BT_MESH_USE_DUPLICATE_SCAN=y
 CONFIG_BT_MESH_PROV=y
 CONFIG_BT_MESH_PROVISIONER=y
 CONFIG_BT_MESH_UNPROV_DEV_ADD=10
index 4795ece24e2e4beb00917b00b6a2ac9ca7e25816..cea461cc603fb287e84d49e1921c7217885f1afe 100644 (file)
@@ -5,7 +5,13 @@ CONFIG_ESP32_DEFAULT_CPU_FREQ_240=y
 CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=240
 CONFIG_MEMMAP_SMP=y
 CONFIG_BT_ENABLED=y
+CONFIG_BLE_SCAN_DUPLICATE=y
+CONFIG_SCAN_DUPLICATE_TYPE=2
+CONFIG_DUPLICATE_SCAN_CACHE_SIZE=200
+CONFIG_BLE_MESH_SCAN_DUPLICATE_EN=y
+CONFIG_MESH_DUPLICATE_SCAN_CACHE_SIZE=200
 CONFIG_BT_MESH=y
+CONFIG_BT_MESH_USE_DUPLICATE_SCAN=y
 CONFIG_BT_MESH_FAST_PROV=y
 CONFIG_BT_MESH_PROV=y
 CONFIG_BT_MESH_NODE=y