# 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
## 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
## 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)