【求助】在测试蓝牙1对8时,第一次扫描8个成功,就没问题,但若第一次扫描连接了比如7个,然后报错,再扫描也连接不上最后一个了,报这种错误

llzzdd
Posts: 27
Joined: Thu Apr 18, 2024 3:14 am

【求助】在测试蓝牙1对8时,第一次扫描8个成功,就没问题,但若第一次扫描连接了比如7个,然后报错,再扫描也连接不上最后一个了,报这种错误

Postby llzzdd » Tue Nov 05, 2024 5:50 am

在测试蓝牙1对8时,第一次扫描8个成功,就没问题,但若第一次扫描连接了比如7个,然后报错,再扫描也连接不上最后一个了,报这种错误

2024-11-05 13:32:09 W (5772606) BT_HCI: btu_hcif_hdl_command_status,opcode:0x2043,status:0x3b
2024-11-05 13:32:09 W (5772616) BT_APPL: gattc_conn_cb: if=1 st=0 id=1793 rsn=0x100
2024-11-05 13:32:09 W (5772616) BT_APPL: gattc_conn_cb: if=2 st=0 id=1794 rsn=0x100
2024-11-05 13:32:09 W (5772626) BT_APPL: gattc_conn_cb: if=3 st=0 id=1795 rsn=0x100
2024-11-05 13:32:09 W (5772636) BT_APPL: gattc_conn_cb: if=4 st=0 id=1796 rsn=0x100
2024-11-05 13:32:09 W (5772636) BT_APPL: gattc_conn_cb: if=5 st=0 id=1797 rsn=0x100
2024-11-05 13:32:09 W (5772646) BT_APPL: gattc_conn_cb: if=6 st=0 id=1798 rsn=0x100
2024-11-05 13:32:09 W (5772656) BT_APPL: gattc_conn_cb: if=7 st=0 id=1799 rsn=0x100
2024-11-05 13:32:09 W (5772656) BT_APPL: gattc_conn_cb: if=8 st=0 id=1800 rsn=0x100

在调用esp_ble_gattc_aux_open后,
在此事件中会报错, connect device failed, status 133

case ESP_GATTC_OPEN_EVT:
if (p_data->open.status != ESP_GATT_OK)
{
ble_obj->is_connected = false;
egl_log_error("connect device failed, status %d", p_data->open.status);
break;
}

我尝试使用这三个接口,但依然连接不上,不知道是蓝牙内部内存哪里还没有释放
esp_ble_gattc_close(gl_profile_tab[idx].gattc_if, gl_profile_tab[idx].conn_id);
esp_ble_gap_disconnect(p_data->disconnect.remote_bda);
esp_ble_gattc_cache_clean(p_data->disconnect.remote_bda);

这种错误应该如何解决?

llzzdd
Posts: 27
Joined: Thu Apr 18, 2024 3:14 am

Re: 【求助】在测试蓝牙1对8时,第一次扫描8个成功,就没问题,但若第一次扫描连接了比如7个,然后报错,再扫描也连接不上最后一个了,报这种错误

Postby llzzdd » Wed Nov 06, 2024 10:33 am

1. 8个设备,只扫描到7个,7个连接成功后,最后一个连接不上,手机可以扫描到,但设备扫描不到,即使扫描到也连接不上,扫描到后报该警告
2024-11-06 18:30:54 W (133526) BT_HCI: btu_hcif_hdl_command_status,opcode:0x2043,status:0x3b
2024-11-06 18:30:54 W (133536) BT_APPL: gattc_conn_cb: if=1 st=0 id=1025 rsn=0x100
2024-11-06 18:30:54 W (133536) BT_APPL: gattc_conn_cb: if=2 st=0 id=1026 rsn=0x100
2024-11-06 18:30:54 W (133546) BT_APPL: gattc_conn_cb: if=3 st=0 id=1027 rsn=0x100
2024-11-06 18:30:54 W (133556) BT_APPL: gattc_conn_cb: if=4 st=0 id=1028 rsn=0x100
2024-11-06 18:30:54 W (133556) BT_APPL: gattc_conn_cb: if=5 st=0 id=1029 rsn=0x100
2024-11-06 18:30:54 W (133566) BT_APPL: gattc_conn_cb: if=6 st=0 id=1030 rsn=0x100
2024-11-06 18:30:54 W (133576) BT_APPL: gattc_conn_cb: if=7 st=0 id=1031 rsn=0x100
2024-11-06 18:30:54 W (133576) BT_APPL: gattc_conn_cb: if=8 st=0 id=1032 rsn=0x100
2024-11-06 18:30:54 W (133586) user_sensor: conn_handle[ 4 ] disconnected id[3], status [0]
2024-11-06 18:30:54 W (133596) egl_ble_c: connect device failed, status 133
2024-11-06 18:30:55 W (134696) test_ble_c: scan timeout

