Firmware 1.19.1 on NUCLEO-WB55 is failing on BLE functions
Hello
MicroPython Firmware : 1.19.1
Board : STMicrolectronics NUCLEO-WB55
Since recent STMicroelectronics releases of stm32wb5x_BLE_HCILayer_fw.bin, available here :
https://github.com/STMicroelectronics/STM32CubeWB/tree/master/Projects/STM32WB_Copro_Wireless_Binaries/STM32WB5x
all BLE scripts run on NUCLEO-WB55 boards are failing with message :
tl_ble_wait_resp: timeout.
Please help !
I did not found any way to restore BLE functions, even while downgrading stm32wb5x_BLE_HCILayer_fw.bin to rev 1.13 which was the one used for MicroPython firmware developement.
Best regards
Yannick
stm32: support for BLE on STM32WB55 MCUs
This is a WIP to add support for the RF coprocessor on STM32WB55 MCUs, in BLE mode.
It requires that the stm32wb5x_BLE_HCILayer_fw.bin wireless stack be already programmed to the device in the secure flash area. See ST docs (STM32Cube_FW_WB_V1.1.0, directory Projects/STM32WB_Copro_Wireless_Binaries) for how to do this. (It may work with stm32wb5x_BLE_Stack_fw.bin but that's untested at this point.)
The implementation here provides an IPCC shared memory communication layer to talk with the coprocessor and exposes it as a BT HCI device to the Nimble stack, the latter which runs on the main processor. From the user's point of view the API is the standard bluetooth module and should behave the same as other BLE ports/boards (currently stm32 PYBD, and esp32).
gap_scan and gap_advertise are working. Supported boards are NUCLEO_WB55 and USBDONGLE_WB55.
Known limitations/problems:
- requires BLE_HCILayer WS firmware to be already programmed (edit: or BLE_Stack also works)
- after doing DFU programming of main FW device requires a reset to work
- gap_scan with finite timeout somehow stops event processing at end of timeout, and typing any key at the REPL will restart processing (edit: now fixed)
- gap_advertise requires a properly formed advertising packet to work
- connecting to the device does not yet work (edit: now working)
- connecting from the device to another peripheral is not yet tested (edit: tested and working)
- IPCC IRQs are not yet implemented