Skip to content

Nimble HCI wait for ack returned 19 (EHM-118) #115

@lisuchun6556

Description

@lisuchun6556

Checklist

  • Checked the issue tracker for similar issues to ensure this is not a duplicate
  • Read the documentation to confirm the issue is not addressed there and your configuration is set correctly
  • Tested with the latest version to ensure the issue hasn't been fixed

How often does this bug occurs?

always

Expected behavior

ESP32-P4 + ESP32-C5 SPI communication, using the NimBLE component for BLE.
Expected behavior: BLE advertising works correctly

Actual behavior (suspected bug)

when slave version > 2.5.1 (2.5.2-2.6.1)
nimble hci communication timeout

Error logs or terminal output

slave log:
[10:59:13.602]收←◆ESP-ROM:esp32c5-eco2-2025
[10:59:13.702]收←◆麰SP-ROM:esp32c5-eco2-20250121
Build:Jan 21 2025
rst:0x1 (POWERON),boot:0x1c (SPI_FAST_FLASH_BOOT)
SPI mode:DIO, clock div:1
load:0x408556b0,len:0x183c
load:0x4084bba0,len:0x103c
load:0x4084e5a0,len:0x3a0c
entry 0x4084bbaa
I (23) boot: ESP-IDF v5.5.1-dirty 2nd stage bootloader
I (24) boot: compile time Oct 20 2025 10:25:16
I (24) boot: chip revision: v1.0
I (25) boot: efuse block revision: v0.2
I (28) qio_mode: Enabling default flash chip QIO
I (32) boot.esp32c5: SPI Speed      : 80MHz
I (36) boot.esp32c5: SPI Mode       : QIO
I (40) boot.esp32c5: SPI Flash Size : 4MB
I (43) boot: Enabling RNG early entropy source...
I (48) boot: Partition Table:
I (50) boot: ## Label            Usage          Type ST Offset   Length
I (57) boot:  0 esp_secure_cert  unknown          3f 06 0000d000 00002000
I (63) boot:  1 nvs_key          NVS keys         01 04 0000f000 00001000
I (70) boot:  2 nvs              WiFi data        01 02 00010000 00006000
I (76) boot:  3 otadata          OTA data         01 00 00016000 00002000
I (83) boot:  4 phy_init         RF data          01 01 00018000 00001000
I (89) boot:  5 ota_0            OTA app          00 10 00020000 001e0000
I (96) boot:  6 ota_1            OTA app          00 11 00200000 001e0000
I (102) boot:  7 reserved         unknown          06 06 003e0000 0001a000
I (109) boot:  8 fctry            WiFi data        01 02 003fa000 00006000
I (116) boot: End of partition table
I (119) esp_image: segment 0: paddr=00020020 vaddr=420e0020 size=37e18h (228888) map

[10:59:13.872]收←◆I (164) esp_image: segment 1: paddr=00057e40 vaddr=40800000 size=081d8h ( 33240) load
I (171) esp_image: segment 2: paddr=00060020 vaddr=42000020 size=d7164h (880996) map

[10:59:14.025]收←◆I (315) esp_image: segment 3: paddr=0013718c vaddr=408081d8 size=10d98h ( 69016) load
I (329) esp_image: segment 4: paddr=00147f2c vaddr=40818f80 size=04004h ( 16388) load
I (337) boot: Loaded app from partition at offset 0x20000
I (337) boot: Disabling RNG early entropy source...
I (348) MSPI Timing: tuning success, best point is index 4
I (348) MSPI Timing: Flash timing tuning index: 4
I (348) cpu_start: Unicore app
I (372) cpu_start: Pro cpu start user code
I (372) cpu_start: cpu freq: 240000000 Hz
I (372) app_init: Application information:
I (372) app_init: Project name:     network_adapter
I (377) app_init: App version:      015ab30-dirty
I (381) app_init: Compile time:     Oct 20 2025 10:25:07
I (386) app_init: ELF file SHA256:  659e4febf...
I (390) app_init: ESP-IDF:          v5.5.1-dirty
I (395) efuse_init: Min chip rev:     v1.0
I (399) efuse_init: Max chip rev:     v1.99 
I (403) efuse_init: Chip rev:         v1.0
I (406) heap_init: Initializing. RAM available for dynamic allocation:
I (413) heap_init: At 40824500 len 000380A0 (224 KiB): RAM
I (418) heap_init: At 4085C5A0 len 00002F58 (11 KiB): RAM
I (423) heap_init: At 50000000 len 00003FE8 (15 KiB): RTCRAM
I (429) spi_flash: detected chip: generic
I (432) spi_flash: flash io: qio
I (435) sleep_gpio: Configure to isolate all GPIO pins in sleep state
I (441) sleep_gpio: Enable automatic switching of GPIO sleep configuration
I (448) coexist: coex firmware version: b0bcc39

