From 48dd8b588f17505bc76ce64b596fce70c687ae7b Mon Sep 17 00:00:00 2001 From: liqigan Date: Thu, 25 Jun 2026 10:19:00 +0800 Subject: [PATCH 1/3] feat(bt): Added support for slot availablity mask functionality --- .../porting_btdm/controller/bredr/Kconfig.in | 20 +++++++++++++++++++ .../controller/bredr/include/bredr_user_cfg.h | 12 +++++++++++ .../porting_btdm/controller/bredr/src/bredr.c | 18 +++++++++++++++++ 3 files changed, 50 insertions(+) diff --git a/components/bt/porting_btdm/controller/bredr/Kconfig.in b/components/bt/porting_btdm/controller/bredr/Kconfig.in index 47ac7d86c71..52cceb818b1 100644 --- a/components/bt/porting_btdm/controller/bredr/Kconfig.in +++ b/components/bt/porting_btdm/controller/bredr/Kconfig.in @@ -185,6 +185,26 @@ config BT_CTRL_BR_EDR_DTM_EN help Enable BR/EDR controller direct test mode +config BT_CTRL_BR_EDR_SAM_EN + bool "Enable BR/EDR controller Slot Availability Mask (READ DOCS FIRST) (EXPERIMENTAL)" + depends on IDF_EXPERIMENTAL_FEATURES + default n + help + Enable BR/EDR controller Slot Availability Mask(SAM). + + Note: SAM functionality is partially implemented by software and only works on ACL air time scheduling. + +config BT_CTRL_BR_EDR_MWS_EN + bool "Enable BR/EDR controller Mobile Wireless Standards coexistence (READ DOCS FIRST) (EXPERIMENTAL)" + depends on BT_CTRL_BR_EDR_SAM_EN + default n + help + Enable BR/EDR controller Mobile Wireless Standards(MWS) coexistence. + + Note: MWS coexistence functionality is only partially implemented. Supported HCI Commands: + - HCI_Set_External_Frame_Configuration + - HCI_Set_MWS_PATTERN_Configuration + config BT_CTRL_BR_EDR_TX_CCA_ENABLED bool "Enable BR/EDR TX CCA feature" default n diff --git a/components/bt/porting_btdm/controller/bredr/include/bredr_user_cfg.h b/components/bt/porting_btdm/controller/bredr/include/bredr_user_cfg.h index 942caad1b02..d8b2911fd66 100644 --- a/components/bt/porting_btdm/controller/bredr/include/bredr_user_cfg.h +++ b/components/bt/porting_btdm/controller/bredr/include/bredr_user_cfg.h @@ -77,6 +77,18 @@ extern "C" { #define UC_BR_EDR_DTM_EN 0 #endif +#if defined(CONFIG_BT_CTRL_BR_EDR_SAM_EN) && CONFIG_BT_CTRL_BR_EDR_SAM_EN +#define UC_BR_EDR_SAM_EN 1 +#else +#define UC_BR_EDR_SAM_EN 0 +#endif + +#if defined(CONFIG_BT_CTRL_BR_EDR_MWS_EN) && CONFIG_BT_CTRL_BR_EDR_MWS_EN +#define UC_BR_EDR_MWS_EN 1 +#else +#define UC_BR_EDR_MWS_EN 0 +#endif + #if defined(CONFIG_BT_CTRL_BR_EDR_TX_CCA_ENABLED) #define UC_BR_EDR_TX_CCA_EN (CONFIG_BT_CTRL_BR_EDR_TX_CCA_ENABLED) #else diff --git a/components/bt/porting_btdm/controller/bredr/src/bredr.c b/components/bt/porting_btdm/controller/bredr/src/bredr.c index 7d6f5947246..b8d93ef210d 100644 --- a/components/bt/porting_btdm/controller/bredr/src/bredr.c +++ b/components/bt/porting_btdm/controller/bredr/src/bredr.c @@ -123,6 +123,8 @@ extern int bredr_ctrl_feat_dtm_en(void); extern int bredr_ctrl_feat_test_en(void); extern int bredr_ctrl_feat_lk_store_en(void); extern int bredr_ctrl_feat_coex_en(void); +extern int bredr_ctrl_feat_sam_en(void); +extern int bredr_ctrl_feat_mws_en(void); extern const char *co_orca_get_git_version_str(void); extern void r_orca_log_set_printf(bredr_log_printf_fn printf_fn); @@ -682,6 +684,22 @@ static int bredr_ctrl_setup_callback(void) } #endif /* UC_BR_EDR_DTM_EN */ +#if UC_BR_EDR_SAM_EN + ret = bredr_ctrl_feat_sam_en(); + if (ret != 0) { + ESP_LOGE(BREDR_LOG_TAG, "bredr_ctrl_feat_sam_en failed, ret:%d", ret); + break; + } +#endif /* UC_BR_EDR_SAM_EN */ + +#if UC_BR_EDR_MWS_EN + ret = bredr_ctrl_feat_mws_en(); + if (ret != 0) { + ESP_LOGE(BREDR_LOG_TAG, "bredr_ctrl_feat_mws_en failed, ret:%d", ret); + break; + } +#endif /* UC_BR_EDR_MWS_EN */ + #if CONFIG_SW_COEXIST_ENABLE ret = bredr_ctrl_feat_coex_en(); if (ret != 0) { From b93794265f62a87cb899b8b56e5dc7d150ebfd4e Mon Sep 17 00:00:00 2001 From: liqigan Date: Wed, 1 Jul 2026 17:28:12 +0800 Subject: [PATCH 2/3] fix(bt/controller): Fixed BR/EDR controller bugs found by regression tests on ESP32-S31 - Fixed the state machine issue caused by security related LMP procedures on ESP32-S31 - Fixed the issue of insufficient air time for ACK reception from the Central on ESP32-S31 - Fixed the page scan collision issue on ESP32-S31 - Fixed read failures for local supported features and extended features on ESP32-S31 - Fixed NULL access issue during SYNC disconnection on ESP32-S31 - Fixed ACL schedule issue during SYNC connection establishment on ESP32-S31 --- components/bt/controller/lib_esp32s31/esp32s31-bt-lib | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/bt/controller/lib_esp32s31/esp32s31-bt-lib b/components/bt/controller/lib_esp32s31/esp32s31-bt-lib index 9474d4e9880..cf08b0ef0e3 160000 --- a/components/bt/controller/lib_esp32s31/esp32s31-bt-lib +++ b/components/bt/controller/lib_esp32s31/esp32s31-bt-lib @@ -1 +1 @@ -Subproject commit 9474d4e9880119e3f95f814414513e1645970951 +Subproject commit cf08b0ef0e37fc32fb31f20208622c1e12164a2c From 1004beff62bcf49cec9cdbbc5f21202932349b11 Mon Sep 17 00:00:00 2001 From: liqigan Date: Fri, 10 Jul 2026 17:23:18 +0800 Subject: [PATCH 3/3] feat(bt/controller): Added LMP debug vendor HCI and fixed some bugs ts on ESP32-S31 --- .../controller/lib_esp32s31/esp32s31-bt-lib | 2 +- .../bt/include/esp32s31/include/esp_bt_vs.h | 45 ++++++++++++++++--- docs/en/api-reference/bluetooth/bt_vhci.rst | 9 +++- .../zh_CN/api-reference/bluetooth/bt_vhci.rst | 9 +++- 4 files changed, 57 insertions(+), 8 deletions(-) diff --git a/components/bt/controller/lib_esp32s31/esp32s31-bt-lib b/components/bt/controller/lib_esp32s31/esp32s31-bt-lib index cf08b0ef0e3..4c572fb7839 160000 --- a/components/bt/controller/lib_esp32s31/esp32s31-bt-lib +++ b/components/bt/controller/lib_esp32s31/esp32s31-bt-lib @@ -1 +1 @@ -Subproject commit cf08b0ef0e37fc32fb31f20208622c1e12164a2c +Subproject commit 4c572fb78395098cfabd808159e6a51f54274bdf diff --git a/components/bt/include/esp32s31/include/esp_bt_vs.h b/components/bt/include/esp32s31/include/esp_bt_vs.h index 3c63f485719..fe909fcf74f 100644 --- a/components/bt/include/esp32s31/include/esp_bt_vs.h +++ b/components/bt/include/esp32s31/include/esp_bt_vs.h @@ -367,11 +367,6 @@ struct bt_hci_vs_legacy_rem_auth_evt { */ #define ESP_BT_VS_CLK_UPDATE_OCF (0x0183) -/** - * @note The init function is `bt_stack_enableClkCtrlVsCmd(true)` - */ -#define ESP_BT_VS_PCA_OCF (0x0190) - /** * @note The init function is `bt_stack_enableAfhVsCmd(true)` */ @@ -412,6 +407,31 @@ struct bt_hci_vs_legacy_rem_auth_evt { */ #define ESP_BT_VS_DTM_RX_TEST_END_OCF (0x018f) +/** + * @note The init function is `bt_stack_enableInternalDbgVsCmd(true)` + */ +#define ESP_BT_VS_PCA_OCF (0x0190) + +/** + * @note The init function is `bt_stack_enableInternalDbgVsCmd(true)` + */ +#define ESP_BT_VS_DISCARD_PING_OCF (0x0191) + +/** + * @note The init function is `bt_stack_enableInternalDbgVsCmd(true)` + */ +#define ESP_BT_VS_LMP_DBG_ENABLE_OCF (0x019a) + +/** + * @note The init function is `bt_stack_enableInternalDbgVsCmd(true)` + */ +#define ESP_BT_VS_SEND_LMP_OCF (0x019b) + +/** + * @note The init function is `bt_stack_enableInternalDbgVsCmd(true)` + */ +#define ESP_BT_VS_LMP_DBG_SAVE_OCF (0x019c) + // // @brief HCI VS Events for Espressif's Internal-Use Debugging // @@ -437,6 +457,21 @@ struct bt_hci_vs_legacy_rem_auth_evt { */ #define ESP_BT_VS_CH_CLASSIFICATION_REPORTING_MODE_EVT_SUBCODE (0x07) +/** + * @note The init function is `bt_stack_enableInternalDbgVsCmd(true)` + */ +#define ESP_BT_VS_LMP_RECEIVED_EVT_SUBCODE (0x0a) + +/** + * @note The init function is `bt_stack_enableInternalDbgVsCmd(true)` + */ +#define ESP_BT_VS_LMP_TX_CFM_EVT_SUBCODE (0x0b) + +/** + * @note The init function is `bt_stack_enableInternalDbgVsCmd(true)` + */ +#define ESP_BT_VS_LMP_DBG_ENTERED_EVT_SUBCODE (0x0c) + #ifdef __cplusplus } #endif diff --git a/docs/en/api-reference/bluetooth/bt_vhci.rst b/docs/en/api-reference/bluetooth/bt_vhci.rst index 2360e42c41d..b504bd55d96 100644 --- a/docs/en/api-reference/bluetooth/bt_vhci.rst +++ b/docs/en/api-reference/bluetooth/bt_vhci.rst @@ -346,7 +346,6 @@ The following HCI VS debugging commands are implemented in Bluetooth Low Energy .. doxygendefine:: ESP_BT_VS_WR_DM1_ENABLE_OCF .. doxygendefine:: ESP_BT_VS_CLK_UPDATE_OCF - .. doxygendefine:: ESP_BT_VS_PCA_OCF .. doxygendefine:: ESP_BT_VS_SET_AFH_OCF .. doxygendefine:: ESP_BT_VS_SET_EVT_MASK_OCF .. doxygendefine:: ESP_BT_VS_SET_AFH_REPORTING_MODE_OCF @@ -355,6 +354,11 @@ The following HCI VS debugging commands are implemented in Bluetooth Low Energy .. doxygendefine:: ESP_BT_VS_DTM_RX_TEST_START_OCF .. doxygendefine:: ESP_BT_VS_DTM_TX_TEST_END_OCF .. doxygendefine:: ESP_BT_VS_DTM_RX_TEST_END_OCF + .. doxygendefine:: ESP_BT_VS_PCA_OCF + .. doxygendefine:: ESP_BT_VS_DISCARD_PING_OCF + .. doxygendefine:: ESP_BT_VS_LMP_DBG_ENABLE_OCF + .. doxygendefine:: ESP_BT_VS_SEND_LMP_OCF + .. doxygendefine:: ESP_BT_VS_LMP_DBG_SAVE_OCF HCI VS Events for Espressif's Internal-Use Debugging ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -378,3 +382,6 @@ The following HCI VS debugging commands are implemented in Bluetooth Low Energy .. doxygendefine:: ESP_BT_VS_AFH_CHG_EVT_SUBCODE .. doxygendefine:: ESP_BT_VS_CH_CLASSIFICATION_EVT_SUBCODE .. doxygendefine:: ESP_BT_VS_CH_CLASSIFICATION_REPORTING_MODE_EVT_SUBCODE + .. doxygendefine:: ESP_BT_VS_LMP_RECEIVED_EVT_SUBCODE + .. doxygendefine:: ESP_BT_VS_LMP_TX_CFM_EVT_SUBCODE + .. doxygendefine:: ESP_BT_VS_LMP_DBG_ENTERED_EVT_SUBCODE diff --git a/docs/zh_CN/api-reference/bluetooth/bt_vhci.rst b/docs/zh_CN/api-reference/bluetooth/bt_vhci.rst index dc9e1b7f66e..7e7aabd41fe 100644 --- a/docs/zh_CN/api-reference/bluetooth/bt_vhci.rst +++ b/docs/zh_CN/api-reference/bluetooth/bt_vhci.rst @@ -346,7 +346,6 @@ .. doxygendefine:: ESP_BT_VS_WR_DM1_ENABLE_OCF .. doxygendefine:: ESP_BT_VS_CLK_UPDATE_OCF - .. doxygendefine:: ESP_BT_VS_PCA_OCF .. doxygendefine:: ESP_BT_VS_SET_AFH_OCF .. doxygendefine:: ESP_BT_VS_SET_EVT_MASK_OCF .. doxygendefine:: ESP_BT_VS_SET_AFH_REPORTING_MODE_OCF @@ -355,6 +354,11 @@ .. doxygendefine:: ESP_BT_VS_DTM_RX_TEST_START_OCF .. doxygendefine:: ESP_BT_VS_DTM_TX_TEST_END_OCF .. doxygendefine:: ESP_BT_VS_DTM_RX_TEST_END_OCF + .. doxygendefine:: ESP_BT_VS_PCA_OCF + .. doxygendefine:: ESP_BT_VS_DISCARD_PING_OCF + .. doxygendefine:: ESP_BT_VS_LMP_DBG_ENABLE_OCF + .. doxygendefine:: ESP_BT_VS_SEND_LMP_OCF + .. doxygendefine:: ESP_BT_VS_LMP_DBG_SAVE_OCF 乐鑫内部调试 HCI 事件 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -378,3 +382,6 @@ .. doxygendefine:: ESP_BT_VS_AFH_CHG_EVT_SUBCODE .. doxygendefine:: ESP_BT_VS_CH_CLASSIFICATION_EVT_SUBCODE .. doxygendefine:: ESP_BT_VS_CH_CLASSIFICATION_REPORTING_MODE_EVT_SUBCODE + .. doxygendefine:: ESP_BT_VS_LMP_RECEIVED_EVT_SUBCODE + .. doxygendefine:: ESP_BT_VS_LMP_TX_CFM_EVT_SUBCODE + .. doxygendefine:: ESP_BT_VS_LMP_DBG_ENTERED_EVT_SUBCODE