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

# Evaluate overlays using supported workflows

Use one of the following workflows to evaluate overlays:

* [Flash the image and install packages from the package server corresponding to a release snapshot](#flash-the-image-and-install-packages-corresponding-to-a-release-snapshot).
* [Build locally, flash images, and use packages from the local build](#build-locally-flash-images-and-use-packages-from-the-local-build).
* [Define the BitBake image recipe for Config #3 and Config #4, and flash the generated image with the overlays included](#define-the-image-recipe-for-config-3-and-config-4).
  > * For more information on Config #3 and Config #4, see [Overlay configurations and corresponding image recipes](./use-overlay-configurations-to-derive-image-recipes).

## **Flash the image and install packages corresponding to a release snapshot**

Use this workflow to deploy the image and packages built from the Qualcomm Linux 2.0 release. The images and packages corresponding to the Qualcomm Linux release milestone are posted on [CodeLinaro](https://artifacts.codelinaro.org/artifactory/qli-yocto-rpm-signed/).

The [package server](https://artifacts.codelinaro.org/qli-yocto-rpm-signed/qli-2.0/rpm) hosts all the packages generated from the Qualcomm Linux 2.0 Config #2 build, that is, `qcom-multimedia-proprietary-image`. These packages are generated from the `qli-2.0` release snapshot of the Qualcomm Linux 2.0 release. The scope of this package server is to provide an image snapshot corresponding to Config #1, that is `qcom-multimedia-image`, and the corresponding packages generated from Config #2 (`qcom-multimedia-proprietary-image`).

A high-level overview of the steps involved in flashing the image and installing packages from the package server of the release snapshot are as follows. For detailed instructions, see [Install packages from the Qualcomm Linux reference package server](#install-packages-from-the-qualcomm-linux-reference-package-server).

1. Download and flash the `qcom-multimedia-image` [upstream image](https://artifacts.codelinaro.org/artifactory/qli-ci/flashable-binaries/meta-qcom/).
2. Install the packages corresponding to the overlays:
   1. Add the following package feed URL available as part of Qualcomm Linux 2.0 release: [https://artifacts.codelinaro.org/qli-yocto-rpm-signed/qli-2.0/rpm](https://artifacts.codelinaro.org/qli-yocto-rpm-signed/qli-2.0/rpm)
   2. Install package on the device using package manager.
3. To manage the configurations, update `/etc/modprobe.d/blacklist.conf` for driver selection.
4. Set EFI variables to select the camera driver.
   * If required, set the EFI variable for the DTB overlay indication to UEFI.

<div className="flex flex-col items-center gap-2">
  <img src="https://mintcdn.com/qualcomm-3/gHCjmHHn0mCw4aoT/Key-Documents/Migration-Guide/media/overlay_workflow.svg?fit=max&auto=format&n=gHCjmHHn0mCw4aoT&q=85&s=ea54b07a2a81692f3917cd93a879857d" alt="Figure: Qualcomm Linux overlay workflow" width="680" height="600" data-path="Key-Documents/Migration-Guide/media/overlay_workflow.svg" />

  <p className="text-sm text-gray-700">
    Figure: Qualcomm Linux overlay workflow
  </p>
</div>

### **Install packages from the Qualcomm Linux reference package server**

You can install packages using overlays without software builds. A test server is set up on [CodeLinaro](https://artifacts.codelinaro.org/artifactory/qli-yocto-rpm-signed/) with all the images and RPM packages.

To flash images and install RPMs for overlays, do the following:

1. To flash `qcom-multimedia-image` for `RB3Gen2 Core Kit`, do the following:
   1. Download `qcom-multimedia-image-rb3gen2-core-kit.rootfs.qcomflash.tar.gz` from the artifactory server.
   2. Unpack `qcom-multimedia-image-rb3gen2-core-kit.rootfs.qcomflash.tar.gz`.
   3. Flash it using the [Qualcomm Device Loader (QDL) tool](https://dragonwingdocs.qualcomm.com/Key-Documents/Flash-Guide/flash-with-qdl) or [Product Configuration Assistant Tool (PCAT)](https://dragonwingdocs.qualcomm.com/Key-Documents/Flash-Guide/flash-with-pcat).
2. Bring up and log in to your device.
3. To configure the `yum.repos.d` repository on the device, append the following lines to the configuration file:

**Note**

* `/etc/yum.repos.d/` is a directory that stores repository configuration files. Ensure this directory exists; if not, create it.
* Inside this directory, ensure the file `overlay.repo` exists. If it does not, create it at `/etc/yum.repos.d/overlay.repo`.
* To configure the `yum.repos.d` repository, append the required configuration to `/etc/yum.repos.d/overlay.repo`.
* The `yum.repos.d` repository is protected using GNU Privacy Guard (GPG)-based signing to ensure authenticity and integrity of the repository metadata. These settings in the `.repo` file enforce the following checks:
  * `gpgkey` defines the trusted public GPG key used to verify the repository metadata.
  * `repo_gpgcheck=1` enables mandatory GPG validation of the repository before any package operation.

```text theme={null}
[overlay-armv8_2a]
name = Qualcomm Overlay Repository (armv8_2a)
baseurl = https://artifacts.codelinaro.org/qli-yocto-rpm-signed/qli-2.0/rpm/armv8_2a/
enabled = 1
gpgcheck = 0
gpgkey=https://artifacts.codelinaro.org/artifactory/api/security/keypair/yocto-qli-rpm-1/public
repo_gpgcheck=1

[overlay-<target-specific>]
name = Qualcomm Overlay Repository (<target_specific>)
baseurl = https://artifacts.codelinaro.org/qli-yocto-rpm-signed/qli-2.0/rpm/<target-specific>/
enabled = 1
gpgcheck = 0
gpgkey=https://artifacts.codelinaro.org/artifactory/api/security/keypair/yocto-qli-rpm-1/public
repo_gpgcheck=1
```

The second block, `[overlay-<target-specific>]`, determines which feed the DNF uses for your hardware or build target. For example:

<Tabs>
  <Tab title="QCS6490">
    ```text theme={null}
    [overlay-rb3gen2]
    name = Qualcomm Overlay Repository rb3gen2
    baseurl = https://artifacts.codelinaro.org/qli-yocto-rpm-signed/qli-2.0/rpm/rb3gen2-core-kit/
    enabled = 1
    gpgcheck = 0
    gpgkey=https://artifacts.codelinaro.org/artifactory/api/security/keypair/yocto-qli-rpm-1/public
    repo_gpgcheck=1
    ```
  </Tab>

  <Tab title="IQ-9075">
    ```text theme={null}
    [overlay-iq-9075-evk]
    name = Qualcomm Overlay Repository IQ-9075 EVK
    baseurl = https://artifacts.codelinaro.org/qli-yocto-rpm-signed/qli-2.0/rpm/iq-9075-evk/
    enabled = 1
    gpgcheck = 0
    gpgkey=https://artifacts.codelinaro.org/artifactory/api/security/keypair/yocto-qli-rpm-1/public
    repo_gpgcheck=1
    ```
  </Tab>

  <Tab title="IQ-8275">
    ```text theme={null}
    [overlay-iq-8275-evk]
    name = Qualcomm Overlay Repository IQ-8275 EVK
    baseurl = https://artifacts.codelinaro.org/qli-yocto-rpm-signed/qli-2.0/rpm/iq-8275-evk/
    enabled = 1
    gpgcheck = 0
    gpgkey=https://artifacts.codelinaro.org/artifactory/api/security/keypair/yocto-qli-rpm-1/public
    repo_gpgcheck=1
    ```
  </Tab>
</Tabs>

Ensure that you append the appropriate target-specific line so that DNF fetches packages from the right directory.

4. To refresh the package index using your custom configuration file, run the following command:

   ```text theme={null}
   dnf update
   ```

   **Note**

   If you experience an SSL certificate validation error during DNF update, ensure that your system time is accurate.

   In this step, DNF does the following:

   1. Downloads the repository metadata (for example, `repomd.xml` and related files)
   2. Retrieves the associated metadata signatures
   3. Accepts and uses the repository metadata only if the verification is successful

### **Run DNF installation commands to derive Config #2, Config #3 and Config #4**

**Note**

As Config #1 and Config #2 are images, commands are required to install overlays only for Config #3 and Config #4. You should flash the device with Config #1, that is `qcom-multimedia-image`.

The following table lists the `dnf install` commands to install overlay packages and configuration file changes you must make on the device to derive Config #2:

**Table: DNF commands and configuration file changes for Config #2**

| **Config**    | **Overlay**  | **Instructions**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |   |                                  |
| :------------ | :----------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | -------------------------------- |
| **Config #2** | **Graphics** | To install RPM packages for the graphics overlay, run:<br /><br />`dnf install kgsl-dlkm -y`<br />`dnf install qcom-adreno -y`<br /><br />The `/etc/modprobe.d/qcom-adreno.conf` file is automatically populated with:<br />\`install msm /bin/sh -c "( modprobe --ignore msm skip\_gpu=1 && modprobe msm\_kgsl )                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |   | modprobe --ignore-install msm"\` |
|               | **Audio**    | To install packages for the audio overlay, do the following:<br /><br />1. To install RPM packages, run the following DNF commands:<br />`dnf install tinycompress -y`<br />`dnf install audioreach-audio-utils -y`<br />`dnf install audioreach-conf -y`<br />`dnf install audioreach-graphservices -y`<br />`dnf install audioreach-graphmgr -y`<br />`dnf install audioreach-pal -y`<br />`dnf install audioreach-pipewire-plugin -y`<br />`dnf install audioreach-kernel -y`<br />`dnf install kernel-module-audioreach-driver -y`<br /><br />2. Create a file named `asoc-blacklist.conf` in `/etc/modprobe.d/`.<br /><br />3. Add the following blacklist entries:<br />`blacklist q6apm_dai`<br />`blacklist q6apm_lpass_dais`<br />`blacklist q6prm`<br />`blacklist q6prm_clocks`<br />`blacklist snd-soc-sc8280xp`<br />`blacklist snd_q6apm`<br />`blacklist snd_q6dsp_common`       |   |                                  |
|               | **Camera**   | To install packages for the camera overlay, do the following:<br /><br />1. Run common DNF commands:<br />`dnf install camx-dlkm -y`<br />`dnf install camx-nhx -y`<br /><br />2. Run device-specific command:<br /><Tabs><Tab title="QCS6490">`dnf install camx-kodiak -y`</Tab><Tab title="IQ-9075/IQ-8275">`dnf install camx-lemans -y`</Tab><Tab title="IQ-615">`dnf install camx-talos -y`</Tab></Tabs><br />3. To select the DTB overlay:<br />`echo -n "camx" > /tmp/overlay`<br />`efivar -n 882f8c2b-9646-435f-8de5-f208ff80c1bd-VendorDtbOverlays -w -f /tmp/overlay`<br /><br />4. To verify:<br />`efivar -n 882f8c2b-9646-435f-8de5-f208ff80c1bd-VendorDtbOverlays -p`<br /><br />5. To save before reboot:<br />`sync` <br /> <br /> 6.To install camera service & camera plugin: <br /> `dnf install camera-service -y` <br /> `dnf install gst-plugins-imsdk-prop-qticamsrc -y` |   |                                  |
|               | **Video**    | To install packages for the video overlay (applicable to QCS6490, IQ-9075, and IQ-8275 only):<br /><br />1. To install RPM packages, run the following DNF command:<br />`dnf install kernel-module-iris-vpu -y`<br /><br />2. Create a file named `video-blacklist.conf` in `/etc/modprobe.d/`.<br /><br />3. Add the following blacklist entries:<br /><Tabs><Tab title="QCS6490">`blacklist venus_dec`<br />`blacklist venus_enc`<br />`blacklist venus_core`</Tab><Tab title="IQ-9075/IQ-8275">`blacklist qcom_iris`</Tab></Tabs>                                                                                                                                                                                                                                                                                                                                                           |   |                                  |
|               | **Sensors**  | To install packages for the sensors overlay, do the following:<br /><br />1. To install RPM packages, run the following DNF command:<br />`dnf install qcom-sensors-binaries -y`<br /><br />2. Restart the device to apply changes.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |   |                                  |
|               | **AI/ML**    | To install packages for the AI/ML overlay, do the following:<br /><br /> **Prequisites:** Install the `Graphics Overlay` for adreno GPU backend <br /> <br /> 1. To install qairt-sdk <br />`dnf install qairt-sdk -y`<br /><br /> 2. To install SNPE & QNN plugins <br />`dnf install gst-plugins-imsdk-prop-qtimlqnn -y` <br /> `dnf install gst-plugins-imsdk-prop-qtimlsnpe -y`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |   |                                  |
|               | **Vision**   | To install packages for the FastCV overlay, do the following:<br /><br />1. To install RPM packages, run the following DNF command:<br />`dnf install libfastcvopt1 -y`<br /><br />2. Run device-specific command:<br /><Tabs><Tab title="QCS6490">`dnf install libfastcvopt-thundercomm-rb3gen2-dsp -y`</Tab><Tab title="IQ-9075">`dnf install libfastcvopt-sa8775p-ride-dsp -y`</Tab><Tab title="IQ-8275">`dnf install libfastcvopt-qcs8300-ride-dsp -y`</Tab><Tab title="IQ-615">`dnf install libfastcvopt-qcs615-ride-dsp -y`</Tab></Tabs>                                                                                                                                                                                                                                                                                                                                                  |   |                                  |
|               | **IMSDK**    | To install packages for the IMSDK overlay, do the following:<br /><br /> **Prequisites:** Install all the above overlays from current config <br /> <br /> 1. To install IMSDK proprietary plugins: <br /> `dnf install gst-plugins-imsdk-prop-meta -y`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |   |                                  |

The following table lists the `dnf install` commands to install overlay packages and configuration file changes you must make on the device to derive Config #3:

**Table: DNF commands and configuration file changes for Config #3**

| **Config**    | **Overlay** | **Instructions**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| :------------ | :---------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Config #3** | **Audio**   | To install packages for the audio overlay, do the following:<br /><br />1. To install RPM packages, run the following DNF commands:<br />`dnf install tinycompress -y`<br />`dnf install audioreach-audio-utils -y`<br />`dnf install audioreach-conf -y`<br />`dnf install audioreach-graphservices -y`<br />`dnf install audioreach-graphmgr -y`<br />`dnf install audioreach-pal -y`<br />`dnf install audioreach-pipewire-plugin -y`<br />`dnf install audioreach-kernel -y`<br />`dnf install kernel-module-audioreach-driver -y`<br /><br />2. Create a file named `asoc-blacklist.conf` in `/etc/modprobe.d/`.<br /><br />3. Add the following blacklist entries:<br />`blacklist q6apm_dai`<br />`blacklist q6apm_lpass_dais`<br />`blacklist q6prm`<br />`blacklist q6prm_clocks`<br />`blacklist snd-soc-sc8280xp`<br />`blacklist snd_q6apm`<br />`blacklist snd_q6dsp_common`       |
|               | **Camera**  | To install packages for the camera overlay, do the following:<br /><br />1. Run common DNF commands:<br />`dnf install camx-dlkm -y`<br />`dnf install camx-nhx -y`<br /><br />2. Run device-specific command:<br /><Tabs><Tab title="QCS6490">`dnf install camx-kodiak -y`</Tab><Tab title="IQ-9075/IQ-8275">`dnf install camx-lemans -y`</Tab><Tab title="IQ-615">`dnf install camx-talos -y`</Tab></Tabs><br />3. To select the DTB overlay:<br />`echo -n "camx" > /tmp/overlay`<br />`efivar -n 882f8c2b-9646-435f-8de5-f208ff80c1bd-VendorDtbOverlays -w -f /tmp/overlay`<br /><br />4. To verify:<br />`efivar -n 882f8c2b-9646-435f-8de5-f208ff80c1bd-VendorDtbOverlays -p`<br /><br />5. To save before reboot:<br />`sync` <br /> <br /> 6.To install camera service & camera plugin: <br /> `dnf install camera-service -y` <br /> `dnf install gst-plugins-imsdk-prop-qticamsrc -y` |
|               | **Video**   | To install packages for the video overlay, do the following:<br /><br />1. To install RPM packages, run the following DNF command:<br />`dnf install kernel-module-iris-vpu -y`<br /><br />2. Create a file named `video-blacklist.conf` in `/etc/modprobe.d/`.<br /><br />3. Add the following blacklist entries:<br /><Tabs><Tab title="QCS6490">`blacklist venus_dec`<br />`blacklist venus_enc`<br />`blacklist venus_core`</Tab><Tab title="IQ-9075/IQ-8275">`blacklist qcom_iris`</Tab></Tabs>                                                                                                                                                                                                                                                                                                                                                                                            |
|               | **Sensors** | To install packages for the sensors overlay, do the following:<br /><br />1. To install RPM packages, run the following DNF command:<br />`dnf install qcom-sensors-binaries -y`<br /><br />2. Restart the device to apply changes.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
|               | **AI/ML**   | To install packages for the AI/ML overlay, do the following:<br /><br /> **Note:** GPU backend is not available in the current config <br /> <br /> 1. To install qairt-sdk <br />`dnf install qairt-sdk -y`<br /><br /> 2. To install SNPE & QNN plugins <br />`dnf install gst-plugins-imsdk-prop-qtimlqnn -y` <br /> `dnf install gst-plugins-imsdk-prop-qtimlsnpe -y`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
|               | **Vision**  | To install packages for the FastCV overlay, do the following:<br /><br />1. To install RPM packages, run the following DNF command:<br />`dnf install libfastcvopt1 -y`<br /><br />2. Run device-specific command:<br /><Tabs><Tab title="QCS6490">`dnf install libfastcvopt-thundercomm-rb3gen2-dsp -y`</Tab><Tab title="IQ-9075">`dnf install libfastcvopt-sa8775p-ride-dsp -y`</Tab><Tab title="IQ-8275">`dnf install libfastcvopt-qcs8300-ride-dsp -y`</Tab><Tab title="IQ-615">`dnf install libfastcvopt-qcs615-ride-dsp -y`</Tab></Tabs>                                                                                                                                                                                                                                                                                                                                                  |
|               | **IMSDK**   | To install packages for the IMSDK overlay, do the following:<br /><br /> **Prequisites:** Install all the above overlays from current config <br /> <br /> 1. To install IMSDK proprietary plugins: <br /> `dnf install gst-plugins-imsdk-prop-meta -y`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |

The following table lists the `dnf install` commands to install overlay packages and the configuration file changes you must make on the device to derive Config #4:

**Table: DNF commands and configuration file changes for Config #4**

| **Config**    | **Overlay**  | **Instructions**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |   |                                  |
| :------------ | :----------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | -------------------------------- |
| **Config #4** | **Graphics** | To install RPM packages for the graphics overlay, run:<br /><br />`dnf install kgsl-dlkm -y`<br />`dnf install qcom-adreno -y`<br /><br />The `/etc/modprobe.d/qcom-adreno.conf` file is automatically populated with:<br />\`install msm /bin/sh -c "( modprobe --ignore msm skip\_gpu=1 && modprobe msm\_kgsl )                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |   | modprobe --ignore-install msm"\` |
|               | **Camera**   | To install packages for the camera overlay, do the following:<br /><br />1. Run common DNF commands:<br />`dnf install camx-dlkm -y`<br />`dnf install camx-nhx -y`<br /><br />2. Run device-specific command:<br /><Tabs><Tab title="QCS6490">`dnf install camx-kodiak -y`</Tab><Tab title="IQ-9075/IQ-8275">`dnf install camx-lemans -y`</Tab><Tab title="IQ-615">`dnf install camx-talos -y`</Tab></Tabs><br />3. To select the DTB overlay:<br />`echo -n "camx" > /tmp/overlay`<br />`efivar -n 882f8c2b-9646-435f-8de5-f208ff80c1bd-VendorDtbOverlays -w -f /tmp/overlay`<br /><br />4. To verify:<br />`efivar -n 882f8c2b-9646-435f-8de5-f208ff80c1bd-VendorDtbOverlays -p`<br /><br />5. To save before reboot:<br />`sync` <br /><br /> 6.To install camera service & camera plugin: <br /> `dnf install camera-service -y` <br /> `dnf install gst-plugins-imsdk-prop-qticamsrc -y` |   |                                  |
|               | **Sensors**  | To install packages for the sensors overlay, do the following:<br /><br />1. To install RPM packages, run the following DNF command:<br />`dnf install qcom-sensors-binaries -y`<br /><br />2. Restart the device to apply changes.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |   |                                  |
|               | **AI/ML**    | To install packages for the AI/ML overlay, do the following:<br /><br /> Prequisites: Install`Graphics Overlay` for adreno GPU backend <br /> <br /> 1. To install qairt-sdk <br />`dnf install qairt-sdk -y`<br /><br /> 2. To install SNPE & QNN plugins <br />`dnf install gst-plugins-imsdk-prop-qtimlqnn -y` <br /> `dnf install gst-plugins-imsdk-prop-qtimlsnpe -y`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |   |                                  |
|               | **Vision**   | To install packages for the FastCV overlay, do the following:<br /><br />1. To install RPM packages, run the following DNF command:<br />`dnf install libfastcvopt1 -y`<br /><br />2. Run device-specific command:<br /><Tabs><Tab title="QCS6490">`dnf install libfastcvopt-thundercomm-rb3gen2-dsp -y`</Tab><Tab title="IQ-9075">`dnf install libfastcvopt-sa8775p-ride-dsp -y`</Tab><Tab title="IQ-8275">`dnf install libfastcvopt-qcs8300-ride-dsp -y`</Tab><Tab title="IQ-615">`dnf install libfastcvopt-qcs615-ride-dsp -y`</Tab></Tabs>                                                                                                                                                                                                                                                                                                                                                 |   |                                  |
|               | **IMSDK**    | To install packages for the IMSDK overlay, do the following:<br /><br /> **Prequisites:** Install all the above overlays from current config <br /> <br /> 1. To install IMSDK proprietary plugins: <br /> `dnf install gst-plugins-imsdk-prop-meta -y`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |   |                                  |

To verify that the RPM and driver packages were installed successfully for each overlay, see [Verify the installation of RPM and driver packages](#verify-the-installation-of-rpm-and-driver-packages).

**Note**

The package server is based on the Qualcomm Linux 2.0 release snapshot to demonstrate overlays. It’s not intended to meet the needs of a production-class packaging server. When next version of Qualcomm Linux is released, a new feed (package server URL) will provide packages generated from that release. However, package-based upgrades from one version to another are not guaranteed to work.

### **Verify the installation of RPM and driver packages**

The following table lists the `dnf` and `lsmod` commands to verify that the RPM and driver packages for overlays were installed successfully:

**Table: RPM and driver packages verification commands**

| **Overlay** | **Verification commands**                                                                                                                                                                                                  |
| :---------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|    Audio    | To verify RPM packages: `dnf list installed \| grep <rpm_name>`. To verify driver packages: `lsmod \| grep audioreach`.                                                                                                    |
|    Camera   | To verify RPM packages: `dnf list installed \| grep <rpm_name>`. To verify driver packages: run `lsmod \| grep cam*` and check for: QCS6490: `camera_qcm6490`; IQ-9075/IQ-8275: `camera_qcs9100`; IQ-615: `camera_qcs615`. |
|    Video    | To verify RPM packages: `dnf list installed \| grep <rpm_name>`. To verify driver packages: `lsmod \| grep iris_vpu`.                                                                                                      |
|   Graphics  | To verify RPM packages: `dnf list installed \| grep <rpm_name>`. To verify driver packages: `lsmod \| grep msm_kgsl`.                                                                                                      |
|    AI/ML    | To verify RPM packages: <br />`dnf list installed \| grep qairt-sdk`.<br />`dnf list installed \| grep gst-plugins-imsdk-prop-qtimlqnn`.<br />`dnf list installed \| grep gst-plugins-imsdk-prop-qtimlsnpe`.               |
|   Sensors   | To verify RPM packages: `dnf list installed \| grep qcom-sensors-binaries`.                                                                                                                                                |
|    IMSDK    | To verify RPM packages :<br /> `dnf list installed \| grep gst-plugins-imsdk-prop-meta`                                                                                                                                    |
|    Vision   | To verify RPM packages: `dnf list installed \| grep libfastcv`.                                                                                                                                                            |

To uninstall overlays, see [Uninstall overlay configurations and switch to upstream drivers](./uninstall-overlays).

## **Build locally, flash images, and use packages from the local build**

**Note**

For instructions on how to build from source, see [Qualcomm Linux Build Guide](https://dragonwingdocs.qualcomm.com/Key-Documents/Firmware-Guide/build-firmware#build-bsp-image).

Use this workflow to build images and packages by cloning `meta-qcom`. You can also use this workflow if you want to integrate your changes. The images and packages corresponding to a Qualcomm Linux release are built locally. You can flash images and install packages from the local workspace.

### **Set up a local workspace**

1. To clone `meta-qcom`, run the following command:

   ```text theme={null}
   git clone https://github.com/qualcomm-linux/meta-qcom.git
   ```

2. To build the image for Config #1 `qcom-multimedia-image`, run the following command:

   <Tabs>
     <Tab title="QCS6490">
       ```bash theme={null}
       kas shell meta-qcom/ci/qcs6490-rb3gen2-core-kit.yml:meta-qcom/ci/qcom-distro-multimedia-image.yml:meta-qcom/ci/linux-qcom-6.18.yml

       bitbake qcom-multimedia-image
       ```
     </Tab>

     <Tab title="IQ-9075">
       ```bash theme={null}
       kas shell meta-qcom/ci/iq-9075-evk.yml:meta-qcom/ci/qcom-distro-multimedia-image.yml:meta-qcom/ci/linux-qcom-6.18.yml

       bitbake qcom-multimedia-image
       ```
     </Tab>

     <Tab title="IQ-8275">
       ```bash theme={null}
       kas shell meta-qcom/ci/iq-8275-evk.yml:meta-qcom/ci/qcom-distro-multimedia-image.yml:meta-qcom/ci/linux-qcom-6.18.yml

       bitbake qcom-multimedia-image
       ```
     </Tab>

     <Tab title="IQ-615">
       ```bash theme={null}
       kas shell meta-qcom/ci/iq-615-evk.yml:meta-qcom/ci/qcom-distro-multimedia-image.yml:meta-qcom/ci/linux-qcom-6.18.yml

       bitbake qcom-multimedia-image
       ```
     </Tab>
   </Tabs>

3. To build the image for Config #2 `qcom-multimedia-proprietary-image` and all packages, run the following command:

   <Tabs>
     <Tab title="QCS6490">
       ```bash theme={null}
       kas shell meta-qcom/ci/qcs6490-rb3gen2-core-kit.yml:meta-qcom/ci/qcom-distro.yml:meta-qcom/ci/linux-qcom-6.18.yml

       bitbake qcom-multimedia-proprietary-image
       ```
     </Tab>

     <Tab title="IQ-9075">
       ```bash theme={null}
       kas shell meta-qcom/ci/iq-9075-evk.yml:meta-qcom/ci/qcom-distro.yml:meta-qcom/ci/linux-qcom-6.18.yml

       bitbake qcom-multimedia-proprietary-image
       ```
     </Tab>

     <Tab title="IQ-8275">
       ```bash theme={null}
       kas shell meta-qcom/ci/iq-8275-evk.yml:meta-qcom/ci/qcom-distro.yml:meta-qcom/ci/linux-qcom-6.18.yml

       bitbake qcom-multimedia-proprietary-image
       ```
     </Tab>

     <Tab title="IQ-615">
       ```bash theme={null}
       kas shell meta-qcom/ci/iq-615-evk.yml:meta-qcom/ci/qcom-distro.yml:meta-qcom/ci/linux-qcom-6.18.yml

       bitbake qcom-multimedia-proprietary-image
       ```
     </Tab>
   </Tabs>

   **Note**

   `qcom-distro.yml` sets DISTRO to `qcom-distro`. `qcom-distro` enables package management using DNF and allows RPMs to be installed. Other DISTRO configurations available in `meta-qcom-distro` enable `SOTA` using OSTree, and disable package management.

### **Install packages and configure the RPM repository**

1. Flash `qcom-multimedia-image` using QDL.
2. Host all the packages from the `rpm` directory of `qcom-multimedia-proprietary-image`. The `rpm` directory is located at `build/tmp/deploy/rpm`.
3. To configure the RPM repository on the device, append the following lines to the configuration file:

**Note**

* `/etc/yum.repos.d/` is a directory that stores repository configuration files. Ensure this directory exists; if not, create it.
* Inside this directory, ensure the file `overlay.repo` exists. If it does not, create it at `/etc/yum.repos.d/overlay.repo`.
* To configure the RPM repository feeds, append the required configuration to `/etc/yum.repos.d/overlay.repo`.
* The `yum.repos.d` repository is protected using GNU Privacy Guard (GPG)-based signing to ensure authenticity and integrity of the repository metadata. These settings in the `.repo` file enforce the following checks:
  * `gpgkey` defines the trusted public GPG key used to verify the repository metadata.
  * `repo_gpgcheck=1` enables mandatory GPG validation of the repository before any package operation.

```text theme={null}
[overlay-armv8_2a]
name = Qualcomm Overlay Repository (armv8_2a)
baseurl = https://<your-local-package-server-IP>/rpm/armv8_2a/
enabled = 1
gpgcheck = 0
gpgkey=https://artifacts.codelinaro.org/artifactory/api/security/keypair/yocto-qli-rpm-1/public
repo_gpgcheck=1

[overlay-<target-specific>]
name = Qualcomm Overlay Repository (<target-specific>)
baseurl = https://<your-local-package-server-IP>/rpm/<target-specific>/
enabled = 1
gpgcheck = 0
gpgkey=https://artifacts.codelinaro.org/artifactory/api/security/keypair/yocto-qli-rpm-1/public
repo_gpgcheck=1
```

**Note**

The `baseurl` must point to the `armv8_2a/` directory when building for QCS6490, IQ-9075, IQ-8275, and IQ-615. If you are using `qcom-armv8a.yml` to build with KAS or setting `qcom-armv8a` as the `MACHINE` value, change the directory name to `armv8a/`.

The second block, `[overlay-<target_specific>]`, determines which feed the DNF uses for your hardware or build target. For example:

<Tabs>
  <Tab title="QCS6490">
    ```text theme={null}
    [overlay-rb3gen2]
    name = Qualcomm Overlay Repository rb3gen2
    baseurl = https://<your-local-package-server-IP>/rpm/rb3gen2-core-kit/
    enabled = 1
    gpgcheck = 0
    gpgkey=https://artifacts.codelinaro.org/artifactory/api/security/keypair/yocto-qli-rpm-1/public
    repo_gpgcheck=1
    ```
  </Tab>

  <Tab title="IQ-9075">
    ```text theme={null}
    [overlay-iq_9075_evk]
    name = Qualcomm Overlay Repository iq_9075_evk
    baseurl = https://<your-local-package-server-IP>/rpm/iq-9075-evk/
    enabled = 1
    gpgcheck = 0
    gpgkey=https://artifacts.codelinaro.org/artifactory/api/security/keypair/yocto-qli-rpm-1/public
    repo_gpgcheck=1
    ```
  </Tab>

  <Tab title="IQ-8275">
    ```text theme={null}
    [overlay-iq-8275-evk]
    name = Qualcomm Overlay Repository iq_8275_evk
    baseurl = https://<your-local-package-server-IP>/rpm/iq-8275-evk/
    enabled = 1
    gpgcheck = 0
    gpgkey=https://artifacts.codelinaro.org/artifactory/api/security/keypair/yocto-qli-rpm-1/public
    repo_gpgcheck=1
    ```
  </Tab>
</Tabs>

Ensure that you append the appropriate target-specific line so that DNF fetches packages from the right directory.

4. To refresh the package index using your custom configuration file, run the following command:

   ```bash theme={null}
   dnf update
   ```

   In this step, DNF does the following:

   1. Downloads the repository metadata (for example, `repomd.xml` and related files)
   2. Retrieves the associated metadata signatures
   3. Accepts and uses the repository metadata only if the verification is successful

To uninstall overlays, see [Uninstall overlay configurations and switch to upstream drivers](./uninstall-overlays).

## **Define the image recipe for Config #3 and Config #4**

**Note**

For instructions on how to build from source, see [Qualcomm Linux Build Guide](https://dragonwingdocs.qualcomm.com/Key-Documents/Firmware-Guide/build-firmware#build-bsp-image).

Use this workflow to define the BitBake image recipe for Config #3 and Config #4, and flash the generated image with the overlays included.

To define and build images, do the following:

1. To clone `meta-qcom`, run the following command:

   ```bash theme={null}
   git clone https://github.com/qualcomm-linux/meta-qcom.git
   cd meta-qcom
   ```

2. To clone all layers including `meta-qcom-distro` locally, run the following command:

   ```bash theme={null}
   kas shell meta-qcom/ci/qcs6490-rb3gen2-core-kit.yml:meta-qcom/ci/qcom-distro.yml:meta-qcom/ci/linux-qcom-6.18.yml
   ```

### **Define the image for Config #3**

1. To define the image in `meta-qcom-distro` for Config #3, run the following command:

   ```bash theme={null}
   vim meta-qcom-distro/recipes-products/images/qcom-config3-image.bb
   ```

2. In the vim editor, add the following content to the new image recipe file:

   ```bash theme={null}
   require qcom-multimedia-image.bb

   SUMMARY = "An image built on top of multimedia image for proprietary features"

   # This image is compatible only with aarch64 (ARMv8)
   COMPATIBLE_MACHINE = "^$"
   COMPATIBLE_MACHINE:aarch64 = "(.*)"

   CORE_IMAGE_BASE_INSTALL += " \
      camera-service \
      camx-dlkm \
      camx-kodiak \
      camx-lemans \
      camx-talos \
      camx-nhx \
      gst-plugins-imsdk-prop \
      iris-video-dlkm \
      libdiag-bin \
      qcom-sensors-binaries \
   "
   CORE_IMAGE_BASE_INSTALL:append = " \
      ${@bb.utils.contains('BBFILE_COLLECTIONS', 'meta-audioreach', ' packagegroup-audioreach', '', d)} \
   "
   ```

   **Note**

   If your target device is a QCS615-based EVK, exclude `iris-video-dlkm` from `qcom-config3-image`. `iris-video-dlkm` doesn't support the video functionality for QCS615-based EVKs. The QCS615-based EVKs are supported by the upstream video driver.

3. To build a new image recipe, run the following command:

   ```bash theme={null}
   bitbake qcom-config3-image
   ```

4. After the build completes, use the QDL tool to flash images.

### **Define the image for Config #4**

1. To define the image in `meta-qcom-distro` for Config #4, run the following command:

   ```bash theme={null}
   vim meta-qcom-distro/recipes-products/images/qcom-config4-image.bb
   ```

2. In the vim editor, add the following content to the new image recipe file:

   ```bash theme={null}
   require qcom-multimedia-image.bb

   SUMMARY = "An image built on top of multimedia image for proprietary features"

   # This image is compatible only with aarch64 (ARMv8)
   COMPATIBLE_MACHINE = "^$"
   COMPATIBLE_MACHINE:aarch64 = "(.*)"

   CORE_IMAGE_BASE_INSTALL += " \
      camera-service \
      camx-dlkm \
      camx-kodiak \
      camx-lemans \
      camx-talos \
      camx-nhx \
      gst-plugins-imsdk-prop \
      kgsl-dlkm \
      libdiag-bin \
      qcom-adreno \
      qcom-sensors-binaries"
   ```

3. To build a new image recipe, run the following command:

   ```bash theme={null}
   bitbake qcom-config4-image
   ```

4. After the build completes, use the QDL tool to flash images.

To uninstall overlays, see [Uninstall overlay configurations and switch to upstream drivers](./uninstall-overlays).
