cancel
Showing results for 
Search instead for 
Did you mean: 

Issues with HCI on STM32WB1MMC / STM32WB55RG – Unrecognized Commands

Seris
Associate

Hi everyone,

I’ve been working with the STM32WB1MMC module and I’m running into several issues related to HCI command support over UART.


1. Using stm32wb1x_BLE_HCILayer_fw.bin

I started by flashing the binary found here:
STM32CubeWB/Projects/STM32WB_Copro_Wireless_Binaries/STM32WB1x

Unfortunately, the module doesn’t respond to any HCI commands over UART.
Is this binary supposed to work standalone, or does it require an application to map the UART interface?
I’ve tried several UART ports but haven’t received any response so far.


2. Testing Transparent Mode

To explore alternatives, I looked into the Transparent Mode example from ST:
STM32CubeWB/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode

According to the documentation, this application should allow controlling the MCU directly via HCI commands when used with the XX-BLE_Stack_full_fw.bin binary.

Since the project is only available for the Nucleo-WB55RG (not for the WB1MMC module), I ran tests on the WB55RG instead, which I had on hand.

Using CubeMonitorRF over USB, I managed to send and receive some HCI commands like RESET and HCI_READ_LOCAL_VERSION_INFORMATION. However, other basic commands — such as HCI_READ_LOCAL_SUPPORTED_FEATURES — return "unknown command".


3. Zephyr Integration Problem

The HCI_READ_LOCAL_SUPPORTED_FEATURES command is required by Zephyr during Bluetooth stack initialization.
I tested with Zephyr running on a Nucleo-H563ZI (STM32H5) as HCI master, and the WB55RG as the HCI slave via UART. The WB55RG still responded with "unknown command", which causes Zephyr to crash at startup.

I also noticed that several other HCI commands fail in the same way.


4. Trying the Extended BLE Stack

I followed ST’s suggestion to try the BLE_Stack_full_extended_fw.bin binary, which supposedly includes broader HCI support.
However, when I pair it with the Transparent Mode application, I get no response at all over UART.

Here’s the flashing process I followed:

  • Full flash erase

  • Flash the BLE stack at the correct address

  • Start the stack

  • Flash the Transparent Mode application

Still, no success.


Questions

  1. Is the stm32wbxx_BLE_HCILayer_fw.bin binary usable without a specific application to map UART?

  2. Is the Transparent Mode example expected to support a complete set of HCI commands?

  3. Are there known limitations to the available HCI command set in the BLE full or extended stacks?

  4. What is the recommended combination of stack + application to get a fully functional HCI interface over UART, compatible with Zephyr?

Thanks in advance for your help !

1 ACCEPTED SOLUTION

Accepted Solutions

Thank you very much for your detailed answer !

  1.  I assume it's some sort of minimal application or configuration required for basic HCI operation.

2 & 3. Thanks for the clarification regarding the stack variants and their support for HCI commands.

4. The issue I had with the stm32wb5x_BLE_Stack_full_extended_fw.bin stack was that I couldn't get any UART responses. I know it requires a modified linker file, but since I'm using the example provided by ST (Transparent Mode), I assumed the linker configuration would already be correct.

 

Interestingly, shortly after reading your message, I tested the stm32wb1x_BLE_HCILayer_fw.bin stack together with the Transparent Mode example, and it finally worked perfectly — all the HCI commands are supported and functionalstm32wb1x_BLE_HCILayer_extended_fw.bin is also functional.

That being said, I do want to highlight that the documentation is quite confusing. For example, in the release notes for the "full" stack, it says:

"HCI interface (full, like stm32wb5x_BLE_HCILayer_fw.bin)"
which is misleading, because this stack does not support all HCI commands.
Further down it also says:
"Some HCI interface features (won’t be able to process through HCI interface)"
which adds to the confusion.

In the end, what worked for me was:
Transparent Mode example + stm32wb5x_BLE_HCILayer_fw.bin

Just for reference, this also works on the STM32WB1MMC (stm32wb1x_BLE_HCILayer_fw.bin), after a quick configuration in CubeMX (.ioc) to enable Transparent Mode and map the correct UART.

View solution in original post

2 REPLIES 2
STTwo-32
ST Employee

Hello @Seris and welcome to the ST Community.

  1. The stm32wbxx_BLE_HCILayer_fw.bin is just a Stack that should be flashed to the coprocessor before the execution of Link Layer basic supported Commands.
  2. That does not depend on the Transparent Mode example but on the Stack variant that you are using. the stm32wb5x_BLE_Stack_full_fw is dedicated for Basic Features (BF) that does not support the HCI_READ_LOCAL_SUPPORTED_FEATURES command. The stm32wb5x_BLE_Stack_full_extended_fw does support all the API commands.  Other Stacks also support those functions. refer to the Questions 3 for more details.
  3. To Know the Compatibility between stacks and commands, you may refer to the Tables 1, 126, 136, 169, 270, 365, 384, 393, 409, 419, 449 and 461 of the AN5270 Rev30. together with this table: STTwo32_0-1747040573170.png
  4. For the Stack, you can use the stm32wb5x_BLE_Stack_full_extended_fw.bin stack that does support all API commands. For the Zephyr examples, those examples are made by Zephyr so, you may can check with them for such a recommendation.

Best Regards.

STTwo-32

To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.

Thank you very much for your detailed answer !

  1.  I assume it's some sort of minimal application or configuration required for basic HCI operation.

2 & 3. Thanks for the clarification regarding the stack variants and their support for HCI commands.

4. The issue I had with the stm32wb5x_BLE_Stack_full_extended_fw.bin stack was that I couldn't get any UART responses. I know it requires a modified linker file, but since I'm using the example provided by ST (Transparent Mode), I assumed the linker configuration would already be correct.

 

Interestingly, shortly after reading your message, I tested the stm32wb1x_BLE_HCILayer_fw.bin stack together with the Transparent Mode example, and it finally worked perfectly — all the HCI commands are supported and functionalstm32wb1x_BLE_HCILayer_extended_fw.bin is also functional.

That being said, I do want to highlight that the documentation is quite confusing. For example, in the release notes for the "full" stack, it says:

"HCI interface (full, like stm32wb5x_BLE_HCILayer_fw.bin)"
which is misleading, because this stack does not support all HCI commands.
Further down it also says:
"Some HCI interface features (won’t be able to process through HCI interface)"
which adds to the confusion.

In the end, what worked for me was:
Transparent Mode example + stm32wb5x_BLE_HCILayer_fw.bin

Just for reference, this also works on the STM32WB1MMC (stm32wb1x_BLE_HCILayer_fw.bin), after a quick configuration in CubeMX (.ioc) to enable Transparent Mode and map the correct UART.