# QCC730 OTA upgrade Source: [https://docs.qualcomm.com/doc/80-Y8730-2/topic/firmware_upgrade.html](https://docs.qualcomm.com/doc/80-Y8730-2/topic/firmware_upgrade.html) QCC730 provides a flexible and modular over-the-air (OTA) upgrade feature. This feature obtains a new image through the Wi-Fi network and replaces the original image in the NOR flash of QCC730. The OTA framework is based on plug-ins for different transport protocols and is agnostic to the interface used. For example, OTA upgrade can occur using TFTP running over the WLAN interface. The QCC730 SDK provides sample trivial file transfer protocol (TFTP) plug-ins. See [QCLI sub-group: FwUp](https://docs.qualcomm.com/doc/80-Y8730-2/topic/qcli_sub_group_fwup.html) for more information about CLI commands to test OTA upgrade. Figure : QCC730 OTA framework Application Application OTA plugins OTA plugins FTP, TFTP, HTTP/HTTPS FTP, TFTP, HTTP/HTTPS QAPI QAPI OTA engine OTA engine Firmware upgrade services Firmware upgrade services IP stack IP stack BSP BSP Flash/partition/file system services Flash/partition/file system services Interface (Wi-Fi, 15.4 …...) Interface (Wi-Fi, 15.4 …...) Serial flash Serial flash ## OTA upgrade overview Source: [https://docs.qualcomm.com/doc/80-Y8730-2/topic/firmware_upgrade.html](https://docs.qualcomm.com/doc/80-Y8730-2/topic/firmware_upgrade.html) At the core of the OTA upgrade mechanism is the concept of Current and Trial image sets in flash. A Current or Active image set holds the image currently running on the device. A Trial image set is used to store images that are downloaded during OTA upgrade. Optionally, there is provision for a Golden image set, which can be used to store factory-reset images (for details, see [Supported flash configuration](https://docs.qualcomm.com/doc/80-Y8730-2/topic/firmware_upgrade.html#supported_flash_configuration)). The following steps provide a high-level overview of the OTA upgrade procedure that uses the Current + Trial image sets: 1. Application triggers OTA upgrade by invoking upgrade QAPI. Connection and plug-in parameters are passed through the API. 2. The plug-in initiates a connection to the server and downloads the configuration file. This file provides information about the number of subimages, image size, and hash value. 3. Based on the configuration, other images are downloaded, validated, and written to a Trial partition in flash for APP image or a Trial SBL location for SBL image. If images are written successfully, these Trial images are marked as valid and a system reset is triggered. 4. The PBL, on detecting the presence of a Trial SBL image set, loads the newly downloaded images. 5. The application may now choose to run some tests before confirming the success or failure. 6. If the OTA upgrade is successful, the Trial images are marked as Current. All subsequent reboots load the new set of Current images. 7. If the OTA upgrade fails, the Trial images are marked as invalid and a subsequent reboot loads the last known set of Current images. ## OTA image set Source: [https://docs.qualcomm.com/doc/80-Y8730-2/topic/firmware_upgrade.html](https://docs.qualcomm.com/doc/80-Y8730-2/topic/firmware_upgrade.html) A typical image set for QCC730 OTA upgrade contains the following components: - Configuration file - M4 Boot Loader image (optional, prebuilt by Qualcomm, can be modified later) - Application image (runs on Cortex-M4F) ## Supported flash configuration Source: [https://docs.qualcomm.com/doc/80-Y8730-2/topic/firmware_upgrade.html](https://docs.qualcomm.com/doc/80-Y8730-2/topic/firmware_upgrade.html) The OTA upgrade for QCC730 supports two types of flash configurations: - Current + Trial (default) - Golden + Current + Trial (optional) ### Current + Trial By default, QCC730 firmware update uses Current + Trial image sets. This image set follows the ping-pong approach. The Trial region holds the newly downloaded images. After the OTA upgrade is validated, Trial images become the new Current images. This is the minimal configuration required to perform an OTA upgrade. ### Golden + Current + Trial If you want to implement the Golden + Current + Trial image sets. Follow these steps to generate the corresponding ota.bin file: 1. In the qccsdk\modules\fw\_upgrade\Kconfig file, update the value of `default` to `3` as follows, and then build the APP image. config FW_UPGRADE_FWD_SUPPORT_NUM int "supported fw upgrade fwd numbers" depends on FW_UPGRADE default 3 range 2 3Copy to clipboard 2. Flash the FDT for using the Golden + Current + Trial image sets. The corresponding .bin file is qccsdk\tools\storage\firmware\_desc\_table\curr\_gold\_age\_fdt\frn\_curr\_gold\_age\_default.bin. See [Usage examples](https://docs.qualcomm.com/doc/80-Y8730-2/topic/sdk_tools_for_building_and_flashing_images.html#usage_examples) for command examples. 3. In the qccsdk\tools\fw\_upgrade\download\_config.xml file, update the following entry to reflect the corresponding .bin file for the FDT. Copy to clipboard 4. In the qccsdk\tools\fw\_upgrade\fw\_upgrade.xml file, update the value of `filename` to reflect the name of the intended APP image. Copy to clipboard 5. Run the following command to generate the ota.bin file: python gen_fw_upgrade_img.py --xml fw_upgrade.xml --output ota.binCopy to clipboard ## Configuration file Source: [https://docs.qualcomm.com/doc/80-Y8730-2/topic/firmware_upgrade.html](https://docs.qualcomm.com/doc/80-Y8730-2/topic/firmware_upgrade.html) The configuration file contains all the metadata required by the engine to perform a successful OTA upgrade. The SDK contains image generation tools for generating the configuration file based on your requirements. The following figure shows the format of the configuration file. Note: Version Number is a 4-byte field stored in flash during firmware OTA upgrade and can be retrieved by the application using a QAPI. Figure : QCC730 OTA upgrade configuration file format FieldSize in bytesota.binconfig filemagic4 config fileImageSet_Hdr_Part1version4 imagesImage_Hdr * nformat4 Valuehashlength4 1num_images1 2TOTAL17 FieldSize in bytesmagic4 image_id4 version4 image_file128 disk_size4 Image_length4 hash_type4 hash32 TOTAL184 magic0x54445746Sizeof(ImageSet_Hdr_Part1) +num_images*sizeof(Image_Hdr) + 32Image_HdrImageSet_Hdr_Part10x54445746magicFull upgrade in one filePartial upgradeInterpretationformatlength ## Support for partial upgrade Source: [https://docs.qualcomm.com/doc/80-Y8730-2/topic/firmware_upgrade.html](https://docs.qualcomm.com/doc/80-Y8730-2/topic/firmware_upgrade.html) You can optionally choose to upgrade a subset of images instead of the entire image set. For example, consider the scenario where a critical fix is applied in the application image, but no changes are made to the other images. In this case, the image set includes just the configuration file and the updated application image. To recreate the complete image set, the upgrade engine can copy missing images from the Current partition to the Trial partition. The engine can also identify the subimages that have changed since the last upgrade (by comparing the hash values) and then selectively download them. ## Support for full upgrade Source: [https://docs.qualcomm.com/doc/80-Y8730-2/topic/firmware_upgrade.html](https://docs.qualcomm.com/doc/80-Y8730-2/topic/firmware_upgrade.html) Full upgrade is the default upgrade type. The upgrade engine copies the entire image set to the Trial partition in a single combined file. ## OTA upgrade image generation tool Source: [https://docs.qualcomm.com/doc/80-Y8730-2/topic/firmware_upgrade.html](https://docs.qualcomm.com/doc/80-Y8730-2/topic/firmware_upgrade.html) The QCC730 SDK includes Python-based tools for generating OTA upgrade images. The tool is available at: qccsdk\tools\fwupgrade\gen\_fw\_upgrade\_img.py. The tool reads an XML configuration file for input parameters. A sample XML file is available at: qccsdk\tools\fwupgrade\fw\_upgrade.xml. The XML file that contains information on different images is included in the combined upgrade image. The parameters in the XML file are as follows: - `filename`: Indicates the path to an image binary/ELF. The path must be the same path at the firmware upgrade server. - `image_id`: An identifier that's associated with each image and must not be modified. The possible values are: - 10: Cortex-m4f application image - 1: Cortex-m4f secondary boot loader image - `size_in_kb`: Non-zero value is used to reserve space for an image (for example: file system). When the value is set to zero, the size is calculated from the image file. Example XML file running the QCLI demo:
Copy to clipboard You can edit this file to indicate the location of the application image. The following command generates a combined firmware upgrade image called ota.bin: python gen_fw_upgrade_img.py --xml fw_upgrade.xml --output ota.binCopy to clipboard The ota.bin and all files listed in fw\_upgrade.xml need be copied to the firmware upgrade server for firmware upgrade when `format` is set to 1 in fw\_upgrade.xml. The ota.bin file need be copied to the OTA upgrade server for firmware upgrade when `format` is set to 2 in fw\_upgrade.xml. The ota.bin file includes the config file and all files listed in fw\_upgrade.xml. Last Published: Jun 03, 2026 [Previous Topic ELF load details during QCC730 boot](https://docs.qualcomm.com/bundle/publicresource/80-Y8730-2/topics/qcc730_boot_elf_load.md) [Next Topic Build and flash tools](https://docs.qualcomm.com/bundle/publicresource/80-Y8730-2/topics/sdk_tools_for_building_and_flashing_images.md)