Issues with HCI on STM32WB1MMC / STM32WB55RG – Unrecognized Commands
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2025-05-09 7:00 AM
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
Is the stm32wbxx_BLE_HCILayer_fw.bin binary usable without a specific application to map UART?
Is the Transparent Mode example expected to support a complete set of HCI commands?
Are there known limitations to the available HCI command set in the BLE full or extended stacks?
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 !
Solved! Go to Solution.
- Labels:
-
STM32WB series
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2025-05-12 6:01 AM
Thank you very much for your detailed answer !
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 functional. stm32wb1x_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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2025-05-12 2:06 AM - edited 2025-05-12 7:35 AM
Hello @Seris and welcome to the ST Community.
- 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.
- 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.
- 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:
- 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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2025-05-12 6:01 AM
Thank you very much for your detailed answer !
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 functional. stm32wb1x_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.