[10:59:14.182]收←◆I (479) coexist: coexist rom version 78e5c6e42
I (479) main_task: Started on CPU0
I (479) main_task: Calling app_main()
I (485) co-pro-main: *********************************************************************
I (486) co-pro-main:                 ESP-Hosted-MCU Slave FW version :: 2.5.2                        
I (495) co-pro-main:                 Transport used :: SPI only                      
I (502) co-pro-main: *********************************************************************
I (510) SPI_DRIVER: Using SPI interface

[10:59:14.242]收←◆I (538) SPI_DRIVER: SPI Ctrl:1 mode: 3, Freq:ConfigAtHost
GPIOs: CLK:6 MOSI:7 MISO:2 CS:10 HS:3 DR:4

I (538) SPI_DRIVER: Hosted SPI queue size: Tx:20 Rx:20
I (541) SPI_DRIVER: SPI post process task started
I (545) co-pro-main: Mandate host wakeup
I (549) co-pro-main: host reset handler task started
I (553) co-pro-main: Supported features are:
I (557) co-pro-main: - WLAN over SPI
I (561) h_bt: - BT/BLE
I (563) h_bt:    - HCI Over SPI
I (565) h_bt:    - BLE only
I (568) co-pro-main: capabilities: 0xe8
I (572) co-pro-main: Supported extended features are:
I (576) h_bt: - BT/BLE (extended)
I (579) co-pro-main: extended capabilities: 0x0
I (584) co-pro-main: host reconfig event
I (587) SPI_DRIVER: Slave chip Id[12]
I (591) main_task: Returned from app_main()

[10:59:14.352]收←◆I (645) co-pro-main: Slave init_config received from host
I (645) co-pro-main: Host capabilities: 44
I (645) co-pro-main: ESP<-Host wifi flow ctl start thres [90%]
I (648) co-pro-main: ESP<-Host wifi flow ctl clear thres [60%]

[10:59:44.250]收←◆I (30545) stats: STA: flw_ctrl(on[0] off[30]) H2S(in[0] out[0] fail[0]) S2H(in[0] out[0]) Ctrl: (in[0] rsp[0] evt[0])
I (30545) stats: Lwip: in[0] slave_out[0] host_out[0] both_out[0]




Host log:
I (370) host_init: ESP Hosted : Host chip_ip[18]
I (394) H_API: ESP-Hosted starting. Hosted_Tasks: prio:23, stack: 5120 RPC_task_stack: 5120
I (412) H_API: ** add_esp_wifi_remote_channels **
I (412) transport: Add ESP-Hosted channel IF[1]: S[0] Tx[0x4000c54c] Rx[0x40020bce]
I (412) transport: Add ESP-Hosted channel IF[2]: S[0] Tx[0x4000c490] Rx[0x40020bce]
spi_mempool_create free:97228 min-free:97228 lfb-def:57344 lfb-8bit:57344

I (413) spi_wrapper: Transport: SPI, Mode:3 Freq:40MHz TxQ:20 RxQ:20
 GPIOs: CLK:18 MOSI:14 MISO:15 CS:19 HS:16 DR:17 SlaveReset:44
