Revision as of 10:09, 7 September 2021 by Registered User (→‎STM32WB - BLE AT Server Overview)
Under construction.png Coming soon

1. STM32WB - BLE AT Server Overview

This is a description how to improve the data throughput while updating the STM32WB Application or Wireless Stack thanks to wireless STM32WB Bluetooth® LE protocol. The following Application Note describes the current implementation of BLE_Ota application:

  • AN5247 Over-the-air application and wireless firmware update for STM32WB Series microcontrollers

The BLE_Ota application is available by downloading STM32CubeWB[1] release

Project BLE_Ota - P-NUCLEO-WB55.Nucleo

1.1. Limitation with current implementation

  • The OTA RAW Data Characteristic is limited to 20 bytes
  • So transmitted ATT Packet data length is limited.

The following figure is an air capture of the OTA RAW data characteristic sent by the Android Smart Phone application ST BLE Sensor

ATT Write - 20 bytes



1.2. How to increase the data throughput

  • by increasing the size of the OTA RAW data characteristic to 248 - done with CubeWB 1.12.0 release
#define OTAS_STM_RAW_DATA_SIZE    (248)                                                //otas_stm.h
#define OTA_RAW_DATA_CHAR_SIZE    OTAS_STM_RAW_DATA_SIZE      //otas_stm.c

 /**
   *  Add Raw Data Characteristic
   */
  aci_gatt_add_char(OTAS_Context.OTAS_SvcHdle,
                    OTA_UUID_LENGTH,
                    (Char_UUID_t *)OTA_RAW_DATA_CHAR_UUID,
                    OTA_RAW_DATA_CHAR_SIZE,
                    CHAR_PROP_WRITE_WITHOUT_RESP,
                    ATTR_PERMISSION_NONE,
                    GATT_NOTIFY_ATTRIBUTE_WRITE | GATT_NOTIFY_WRITE_REQ_AND_WAIT_FOR_APPL_RESP,
                    10,
                    1,
                    &(OTAS_Context.OTAS_Raw_Data_CharHdle));
  • by increasing the size of ATT Maximum Transmission Unit (MTU) which is the maximum length of an ATT packet
/**
 * Maximum supported ATT_MTU size
 * This parameter is ignored by the CPU2 when CFG_BLE_OPTIONS is set to 1"
 */
#define CFG_BLE_MAX_ATT_MTU             (251)
  • by managing with GATT Client remote application the negotiation of the ATT MTU to increase the data payload for the transmitted packets
ATT MTU Exchange

1.3. GATT CLIENT - ANDROID - ST BLE Sensor v4.12.0

The Android ST BLE Sensor application version v4.12.0 is available on Google Play[2]

This is the version which supports the FAST FUOTA by requesting the maximum ATT MTU and by maximizing the payload of the OTA RAW data characteristic.

ST BLE Sensor Fast FUOTA Procedure

Most of the Android smart phone requests a Connection interval around 45ms which is enough for the BLE OTA Application to receive the packets and write the data to the flash.

Fast FUOTA Connection Interval - Ellisys Air Trace

The packet size is maximized to 248 bytes for the ATT Packet OTA RAW Characteristics

Fast FUOTA ATT Packet - Ellisys Air Trace

So few seconds are necessary to update the P2P server application (32.1KB)

Fast FUOTA file transfer - Ellisys Air Trace

1.4. Video related to Fast FUOTA - to be placed on Youtube???

pc videol.png

Fast FUOTA for P2P server application

1.5. References