> ## Documentation Index
> Fetch the complete documentation index at: https://qualcomm-3.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Flash the robotics image

> Flash the QIR SDK robotics image onto your IQ-series development kit on Ubuntu, Windows, or macOS hosts.

You can configure the development kits supported by the QIR SDK using Ubuntu, Windows, and macOS® host computers. The procedure on this page **supplements** the EVK flashing guide — it replaces only the final image-flashing step with the QIR SDK robotics image.

<Note>
  **Note**

  You can also set up a virtual machine (VM) running Ubuntu 24.04 on Microsoft® Windows® or Apple® macOS®. For details, see [Qualcomm Linux Virtual Machine Setup Guide](../../Key-Documents/Virtual-Machine-Setup/virtual-machine-setup-overview).
</Note>

## Prerequisites

The robotics image for QIR SDK is ready from either of the following sources:

<CardGroup col={2}>
  <Card title="QIR SDK prebuilt package" icon="book-copy" href="./download-the-prebuilt-packages">
    * [Download the prebuilt packages](./download-the-prebuilt-packages)
  </Card>

  <Card title="Robotics image built on the host computer" icon="wrench" href="./download-the-prebuilt-packages">
    * [Build with GitHub workflow](./build-with-git-hub-workflow)
    * [Build robotics image with eSDK](./build-the-robotics-image-with-the-prebuilt-robotics-esdk)
  </Card>
</CardGroup>

## Flash robotics image to your Dragonwing™ device

