cancel
Showing results for 
Search instead for 
Did you mean: 

STM32WB05KN (NUCLEO-WB05KN1) FOTA / OTA Firmware Update Support

burak_Guzeller
Associate III

Hello,

I am currently working with the NUCLEO-WB05KN1 development board (STM32WB05KN MCU) and I would like to implement FOTA (Firmware Over-The-Air) / OTA update over Bluetooth.

However, I could not find any clear reference documentation, application note, or example project related to:

  • Bootloader implementation for OTA
  • Memory partitioning (dual bank / slot usage)
  • BLE-based firmware update flow
  • Any official FOTA example for STM32WB05 series

I checked the datasheet and reference manual, but there is no clear explanation of:

  • Whether a built-in/system bootloader supports OTA via BLE
  • How to structure the flash (bootloader + application separation)
  • Any middleware/library support for firmware update

Currently, my memory usage is:

  • FLASH: ~34%
  • RAM: ~49%

So I still have space to implement a custom bootloader if needed.

My questions:

  1. Is there any official ST example or application note for OTA/FOTA on STM32WB05KN?
  2. Does STM32WB05 series support BLE OTA natively (like STM32WB55)?
  3. If not, what is the recommended approach?
    • Custom bootloader + BLE service?
    • Any existing middleware (like SBSFU or similar)?
  4. Are there any reference projects (GitHub or ST examples) for this specific MCU?

Any guidance, documentation, or example would be highly appreciated.

Thanks in advance.

5 REPLIES 5
Imen.D
ST Employee

Hello @burak_Guzeller 

The X-CUBE-WB05N software package provides a BLE_FOTA application specifically designed for the STM32WB05 series. 

You can refer to the following resources which offer further details:

When your question is answered, please close this topic by clicking "Accept as Solution".
Thanks
Imen
burak_Guzeller
Associate III

Hello,

Thank you for your response and for pointing me to X-CUBE-WB05N and the BLE_FOTA example.

I have reviewed the suggested resources, however I have some concerns regarding memory constraints on my current project.

As you can see from my current memory usage:

  • FLASH usage: ~78%
  • RAM usage: ~53%

This leaves a very limited space for implementing a full FOTA solution like the provided BLE_FOTA example.

My understanding is that the default FOTA implementation requires:

  • A dedicated bootloader
  • Separate memory slots (for current and new firmware)
  • Additional RAM usage for buffering during BLE transfer

Given these limitations, I would like to ask:

  1. Is there any lightweight FOTA/OTA approach recommended for STM32WB05KN with constrained FLASH/RAM?
  2. Can the BLE_FOTA example be reduced or optimized (e.g., single-slot update, external memory, or partial update)?
  3. Is there any support for:
    • in-place firmware update (without dual-bank/dual-slot)?
    • streaming update directly to flash?
  4. Are there any minimal bootloader examples instead of the full-featured FOTA implementation?
  5. Would you recommend using an external flash for staging the new firmware in such cases?

My goal is to implement OTA over BLE, but with a very small memory footprint, even if it means sacrificing some robustness features (like rollback).

Any guidance, best practices, or example references for low-memory OTA design on STM32WB05 would be highly appreciated.

Thanks in advance.

Hi @burak_Guzeller 

You can also review the best practices for OTA Design described in UM2726.

I will try to contact expert internally for you to have additional recommendation and guidance on this topic.

When your question is answered, please close this topic by clicking "Accept as Solution".
Thanks
Imen

Hi  @burak_Guzeller ,

Are you referring to a X-NUCLEO-WB05KN1 which is used within the X-CUBE-WB05N SW framework: STM32W05N Bluetooth LE network/radio coprocessor?

I've heard back from the wireless team that the BLE_FOTA framework available on

\X-CUBE-WB05N_Vx.y.x\Projects\NUCLEO-U575ZI\Applications\UART\BLE_FOTA is designed to update the applications running over the external microcontroller (STM32U5) and not on STM32WB05 device. 

In this context, the STM32WB05N micro hosted on X-NUCLEO-WB05KN1 must be loaded with the BLE_TransparentMode application which allows to configure it as a network coprocessor. 
Therefore, this application cannot be modified without impacting the network coprocessor framework.

Regarding the SW framework used: Are you working on the selected external microcontroller using the X-NUCLEO-WB05KN1 as a network coprocessor? Or are you referring to STM32WB05 device (NUCLEO-WB05NKZ) used as an application processor?

The reference information about the OTA framework are available on AN5977, in Section 2.8.6 FUOTA. which describes the STM32WB0 FUOTA specification.
Regarding the specific application you're designing, you should also take in account the required memory footprints for the specific application and select the proper one suitable for your needs. 
STM32WB05 is offering 192 Kbytes Flash and 24 Kbytes RAM (so not suitable for OTA scenarios where Flash is effectively handled in 2 areas: one for download and one for application execution). 
We're also offering the STM32WB09 device with 512 Kbytes Flash and 96 Kbytes RAM which is suitable for OTA scenarios. 

Hope this is helpful for you.

When your question is answered, please close this topic by clicking "Accept as Solution".
Thanks
Imen

Thank you for the clarification.

Let me explain my setup and constraints more clearly.

I am using the STM32WB05KNV6TR as a standalone MCU in my final product (not as a network coprocessor). For development and validation, I am using the X-NUCLEO-WB05KN1 expansion board mounted on a NUCLEO-F030R8.

My target is to implement a BLE-based OTA/FOTA mechanism for field updates.

Current resource usage:

  • Flash: ~34 KB used out of 64 KB
  • RAM: ~4.15 KB used out of 8 KB

From your explanation, I understand that:

  • There is no official BLE OTA support for STM32WB05 (unlike STM32WB55)
  • The provided BLE_FOTA example is intended for updating an external MCU, not the WB05 itself
  • Due to limited Flash (64 KB), a dual-slot OTA architecture is not feasible

Given these constraints, I would like to clarify the recommended approach for my case:

  1. Is implementing a custom single-slot OTA bootloader (overwriting the existing application) a viable approach on STM32WB05?
  2. Are there any best practices or reference designs for handling:
    • Firmware integrity (CRC/checksum)
    • Power-loss protection during update
  3. Would you recommend using external SPI Flash as a staging area for firmware to enable a safer update process?
  4. Is there any minimal or unofficial example (even partial) demonstrating firmware update over BLE on WB05?

Additionally, I could not find STM32WB05KNV6TR in STM32CubeMX.
Is this device not fully supported in CubeMX, or should it be configured under a different part/series?

My goal is to keep using WB05 for cost and design reasons, but I also need a reliable firmware update mechanism for production devices.

Any guidance or recommendations would be greatly appreciated.

Thank you.