mirror of
https://github.com/espressif/esp-idf.git
synced 2026-04-27 19:13:21 +00:00
Merge branch 'bugfix/ai_fixes_common_components' into 'master'
Bugfix/ai fixes common components See merge request espressif/esp-idf!47272
This commit is contained in:
@@ -233,6 +233,9 @@ esp_err_t esp_blufi_host_init(void)
|
||||
ble_hs_cfg.gatts_register_cb = esp_blufi_gatt_svr_register_cb;
|
||||
ble_hs_cfg.store_status_cb = ble_store_util_status_rr;
|
||||
|
||||
/* BLUFI uses its own application-layer security (DH + AES), not BLE Security
|
||||
* Manager. sm_mitm/sm_sc/sm_bonding are opt-in via Kconfig; Just Works
|
||||
* pairing is acceptable because the DH key exchange provides the security. */
|
||||
ble_hs_cfg.sm_io_cap = 4;
|
||||
#ifdef CONFIG_EXAMPLE_BONDING
|
||||
ble_hs_cfg.sm_bonding = 1;
|
||||
@@ -278,11 +281,13 @@ esp_err_t esp_blufi_host_deinit(void)
|
||||
{
|
||||
esp_err_t ret = ESP_OK;
|
||||
|
||||
esp_blufi_gatt_svr_deinit();
|
||||
ret = nimble_port_stop();
|
||||
if (ret != ESP_OK) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
esp_blufi_gatt_svr_deinit();
|
||||
|
||||
if (ret == 0) {
|
||||
esp_nimble_deinit();
|
||||
}
|
||||
|
||||
@@ -90,6 +90,82 @@ I (50557) HID_DEV_DEMO: Send the volume
|
||||
...
|
||||
```
|
||||
|
||||
## NimBLE Logging Scheme
|
||||
|
||||
The following are verbatim NimBLE log excerpts from `logs.txt` for each device role.
|
||||
|
||||
### Media Mode
|
||||
|
||||
```text
|
||||
I (496) HID_DEV_DEMO: setting ble device
|
||||
I (496) HID_DEV_DEMO: BLE Host Task Started
|
||||
I (506) HID_DEV_BLE: START
|
||||
I (506) NimBLE: GAP procedure initiated: advertise;
|
||||
I (35886) ESP_HID_GAP: connection established; status=0
|
||||
I (35896) HID_DEV_BLE: CONNECT
|
||||
I (35946) ESP_HID_GAP: mtu update event; conn_handle=0 cid=4 mtu=256
|
||||
I (36476) ESP_HID_GAP: PASSKEY_ACTION_EVENT started
|
||||
I (36476) ESP_HID_GAP: Enter passkey 123456on the peer side
|
||||
I (37896) ESP_HID_GAP: subscribe event; conn_handle=0 attr_handle=37 reason=1 prevn=0 curn=1 previ=0 curi=0
|
||||
I (40936) NimBLE: encryption change event; status=0
|
||||
I (40946) HID_DEV_DEMO: Send the volume
|
||||
I (40946) NimBLE: GATT procedure initiated: notify;
|
||||
I (40946) NimBLE: att_handle=37
|
||||
I (40946) NimBLE: notify_tx event; conn_handle=0 attr_handle=37 status=0 is_indication=0
|
||||
```
|
||||
|
||||
### Keyboard Mode
|
||||
|
||||
```text
|
||||
I (436) HID_DEV_DEMO: setting ble device
|
||||
I (436) HID_DEV_DEMO: BLE Host Task Started
|
||||
I (436) HID_DEV_BLE: START
|
||||
I (446) NimBLE: GAP procedure initiated: advertise;
|
||||
I (11526) ESP_HID_GAP: connection established; status=0
|
||||
I (11526) HID_DEV_BLE: CONNECT
|
||||
I (11576) ESP_HID_GAP: mtu update event; conn_handle=0 cid=4 mtu=256
|
||||
I (12116) ESP_HID_GAP: PASSKEY_ACTION_EVENT started
|
||||
I (12116) ESP_HID_GAP: Enter passkey 123456on the peer side
|
||||
I (13826) ESP_HID_GAP: subscribe event; conn_handle=0 attr_handle=37 reason=1 prevn=0 curn=1 previ=0 curi=0
|
||||
I (16576) NimBLE: encryption change event; status=0
|
||||
########################################################################
|
||||
BT hid keyboard demo usage:
|
||||
########################################################################
|
||||
I (22306) NimBLE: GATT procedure initiated: notify;
|
||||
I (22306) NimBLE: att_handle=37
|
||||
I (22306) NimBLE: notify_tx event; conn_handle=0 attr_handle=37 status=0 is_indication=0
|
||||
```
|
||||
|
||||
### Mouse Mode
|
||||
|
||||
```text
|
||||
I (446) HID_DEV_DEMO: setting ble device
|
||||
I (446) HID_DEV_DEMO: BLE Host Task Started
|
||||
I (456) HID_DEV_BLE: START
|
||||
I (456) NimBLE: GAP procedure initiated: advertise;
|
||||
I (10556) ESP_HID_GAP: connection established; status=0
|
||||
I (10556) HID_DEV_BLE: CONNECT
|
||||
I (10606) ESP_HID_GAP: mtu update event; conn_handle=0 cid=4 mtu=256
|
||||
I (11136) ESP_HID_GAP: PASSKEY_ACTION_EVENT started
|
||||
I (11136) ESP_HID_GAP: Enter passkey 123456on the peer side
|
||||
I (12656) ESP_HID_GAP: subscribe event; conn_handle=0 attr_handle=37 reason=1 prevn=0 curn=1 previ=0 curi=0
|
||||
I (15606) NimBLE: encryption change event; status=0
|
||||
########################################################################
|
||||
BT hid mouse demo usage:
|
||||
You can input these value to simulate mouse: 'q', 'w', 'e', 'a', 's', 'd', 'h'
|
||||
q -- click the left key
|
||||
w -- move up
|
||||
e -- click the right key
|
||||
a -- move left
|
||||
s -- move down
|
||||
d -- move right
|
||||
h -- show the help
|
||||
########################################################################
|
||||
I (18166) NimBLE: GATT procedure initiated: notify;
|
||||
I (18166) NimBLE: att_handle=37
|
||||
I (18166) NimBLE: notify_tx event; conn_handle=0 attr_handle=37 status=0 is_indication=0
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
1. When using NimBLE stack, some iOS devices do not show the volume pop up. To fix this, please set CONFIG_BT_NIMBLE_SM_LVL to value 2. iOS needs Authenticated Pairing with Encryption to show up the pop ups.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2021-2025 Espressif Systems (Shanghai) CO LTD
|
||||
* SPDX-FileCopyrightText: 2021-2026 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Unlicense OR CC0-1.0
|
||||
*/
|
||||
@@ -856,9 +856,13 @@ nimble_hid_gap_event(struct ble_gap_event *event, void *arg)
|
||||
/* Encryption has been enabled or disabled for this connection. */
|
||||
MODLOG_DFLT(INFO, "encryption change event; status=%d ",
|
||||
event->enc_change.status);
|
||||
rc = ble_gap_conn_find(event->enc_change.conn_handle, &desc);
|
||||
assert(rc == 0);
|
||||
ble_hid_task_start_up();
|
||||
if (event->enc_change.status == 0) {
|
||||
rc = ble_gap_conn_find(event->enc_change.conn_handle, &desc);
|
||||
assert(rc == 0);
|
||||
ble_hid_task_start_up();
|
||||
} else {
|
||||
ESP_LOGW(TAG, "encryption failed; waiting for disconnect/retry");
|
||||
}
|
||||
return 0;
|
||||
|
||||
case BLE_GAP_EVENT_NOTIFY_TX:
|
||||
@@ -889,7 +893,7 @@ nimble_hid_gap_event(struct ble_gap_event *event, void *arg)
|
||||
case BLE_GAP_EVENT_PASSKEY_ACTION:
|
||||
ESP_LOGI(TAG, "PASSKEY_ACTION_EVENT started");
|
||||
struct ble_sm_io pkey = {0};
|
||||
int key = 0;
|
||||
int key = 1;
|
||||
|
||||
if (event->passkey.params.action == BLE_SM_IOACT_DISP) {
|
||||
pkey.action = event->passkey.params.action;
|
||||
|
||||
@@ -94,6 +94,73 @@ I (18212) ESP_HIDH_DEMO: 00 00
|
||||
...
|
||||
```
|
||||
|
||||
## NimBLE Logging Scheme
|
||||
|
||||
The following are verbatim NimBLE log excerpts from `logs.txt` for each device role.
|
||||
|
||||
### Media Mode (CCONTROL)
|
||||
|
||||
```text
|
||||
I (2446) ESP_HIDH_DEMO: SCAN...
|
||||
I (2446) NimBLE: GAP procedure initiated: discovery;
|
||||
I (7456) NimBLE: discovery complete; reason=0
|
||||
I (7466) NimBLE: GAP procedure initiated: connect;
|
||||
I (7666) NimBLE: Connection established
|
||||
I (7676) NimBLE: GATT procedure initiated: exchange mtu
|
||||
I (7726) NimBLE: mtu update event; conn_handle=0 cid=4 mtu=256
|
||||
I (8446) NIMBLE_HIDH: PASSKEY INPUT injected rc=0
|
||||
I (9636) ESP_HIDH_DEMO: 02:50:f7:f9:55:60 OPEN: nimble
|
||||
Report Maps: 1
|
||||
Report Map Length: 111
|
||||
CCONTROL INPUT REPORT, ID: 3, Length: 2, Permissions: 0x1a, Handle: 37, CCC Handle: 38
|
||||
I (12776) NIMBLE_HIDH: ENC_CHANGE status=0 encrypted=1 authenticated=1 bonded=1
|
||||
I (12826) ESP_HIDH_DEMO: 02:50:f7:f9:55:60 INPUT: CCONTROL, MAP: 0, ID: 3, Len: 2, Data:
|
||||
I (12826) ESP_HIDH_DEMO: 80 00
|
||||
I (12876) ESP_HIDH_DEMO: 02:50:f7:f9:55:60 INPUT: CCONTROL, MAP: 0, ID: 3, Len: 2, Data:
|
||||
I (12876) ESP_HIDH_DEMO: 00 00
|
||||
I (14876) ESP_HIDH_DEMO: 02:50:f7:f9:55:60 INPUT: CCONTROL, MAP: 0, ID: 3, Len: 2, Data:
|
||||
I (14876) ESP_HIDH_DEMO: 40 00
|
||||
```
|
||||
|
||||
### Keyboard Mode
|
||||
|
||||
```text
|
||||
I (7426) ESP_HIDH_DEMO: SCAN: 2 results
|
||||
BLE: 68:2e:f7:f9:55:60, RSSI: -57, USAGE: GENERIC, APPEARANCE: 0x03c0, ADDR_TYPE: '0', NAME: ESP Mouse
|
||||
BLE: 02:50:f7:f9:55:60, RSSI: -30, USAGE: GENERIC, APPEARANCE: 0x03c0, ADDR_TYPE: '0', NAME: ESP Keyboard
|
||||
I (7446) NimBLE: GAP procedure initiated: connect;
|
||||
I (7836) NimBLE: Connection established
|
||||
I (8606) NIMBLE_HIDH: PASSKEY INPUT injected rc=0
|
||||
I (10086) ESP_HIDH_DEMO: 02:50:f7:f9:55:60 OPEN: nimble
|
||||
Report Maps: 1
|
||||
Report Map Length: 65
|
||||
KEYBOARD INPUT REPORT, ID: 1, Length: 7, Permissions: 0x1a, Handle: 37, CCC Handle: 38
|
||||
I (12936) NIMBLE_HIDH: ENC_CHANGE status=0 encrypted=1 authenticated=1 bonded=1
|
||||
I (18636) ESP_HIDH_DEMO: 02:50:f7:f9:55:60 INPUT: KEYBOARD, MAP: 0, ID: 1, Len: 8, Data:
|
||||
I (18636) ESP_HIDH_DEMO: 00 00 04 00 00 00 00 00
|
||||
I (18686) ESP_HIDH_DEMO: 02:50:f7:f9:55:60 INPUT: KEYBOARD, MAP: 0, ID: 1, Len: 8, Data:
|
||||
I (18686) ESP_HIDH_DEMO: 00 00 00 00 00 00 00 00
|
||||
```
|
||||
|
||||
### Mouse Mode
|
||||
|
||||
```text
|
||||
I (7426) ESP_HIDH_DEMO: SCAN: 1 results
|
||||
BLE: 02:50:f7:f9:55:60, RSSI: -29, USAGE: GENERIC, APPEARANCE: 0x03c0, ADDR_TYPE: '0', NAME: ESP Mouse
|
||||
I (7436) NimBLE: GAP procedure initiated: connect;
|
||||
I (7666) NimBLE: Connection established
|
||||
I (8436) NIMBLE_HIDH: PASSKEY INPUT injected rc=0
|
||||
I (9716) ESP_HIDH_DEMO: 02:50:f7:f9:55:60 OPEN: nimble
|
||||
Report Maps: 1
|
||||
Report Map Length: 52
|
||||
MOUSE INPUT REPORT, ID: 0, Length: 4, Permissions: 0x1a, Handle: 37, CCC Handle: 38
|
||||
I (12766) NIMBLE_HIDH: ENC_CHANGE status=0 encrypted=1 authenticated=1 bonded=1
|
||||
I (15316) ESP_HIDH_DEMO: 02:50:f7:f9:55:60 INPUT: MOUSE, MAP: 0, ID: 0, Len: 4, Data:
|
||||
I (15316) ESP_HIDH_DEMO: 00 f6 00 00
|
||||
I (15816) ESP_HIDH_DEMO: 02:50:f7:f9:55:60 INPUT: MOUSE, MAP: 0, ID: 0, Len: 4, Data:
|
||||
I (15816) ESP_HIDH_DEMO: 00 00 0a 00
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
For any technical queries, please open an [issue](https://github.com/espressif/esp-idf/issues) on GitHub. We will get back to you soon.
|
||||
|
||||
Reference in New Issue
Block a user