2.2.扫描一次连接成功了8个设备,给其中两个节点重启,再次扫描连接另外两个设备也不顺畅,可能会连接成功,出错依然报警告,只要出现这个警告,肯定连接不上了
2024-11-06 18:30:54 W (133526) BT_HCI: btu_hcif_hdl_command_status,opcode:0x2043,status:0x3b
2024-11-06 18:30:54 W (133536) BT_APPL: gattc_conn_cb: if=1 st=0 id=1025 rsn=0x100
2024-11-06 18:30:54 W (133536) BT_APPL: gattc_conn_cb: if=2 st=0 id=1026 rsn=0x100
2024-11-06 18:30:54 W (133546) BT_APPL: gattc_conn_cb: if=3 st=0 id=1027 rsn=0x100
2024-11-06 18:30:54 W (133556) BT_APPL: gattc_conn_cb: if=4 st=0 id=1028 rsn=0x100
2024-11-06 18:30:54 W (133556) BT_APPL: gattc_conn_cb: if=5 st=0 id=1029 rsn=0x100
2024-11-06 18:30:54 W (133566) BT_APPL: gattc_conn_cb: if=6 st=0 id=1030 rsn=0x100
2024-11-06 18:30:54 W (133576) BT_APPL: gattc_conn_cb: if=7 st=0 id=1031 rsn=0x100
2024-11-06 18:30:54 W (133576) BT_APPL: gattc_conn_cb: if=8 st=0 id=1032 rsn=0x100
2024-11-06 18:30:54 W (133586) user_sensor: conn_handle[ 4 ] disconnected id[3], status [0]
2024-11-06 18:30:54 W (133596) egl_ble_c: connect device failed, status 133
2024-11-06 18:30:55 W (134696) test_ble_c: scan timeout

这个警告到底是什么意思呀,,,,,如何解决,,,,,不能每次都重启吧,,,,,

llzzdd
Posts: 27
Joined: Thu Apr 18, 2024 3:14 am

Re: 【求助】在测试蓝牙1对8时,第一次扫描8个成功,就没问题,但若第一次扫描连接了比如7个,然后报错,再扫描也连接不上最后一个了,报这种错误

Postby llzzdd » Wed Nov 06, 2024 11:17 am

// 扫描参数
#define BLE_SCAN_INTERVAL_MS_CONNECT 0xA0 // 100ms
#define BLE_SCAN_WINDOW_MS_CONNECT 0x50 // 50ms
const esp_ble_gap_conn_params_t phy_1m_conn_params = {
.scan_interval = BLE_SCAN_INTERVAL_MS_CONNECT, // 100ms Range: 0x0004 to 0x4000 Default: 0x0010 (10 ms) Time = N * 0.625 msec Time Range: 2.5 msec to 10.24 seconds
.scan_window = BLE_SCAN_WINDOW_MS_CONNECT, // 50ms Range: 0x0004 to 0x4000 Default: 0x0010 (10 ms) Time = N * 0.625 msec Time Range: 2.5 msec to 10240 msec
.interval_min = 0x0c, // 15ms connIntervalmin = Conn_Interval_Min * 1.25 ms Conn_Interval_Min range: 0x0006 to 0x0C80
.interval_max = 0x20, // 40ms connIntervalmax = Conn_Interval_Max * 1.25 ms Conn_Interval_Max range: 0x0006 to 0x0C80
.latency = 0,
.supervision_timeout = 100,
.min_ce_len = 0,
.max_ce_len = 0,
};

