# Build and flash images The QCC730 Zephyr software package includes the source code of several demo applications. Follow the instructions in the following sections to build the required images and flash them to the QCC730M EVK. 1. Build the required images for the demo application. 2. Flash the images to the QCC730M EVK. 3. Flash the Wi-Fi MAC address to the QCC730M EVK. ## Build QCC730 images Follow these steps to build a Zephyr image for QCC730 on either Windows or Linux: Note The example commands use Windows paths. If you use Linux, replace them with the corresponding Linux paths. 1. Go to the workspace folder you created when setting up the Zephyr development environment. 2. Activate the Zephyr environment in the workspace folder. For instructions about activating or deactivating a Zephyr environment, see the Zephyr [Getting Started Guide](https://docs.zephyrproject.org/latest/develop/getting_started/index.html). 3. Go to the `qapp\qcli_app` folder: cd qapp\qcli_app Copy to clipboard 4. Use one of the following commands to build the Zephyr image for QCC730: - For an iPA EVK: west build -b qcc730mi Copy to clipboard - For an xPA EVK: west build -b qcc730mx Copy to clipboard The generated files are under the `qapp\qcli_app\build\zephyr\` directory. The Zephyr image name is `zephyr.bin`. ## Flash QCC730 images You can use one of the following methods on Windows or Linux: - Use the `west flash` command. - Use the NVM Programmer tool. Note The example commands use Windows paths. If you use Linux, replace them with the corresponding Linux paths. ## Use the `west` tool to flash QCC730 images ### Prerequisites The `west flash` command automatically searches the following required images. Make sure these images are ready. - The `zephyr.bin` or `zephyr_HASHED.elf` image under the build directory - The FDT, SBL, and board data file (BDF) images under the `modules\hal\qcom\zephyr\blobs` directory The QCC730 platform provides two separate storage areas: - RRAM - External flash Because application images can vary in size, the platform supports two storage strategies: - Store `zephyr.bin` directly in RRAM - Store `zephyr_HASHED.elf` in external flash The application selects the appropriate storage strategy by using different firmware description (FWD) files: - `frn_curr_age_with_app_bin.bin`: Specifies that the application image is in BIN format and stored in RRAM. - `frn_curr_age_default.bin`: Specifies that the application image is in ELF format and stored in external flash. The contents and partition layout of the external flash are defined in the following file: `\modules\hal\qcom\qfdt\download_config.xml` The following example shows a segment of this file. You can adjust the size of each segment by modifying the corresponding attributes. > > > > > … > > Copy to clipboard ### Flash images Follow these steps to flash QCC730 images to the QCC730M EVK by using the `west` tool: 1. Go to the workspace folder you created when setting up the Zephyr development environment. 2. Activate the Zephyr environment in the workspace folder. For instructions about activating or deactivating a Zephyr environment, see the Zephyr [Getting Started Guide](https://docs.zephyrproject.org/latest/develop/getting_started/index.html). 3. Go to the `qapp\qcli_app` folder: cd qapp\qcli_app Copy to clipboard 4. Run one of the following commands to flash the corresponding images to the QCC730M EVK: | Command | Description | | --- | --- | | west flash | Flash the zephyr.bin image | | west flash --all | Flash the following images:



>
>
> | | west flash --bdf | Flash the following images:



>
>
> | | west flash --all --bdf | Flash the following images:



>
>
> | | west flash -e --all -m flash --bdf | Flash the following images:



>
>
> | | west flash -e --all -m flash --bdf --golden | Flash the following images:



>
>
> | | west flash --caldb | Clear the calibration data. The QCC730M EVK reruns the calibration on the next power-on (cold boot calibration). | The QCC730M EVK automatically restarts after the command is completed. ## Use NVM Programmer to flash QCC730 images Follow these steps to flash QCC730 images to the QCC730M EVK by using NVM Programmer: 1. Create a new folder on your Windows or Linux computer. For example, `zephyr_flash`. 2. Copy the `\modules\hal\qcom\tools\qprgc\` folder to the `zephyr_flash` folder. 3. Copy the following files from Zephyr workspace to the `\zephyr_flash\qprgc\` folder: - The following files under the `\modules\hal\qcom\zephyr\blobs\` folder: - `bdwlan01.bin` - `bdwlan03.bin` - `mqm730i.bin` - `mqm730x.bin` - `regdb.bin` - `frn_curr_age_with_app_bin.bin` - `frn_curr_age_default.bin` - `firmware_table.bin` - `qcc730mi_prg.elf` or `qcc730mx_prg.elf` - `qcc730mi_sbl_HASHED.elf` or `qcc730mx_sbl_HASHED.elf` - `\qapp\qcli_app\build\zephyr\zephyr.bin` - `\qapp\qcli_app\build\zephyr\zephyr_HASHED.elf` - `\qcc730\boards\qcom\common\qcc730.JLinkScript` - `\qcc730\boards\qcom\common\qcc730_openocd_ch347.cfg` 4. Run the following command in the `\zephyr_flash\qprgc\` folder to flash the images one at a time to the QCC730M EVK: python nvm_programmer.py -s [ch347|jlink] -i [qcc730mi_prg.elf or qcc730mx_prg.elf] -n rram --server-script [qcc730_openocd_ch347.cfg or qcc730.JLinkScript] -b -f Copy to clipboard See the following table to determine the `-b` and `-f` parameters for each image: | Image name | Parameters | | --- | --- | | Firmware descriptor table | -b 0x208000 -f frn\_curr\_age\_with\_app\_bin.bin | | Secondary boot loader | -b 0x20a400 -f qcc730mi\_sbl\_HASHED.elf or qcc730mx\_sbl\_HASHED | | Regulatory database | -b 0x373000 -f regdb.bin | | Board data file -iPA | -b 0x37a000 -f mqm730i.bin | | Board data file -xPA | -b 0x37a000 -f mqm730x.bin | | Zephyr BIN image | -b 0x222400 -f zephyr.bin | | Firmware descriptor table | -b 0x208000 -f frn\_curr\_age\_default.bin | | FWD in flash | -n flash -b 0x0 -f firmware\_table.bin | | Zephyr elf image | -n flash -b 0x43000 -f zephyr\_HASHED.elf | If you have flashed these images to a QCC730M EVK and want to flash a new Zephyr image, you only need to flash the Zephyr image again. All other images require flashing only once. Flashing the BDF image isn’t required because it’s pre-flashed on every QCC730M EVK. 5. Run the following command to reset the QCC730M EVK: python nvm_programmer.py -s [ch347|jlink] -i [qcc730mi_prg.elf or qcc730mx_prg.elf] --reset Copy to clipboard Important The factory-prestored 2.4 GHz digital predistortion (DPD) calibration data may be out of date. To ensure accurate calibration, it’s highly recommended that you clear the prestored calibration data and rerun the calibration during the board power-on (cold boot calibration). You need to perform this operation only once for a QCC730M EVK. For details about how to perform this operation, see [Rerun calibration for 2.4 GHz DPD](https://docs.qualcomm.com/doc/80-Y8730-252/topic/references.html#link-rerun-calibration). ## Verify the flashed image To verify that the image was successfully flashed to the QCC730 EVK: 1. Connect the QCC730M EVK to your computer by using a USB cable. The EVK powers on automatically. 2. Identify the COM ports assigned to the QCC730M EVK in **Device Manager**. To quickly open **Device Manager** on Windows, select **Windows+X** and then select **Device Manager**. The QCC730M EVK is assigned two COM ports when connected to a PC. Typically, the higher-numbered COM port is used. However, if that port doesn’t work, use the other port in the following steps. 3. In the serial communication tool, establish a connection to the higher-numbered COM port with the following settings: - **Baud rate**: 115200 - **Data bits**: 8 - **Parity**: None - **Stop bits**: 1 - **Flow control**: None 4. Press the **Reset** button on the board to restart the QCC730M EVK. 5. Type the following command in the console: kernel version Copy to clipboard 6. The console should then display the Zephyr version information. For example: Zephyr version 4.3.0 Copy to clipboard ## Flash Wi-Fi MAC address Every QCC730 device that uses Wi-Fi must be assigned a unique 6-byte Wi-Fi MAC address. The Wi-Fi MAC address is stored in the One-Time Programmable memory (OTP). You can flash the MAC address by using the NVM Programmer tool. The following command examples show how to read and write the Wi-Fi MAC address by using the NVM Programmer tool through CH347. - Set OTP by the `config.yaml` file: python nvm_programmer.py -s ch347 -i qcc730mi_prg.elf --config config.yaml Copy to clipboard - Set OTP by key-value pair: python nvm_programmer.py -s ch347 -i qcc730mi_prg.elf -n otp -k MAC_ADDRESSES=0x101010101010 Copy to clipboard If you set `MAC_ADDRESSES` to `0x101010101010`: - The MAC address for the SAP mode is `0x101010101010` - The MAC address for the STA mode is `0x101010101011` (incremented by 1) - Get OTP value by key: python nvm_programmer.py -s ch347 -i qcc730mi_prg.elf -n otp -g MAC_ADDRESSES Copy to clipboard Last Published: Jul 29, 2026 [Previous Topic Set up the development environment](https://docs.qualcomm.com/bundle/publicresource/80-Y8730-252/topics/set_up_the_development_environment.md) [Next Topic References](https://docs.qualcomm.com/bundle/publicresource/80-Y8730-252/topics/references.md)