<Tabs>
  <Tab title="Ubuntu">
    <Steps>
      <Step title="Configure device for flash.">
        Complete the following configurations according to your Dragonwing device.

        a. Download QDL.

        b. Set up the QDL driver.

        c. Set up the QDL path.

        d. Put the device in EDL mode.

        e. Provision UFS. After provisioning completes, power-cycle the device.

        f. Flash the security island (SAIL) firmware.

        <CardGroup col={2}>
          <Card title="IQ-9075 EVK documentation" icon="file-check" href="../../Linux/devices/iq9075-evk/update-software/flash-over-qli#ubuntu" />

          <Card title="IQ-8275 EVK documentation" icon="file-check" href="../../Linux/devices/iq8275-evk/update-software/flash-over-qli#ubuntu" />
        </CardGroup>

        <Note>
          **Note**

          * After UFS provisioning completes, the device disconnects from USB. Toggle the power switch off and on to reboot it back into EDL mode before flashing SAIL.
          * Skip the step "Flash Qualcomm Linux". Use the following step 2 to flash the robotics image instead.
        </Note>
      </Step>

      <Step title="Flash the robotics image.">
        Flash the robotics image using the `qcom-robotics-proprietary-image` you have downloaded or built.

        a. Navigate to the main image folder.

        <CodeGroup>
          ```bash IQ-9075 EVK theme={null}
          cd <path-to-image>/images/iq-9075-evk/qcom-robotics-proprietary-image-iq-9075-evk.rootfs.qcomflash
          ```

          ```bash IQ-8275 EVK theme={null}
          cd <path-to-image>/images/iq-8275-evk/qcom-robotics-proprietary-image-iq-8275-evk.rootfs.qcomflash
          ```
        </CodeGroup>

        b. Flash the robotics image:

        <CodeGroup>
          ```bash IQ-9075 EVK theme={null}
          <qdl_dir>/qdl --storage ufs prog_firehose_ddr.elf rawprogram*.xml patch*.xml
          ```

          ```bash IQ-8275 EVK theme={null}
          <qdl_dir>/qdl --storage ufs prog_firehose_ddr.elf rawprogram*.xml patch*.xml
          ```
        </CodeGroup>

        The flash is complete when the final line reads:

        ```
        partition 1 is now bootable
        ```

        <Note>
          * Any sector-truncation warnings during flashing are harmless.
          * If flashing fails at any point, disconnect the USB cable and power supply, reconnect them, and retry from the EDL mode step.
        </Note>
      </Step>

      <Step title="Boot to the device terminal. ">
        a. Turn off the `SW2-3` DIP switch by pushing it down.

        b. Power-cycle the device. It boots into the newly flashed robotics image.
      </Step>
    </Steps>
  </Tab>

  <Tab title="Windows">
    <Steps>
      <Step title="Configure device for flash.">
        Complete the following configurations according to your Dragonwing device.

        a. Download QDL.

        b. Set up QDL driver.

        c. Put the device in EDL mode.

        d. Provision UFS. After provisioning completes, power-cycle the device.

        e. Flash security island (SAIL) firmware.

        <CardGroup col={2}>
          <Card title="IQ-9075 EVK documentation" icon="file-check" href="../../Linux/devices/iq9075-evk/update-software/flash-over-qli#windows" />

          <Card title="IQ-8275 EVK documentation" icon="file-check" href="../../Linux/devices/iq8275-evk/update-software/flash-over-qli#windows" />
        </CardGroup>

        <Note>
          **Note**

          * After UFS provisioning completes, the device disconnects from USB. Toggle the power switch off and on to reboot it back into EDL mode before flashing SAIL.
          * Skip the step "Flash Qualcomm Linux". Use the following step 2 to flash the robotics image instead.
        </Note>
      </Step>

      <Step title="Flash the robotics image.">
        Flash the robotics image using the `qcom-robotics-proprietary-image` you have downloaded or built.

        a. Navigate to the main image folder.

        <CodeGroup>
          ```bash IQ-9075 EVK theme={null}
          cd <path-to-image>/images/iq-9075-evk/qcom-robotics-proprietary-image-iq-9075-evk.rootfs.qcomflash
          ```

          ```bash IQ-8275 EVK theme={null}
          cd <path-to-image>/images/iq-8275-evk/qcom-robotics-proprietary-image-iq-8275-evk.rootfs.qcomflash
          ```
        </CodeGroup>

        b. Flash the robotics image:

        <Note>
          Replace `<qdl_dir>` with your QDL folder path — Windows does not support wildcards, list all files explicitly.
        </Note>

        **Command prompt**

        <CodeGroup>
          ```bash IQ-9075 EVK theme={null}
          "<qdl_dir>\qdl.exe" prog_firehose_ddr.elf rawprogram0.xml rawprogram1.xml rawprogram2.xml rawprogram3.xml rawprogram4.xml rawprogram5.xml patch0.xml patch1.xml patch2.xml patch3.xml patch4.xml patch5.xml
          ```

          ```bash IQ-8275 EVK theme={null}
          "<qdl_dir>\qdl.exe" prog_firehose_ddr.elf rawprogram0.xml rawprogram1.xml rawprogram2.xml rawprogram3.xml rawprogram4.xml rawprogram5.xml patch0.xml patch1.xml patch2.xml patch3.xml patch4.xml patch5.xml
          ```
        </CodeGroup>

        **PowerShell**

        <CodeGroup>
          ```bash IQ-9075 EVK theme={null}
          & "<qdl_dir>\qdl.exe" prog_firehose_ddr.elf rawprogram0.xml rawprogram1.xml rawprogram2.xml rawprogram3.xml rawprogram4.xml rawprogram5.xml patch0.xml patch1.xml patch2.xml patch3.xml patch4.xml patch5.xml
          ```

          ```bash IQ-8275 EVK theme={null}
          & "<qdl_dir>\qdl.exe" prog_firehose_ddr.elf rawprogram0.xml rawprogram1.xml rawprogram2.xml rawprogram3.xml rawprogram4.xml rawprogram5.xml patch0.xml patch1.xml patch2.xml patch3.xml patch4.xml patch5.xml
          ```
        </CodeGroup>

        The flash is complete when the final line reads:

        ```
        partition 1 is now bootable
        ```

        <Note>
          If flashing fails at any point, disconnect the USB cable and power supply, reconnect them, and retry from the EDL mode step.
        </Note>
      </Step>

      <Step title="Boot to the device terminal. ">
        a. Turn off the `SW2-3` DIP switch by pushing it down.

        b. Power-cycle the device. It boots into the newly flashed robotics image.
      </Step>
    </Steps>
  </Tab>

  <Tab title="macOS">
    <Steps>
      <Step title="Configure device for flash.">
        Complete the following configurations according to your Dragonwing device.

        a. Download QDL.

        b. Set up QDL path.

        c. Put the device in EDL mode.

        d. Provision UFS. After provisioning completes, power-cycle the device.

        e. Flash security island (SAIL) firmware.

        <CardGroup col={2}>
          <Card title="IQ-9075 EVK documentation" icon="file-check" href="../../Linux/devices/iq9075-evk/update-software/flash-over-qli#macos" />

          <Card title="IQ-8275 EVK documentation" icon="file-check" href="../../Linux/devices/iq8275-evk/update-software/flash-over-qli#macos" />
        </CardGroup>

        <Note>
          **Note**

          * After UFS provisioning completes, the device disconnects from USB. Toggle the power switch off and on to reboot it back into EDL mode before flashing SAIL.
          * Skip the step "Flash Qualcomm Linux". Use the following step 2 to flash the robotics image instead.
        </Note>
      </Step>

      <Step title="Flash the robotics image.">
        Flash the robotics image using the `qcom-robotics-proprietary-image` you have downloaded or built.

        a. Navigate to the main image folder.

        <CodeGroup>
          ```bash IQ-9075 EVK theme={null}
          cd <path-to-image>/images/iq-9075-evk/qcom-robotics-proprietary-image-iq-9075-evk.rootfs.qcomflash
          ```

          ```bash IQ-8275 EVK theme={null}
          cd <path-to-image>/images/iq-8275-evk/qcom-robotics-proprietary-image-iq-8275-evk.rootfs.qcomflash
          ```
        </CodeGroup>

        b. Flash the robotics image:

        <CodeGroup>
          ```bash IQ-9075 EVK theme={null}
          <qdl_dir>/qdl --storage ufs prog_firehose_ddr.elf rawprogram*.xml patch*.xml
          ```

          ```bash IQ-8275 EVK theme={null}
          <qdl_dir>/qdl --storage ufs prog_firehose_ddr.elf rawprogram*.xml patch*.xml
          ```
        </CodeGroup>

        The flash is complete when the final line reads:

        ```
        partition 1 is now bootable
        ```

        <Note>
          * Any sector-truncation warnings during flashing are harmless.
          * If flashing fails at any point, disconnect the USB cable and power supply, reconnect them, and retry from the EDL mode step.
        </Note>
      </Step>

      <Step title="Boot to the device terminal. ">
        a. Turn off the `SW2-3` DIP switch by pushing it down.

        b. Power-cycle the device. It boots into the newly flashed robotics image.
      </Step>
    </Steps>
  </Tab>
</Tabs>

## Check the Qualcomm Linux version

To check the Qualcomm Linux version, run the following command in your device shell:

```powershell theme={null}
cat /etc/os-release
```

The output shows the Qualcomm Linux version.

```bash theme={null}
ID=qcom-robotics-ros2-jazzy
NAME="Qualcomm Linux Robotics Reference Distro with ROS"
VERSION="2.0"
VERSION_ID=2.0
PRETTY_NAME="Qualcomm Linux Robotics Reference Distro with ROS 2.0"
CPE_NAME="cpe:/o:openembedded:qcom-robotics-ros2-jazzy:2.0"
```

## Result

You have flashed the robotics image onto the device and are able to connect to the device using SSH.

## Next step

[Set up for running sample applications](./set-up-env-for-sample-app)