这是我的扫描参数配置,有问题吗

llzzdd
Posts: 27
Joined: Thu Apr 18, 2024 3:14 am

Re: 【求助】在测试蓝牙1对8时,第一次扫描8个成功,就没问题,但若第一次扫描连接了比如7个,然后报错,再扫描也连接不上最后一个了,报这种错误

Postby llzzdd » Thu Nov 07, 2024 2:46 am

1.我在esp_ble_gattc_aux_open之前都会进行esp_ble_gap_prefer_ext_connect_params_set连接参数的配置,所以会报0x3B的错误
2.我尝试屏蔽掉esp_ble_gap_prefer_ext_connect_params_set此函数后,没有报过0x3B的错误,系统提示“BT_L2CAP: No extend connection parameters set, use default parameters”
3.这个扫描参数如何配置、什么时候配置?


// esp_ble_gap_prefer_ext_connect_params_set(param->ext_adv_report.params.addr,
// ESP_BLE_GAP_PHY_1M_PREF_MASK,
// &phy_1m_conn_params, NULL, NULL);

esp_ble_gattc_aux_open(gl_profile_tab[idx].gattc_if,
param->ext_adv_report.params.addr,
param->ext_adv_report.params.addr_type, true);

llzzdd
Posts: 27
Joined: Thu Apr 18, 2024 3:14 am

Re: 【求助】在测试蓝牙1对8时,第一次扫描8个成功,就没问题,但若第一次扫描连接了比如7个,然后报错,再扫描也连接不上最后一个了,报这种错误

Postby llzzdd » Thu Nov 07, 2024 5:47 am

1. 若连接成功,估计给某一个或多个节点重启,此时,再次扫描并没有第一次扫描连接那么快,使用手机可以扫描到
2. 我每次只扫描1s,若没扫描到就超时,需要扫描好几次才能连接上

ESP_zhanghaipeng
Posts: 42
Joined: Thu May 04, 2023 3:49 am

Re: 【求助】在测试蓝牙1对8时,第一次扫描8个成功,就没问题,但若第一次扫描连接了比如7个,然后报错,再扫描也连接不上最后一个了,报这种错误

Postby ESP_zhanghaipeng » Fri Nov 08, 2024 8:23 am

1-从你提供的 log,我暂时无法确定你是用的哪个芯片。
能够提供一下完整的 log 信息(从启动到出问题)呢?

2-W (133526) BT_HCI: btu_hcif_hdl_command_status,opcode:0x2043,status:0x3b
opcode:0x2043 表示建立连接,status:0x3b 这个错误码表示设置的参数不正确(导致资源受限,报错)。

3-esp_ble_gap_prefer_ext_connect_params_set 连接参数的配置

你使用的参数,暂时没有发现问题。每次都使用相同的参数吗?

4-更多信息
能够提供复现的代码和 sdkconfig?
如果无法提供代码,我建议你打开我们的 hci log,我想从 hci log 中获取更多信息。
(7个月之前的 IDF 不支持 HCI log)
log 打开方法,idf.py menuconfig
(Top) → Component config → Bluetooth
[*] Enable Bluetooth HCI debug mode

出现问题时,调用下面函数
void bt_hci_log_hci_data_show(void)
void bt_hci_log_hci_adv_show(void)

ESP_zhanghaipeng
Posts: 42
Joined: Thu May 04, 2023 3:49 am

Re: 【求助】在测试蓝牙1对8时,第一次扫描8个成功,就没问题,但若第一次扫描连接了比如7个,然后报错,再扫描也连接不上最后一个了,报这种错误

Postby ESP_zhanghaipeng » Fri Nov 08, 2024 9:04 am

该社区的消息我收不到提醒,需要我主动过来刷新才行,可能刷新不及时,无法及时回复您,如果您想要更快的相应速度,以后也可以在 github 提问 issue。
https://github.com/espressif/esp-idf/issues

我在 github 的名字是 “esp-zhp”,你可以主动@我,我能够及时看到。


Who is online

Users browsing this forum: No registered users and 11 guests