Skip to main content
Qualcomm Device Loader (QDL) is a cross-platform command-line flashing tool for Qualcomm devices. Use this method when you need full control over the flash process, are running in a headless environment, or want to script automated flashing. For a GUI-based alternative, see Flash Qualcomm Linux using Qualcomm Launcher.
Flashing erases all data on the device. Back up anything important before you begin.

What you need

  • IQ-8275 EVK with 12 V power supply
  • USB Type-C cable (USB0 port on the EVK → host computer)
  • Host computer running Ubuntu, Windows, or macOS

Select your host OS and follow the complete path

Download QDL for your host OS from the Qualcomm Software Center.

Download the Qualcomm Linux image

  1. Download the Qualcomm Linux image.
  2. Extract the zip file. The flashable artifacts are in:
    <path-to-image>/images/iq-8275-evk/qcom-multimedia-proprietary-image-iq-8275-evk/
    
    Where <path-to-image> is the folder created when you extracted the image zip.

Download QDL

  1. Download the QDL tool for Linux (x64) and unzip it. The unzipped folder contains the qdl binary — referred to as <qdl_dir> below.
  2. Install the required libraries (skip if already installed):
    sudo apt-get install libxml2-dev libudev-dev libusb-1.0-0-dev
    
    We recommend extracting both the image and QDL into the same parent folder. This keeps all paths under one root and simplifies navigation between the provision, SAIL, and image folders.

Set up QDL driver

Ubuntu requires a udev rule so the kernel grants your user permission to communicate with the device when it enters EDL mode.
  1. Check whether the rule already exists:
    ls /etc/udev/rules.d/51-qcom-usb.rules
    
  2. If the file is not present, create it in one command:
    echo 'SUBSYSTEMS=="usb", ATTRS{idVendor}=="05c6", ATTRS{idProduct}=="9008", MODE="0664", GROUP="plugdev"' | sudo tee /etc/udev/rules.d/51-qcom-usb.rules
    
    If the file already exists, verify the rule is present:
    cat /etc/udev/rules.d/51-qcom-usb.rules
    
  3. Reload udev to apply the rule:
    sudo systemctl restart udev
    
    If the USB cable was already connected, disconnect and reconnect it.

Set up QDL

  1. Make QDL executable:
    chmod +x <qdl_dir>/qdl
    
  2. Verify QDL is working:
    <qdl_dir>/qdl --help
    
    You should see the QDL usage output. If you get an error, check the path.

Put the device in EDL mode

  1. Turn on the SW2-3 DIP switch — push it up. SW2-3 DIP switch location
  2. Connect the 12 V power supply to the EVK.
  3. Connect the USB Type-C cable from USB0 on the EVK to your host. Flash setup — USB and power connections
  4. Toggle the power switch to turn on the device.
  5. Confirm the device is in EDL mode:
    lsusb
    
    Expected output:
    Bus 002 Device 014: ID 05c6:9008 Qualcomm, Inc. Gobi Wireless Modem (QDL mode)
    
    If the device doesn’t appear, recheck SW2-3 and the USB-C cable.

Provision UFS

UFS (Universal Flash Storage) provisioning divides the internal storage into separate logical unit numbers (LUNs), each dedicated to a specific type of data (boot, system, user data, etc.). This improves access efficiency and keeps the partition layout consistent across flashes.Run UFS provisioning if any of the following apply:
  • This is a brand-new board that has never been flashed.
  • You are upgrading to a new image version.
  • You are switching distributions (Qualcomm Linux ↔ Ubuntu).
  1. Download and unzip the provision file:
    wget https://artifacts.codelinaro.org/artifactory/codelinaro-le/Qualcomm_Linux/QCS8300/provision.zip
    unzip provision.zip
    
  2. Provision UFS from the unzipped provision directory:
    cd provision
    <qdl_dir>/qdl --storage ufs prog_firehose_ddr.elf provision_1_3.xml
    
    Expected output:
    UFS provisioning succeeded
    
After UFS provisioning completes, the device disconnects from USB. Toggle the power switch off and on to reboot it back into EDL mode before continuing.

Flash SAIL firmware

The Safety Island (SAIL) is a separate, isolated processor on the IQ-8275 EVK that handles safety-critical functions independently from the main application processor. Its firmware lives on a dedicated spinor flash partition and must be flashed separately before the main OS image.
  1. Navigate to the sail_nor subfolder inside the extracted image:
    cd <path-to-image>/images/iq-8275-evk/qcom-multimedia-proprietary-image-iq-8275-evk/sail_nor
    
  2. Flash the SAIL firmware:
    <qdl_dir>/qdl --storage spinor prog_firehose_ddr.elf rawprogram0.xml patch0.xml
    
    Expected output:
    flashed "SAIL_HYP" successfully
    flashed "SAIL_SW1" successfully
    flashed "SAIL_HYP_BKUP" successfully
    flashed "SAIL_SW1_BKUP" successfully
    11 patches applied
    
    If flashing fails, see How to troubleshoot flashing-related issues.

Flash Qualcomm Linux

  1. Navigate to the main image folder:
    cd <path-to-image>/images/iq-8275-evk/qcom-multimedia-proprietary-image-iq-8275-evk
    
  2. Flash the image:
    <qdl_dir>/qdl --storage ufs prog_firehose_ddr.elf rawprogram*.xml patch*.xml
    
    The flash is complete when the final line reads:
    partition 1 is now bootable
    
    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.

Finish

  1. Turn off the SW2-3 DIP switch — push it down.
  2. Power-cycle the device. It boots into the newly flashed Qualcomm Linux image.

Next steps

Continue to Set up the device to connect the debug UART, verify the software version, and bring up the network, SSH, and display.