I (415) spi: Staring SPI task
I (415) os_wrapper_esp: GPIO [16] configuring as Interrupt
I (415) gpio: GPIO[16]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (416) main_task: Started on CPU0
I (416) os_wrapper_esp: GPIO [17] configuring as Interrupt
I (416) gpio: GPIO[17]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (417) main_task: Calling app_main()
�[5n
 ==============================================================
 |       Steps to test Robot Console                          |
 |                                                            |
 |  1. Print 'help' to gain overview of commands              |
 |  2. conn -c wifi <ssid> <password> //connect wifi          |
 |  3. conn -c wifi clear //for clear wifi                    |
 |  4. conn -c wificmd // add iperf test command              |
 |  5. ota -c fota <url> <size> <sha256> // fota test command |
 |  6. ota -c sota <url> <size> <sha256> // sota test command |
 |  7. ota -c c5 <url> // c5 local ota command                |
 |                                                            |
 ==============================================================


Type 'help' to get the list of commands.
Use UP/DOWN arrows to navigate through command history.
Press TAB when typing command name to auto-complete.

Your terminal application does not support escape sequences.

Line editing and history features are disabled.

On Windows, try using Putty instead.
cmd> I (982) bsp_display: SPI BUS init
I (983) bsp_display: Install panel IO
I (983) gpio: GPIO[42]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0 
W (1225) JD9853: The 3Ah command has been used and will be overwritten by external initialization sequence
I (1227) LVGL: Starting LVGL task
I (1311) bsp_display: LCD brightness set to 100%
I (1312) sdio_mount: try to mount sd card...
I (1313) gpio: GPIO[10]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1314) gpio: GPIO[11]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1315) gpio: GPIO[6]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1315) gpio: GPIO[7]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1316) gpio: GPIO[8]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1317) gpio: GPIO[9]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0 
E (1319) sdmmc_io: sdmmc_io_reset: unexpected return: 0x108
E (1319) vfs_fat_sdmmc: sdmmc_card_init failed (0x108).
I (1320) gpio: GPIO[10]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1320) gpio: GPIO[11]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1321) gpio: GPIO[6]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1322) gpio: GPIO[7]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1323) gpio: GPIO[8]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1324) gpio: GPIO[9]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
E (1324) sdio_mount: init sd card failed: ESP_ERR_INVALID_RESPONSE
E (1325) sdio_mount: Failed to create directory: /sdcard/fota: No such file or directory
E (1326) sdio_mount: Failed to create directory: /sdcard/sota: No such file or directory
E (1326) sdio_mount: Failed to create directory: /sdcard/sotabu: No such file or directory
I (1327) goer_ota: fota start signal create success
I (1328) goer_ota: sota start signal create success
I (1328) goer_ota: FOTA task start
I (1329) ota_interfaces: Registering OTA command
I (1330) transport: Attempt connection with slave: retry[0]
I (1330) spi: Reseting slave
I (1331) spi: Resetting slave on SPI bus with pin 44
I (1331) os_wrapper_esp: GPIO [44] configured
I (1331) gpio: GPIO[44]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0 
I (1834) transport: Waiting for esp_hosted slave to be ready
I (1921) transport: Received INIT event from ESP32 peripheral
I (1922) transport: EVENT: 12
I (1922) transport: Identified slave [esp32c5]
I (1922) transport: EVENT: 11
I (1923) transport: capabilities: 0xe8
I (1923) transport: Features supported are:
I (1923) transport: 	   - HCI over SPI
I (1924) transport: 	   - BLE only
I (1924) transport: EVENT: 13
W (1924) transport: === ESP-Hosted Version Warning ===
Version on Host is NEWER than version on co-processor
RPC requests sent by host may encounter timeout errors
or may not be supported by co-processor
W (1926) transport: === ESP-Hosted Version Warning ===
I (1926) transport: ESP board type is : 23 

I (1926) transport: Base transport is set-up, TRANSPORT_TX_ACTIVE
I (1927) H_API: Transport active
I (1927) transport: Slave chip Id[12]
I (1927) transport: raw_tp_dir[-], flow_ctrl: low[60] high[90]
I (1928) transport: transport_delayed_init
I (1928) esp_cli: Remove any existing deep_sleep cmd in cli
I (1929) esp_cli: Registering command: crash
I (1929) esp_cli: Registering command: reboot
I (1930) esp_cli: Registering command: mem-dump
I (1930) esp_cli: Registering command: task-dump
I (1930) esp_cli: Registering command: cpu-dump
I (1931) esp_cli: Registering command: heap-trace
I (1931) esp_cli: Registering command: sock-dump
I (1931) esp_cli: Registering command: host-power-save
I (1932) vhci_drv: Host BT Support: Enabled
I (1932) vhci_drv: 	BT Transport Type: VHCI
I (1933) spi: Received INIT event
I (2034) NimBLE_BLE_PRPH: BLE Host Task Started
connection_load_dataREAD connection INFO     0  0 
 I (2536) connection: NetWork not configed, start ble advertising 0  0 
<>connectivity_network_state_change 2 
I (2537) robot_master_main: Show <wakeup>
E (4035) NimBLE: HCI wait for ack returned 19 

I (4035) NimBLE: ogf=0x03, ocf=0x0003, core_err=0x13 : BLE_HS_ETIMEOUT_HCI (HCI request timed out; controller unresponsive)

E (4036) NimBLE: Resetting state; reason=19

E (6037) NimBLE: HCI wait for ack returned 19 

I (6037) NimBLE: ogf=0x03, ocf=0x0003, core_err=0x13 : BLE_HS_ETIMEOUT_HCI (HCI request timed out; controller unresponsive)

E (6038) NimBLE: Resetting state; reason=19

E (8038) NimBLE: HCI wait for ack returned 19 

I (8038) NimBLE: ogf=0x03, ocf=0x0003, core_err=0x13 : BLE_HS_ETIMEOUT_HCI (HCI request timed out; controller unresponsive)

E (8039) NimBLE: Resetting state; reason=19

E (10039) NimBLE: HCI wait for ack returned 19 

I (10039) NimBLE: ogf=0x03, ocf=0x0003, core_err=0x13 : BLE_HS_ETIMEOUT_HCI (HCI request timed out; controller unresponsive)

E (10040) NimBLE: Resetting state; reason=19

Steps to reproduce the behavior

1.idf.py create-project-from-example "espressif/esp_hosted=2.5.2:slave" change to spi communication config
2.esp32_p4 master using nimble for ble advertising

Project release version

slave 2.5.2-slave 2.6.1

System architecture

Intel/AMD 64-bit (modern PC, older Mac)

Operating system

Linux

Operating system version

ubuntu 22.04

Shell

ZSH

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions