cancel
Showing results for 
Search instead for 
Did you mean: 

Disable BLE while Zigbee running

HowardRoak
Associate

Hi, 

I would like to disable/re-enable BLE and keep the concurrent Zigbee stack in normal operation. Some other posts suggested to call hci_reset() to disable BLE and re-initialize it later when needed again.
After calling hci_reset() somehow Zigbee wont join the network anymore.
Are there shared components between the hci and Zigbee? Is what I am trying to achieve even possible with the tm32wb5x_BLE_Zigbee_FFD_dynamic_fw stack (I am using a P-NUCLEO-WB55)?

Thank you for any hint!

 

Best Regards,
Alexander

 

1 ACCEPTED SOLUTION

Accepted Solutions
HowardRoak
Associate

Hi,

hci_reset() is not a valid option in this case, because Zigbee won't work afterwards anymore.

What did work for me was

1. Disabling the advertising (if it's enabled and we are not connected)
    Call Adv_Cancel() which calls aci_gap_set_non_discoverable()

2. If we are already connected.
    Call aci_gap_terminate(connection_handle, 0x13)

 

 

 

 

View solution in original post

2 REPLIES 2
ghrairim
ST Employee

Hello @HowardRoak , 

And sorry to come back late to your question. 

In the context of the STM32WB series, which supports concurrent BLE and Zigbee operation, the hci_reset() command might not be designed to preserve the state of the Zigbee stack. The STM32WB series uses a dual-core architecture with one core dedicated to the application (Cortex-M4) and the other to the radio stack (Cortex-M0+). Resetting the HCI might affect the radio core, which could disrupt the operation of both BLE and Zigbee.

The hci_reset() command will reset the Bluetooth radio state, which means any ongoing BLE operations will be terminated. This could potentially affect the radio settings that might be shared with the Zigbee stack. 

Before issuing an hci_reset(), ensure that you gracefully shut down any BLE operations and properly configure the Zigbee stack to handle the reset.  So if possible, try to isolate the BLE and Zigbee stacks as much as possible to minimize the impact of commands like hci_reset() .

HowardRoak
Associate

Hi,

hci_reset() is not a valid option in this case, because Zigbee won't work afterwards anymore.

What did work for me was

1. Disabling the advertising (if it's enabled and we are not connected)
    Call Adv_Cancel() which calls aci_gap_set_non_discoverable()

2. If we are already connected.
    Call aci_gap_terminate(connection_handle, 0x13)