# Qualcomm Linux metadata layers

The following layers represent the Qualcomm board support package (BSP) metadata:

- [meta-qcom](https://docs.qualcomm.com/doc/80-70020-27/topic/qualcomm_bsp_metadata_layers.html#meta-qcom-section)
- [meta-qcom-hwe](https://docs.qualcomm.com/doc/80-70020-27/topic/qualcomm_bsp_metadata_layers.html#meta-qcom-hwe-section)
- [meta-qcom-realtime](https://docs.qualcomm.com/doc/80-70020-27/topic/qualcomm_bsp_metadata_layers.html#meta-qcom-realtime-section)

The following layer defines the `qcom-wayland` reference distribution:

- [meta-qcom-distro](https://docs.qualcomm.com/doc/80-70020-27/topic/qualcomm_bsp_metadata_layers.html#meta-qcom-distro-section)

The following layer defines the optional Qualcomm IM SDK:

- [meta-qcom-qim-product-sdk](https://docs.qualcomm.com/doc/80-70020-27/topic/qualcomm_bsp_metadata_layers.html#meta-qcom-qim-product-sdk-section)

The following metadata layer defines the optional BSP:

- [meta-qcom-extras](https://docs.qualcomm.com/doc/80-70020-27/topic/qualcomm_bsp_metadata_layers.html#meta-qcom-extras-section)

## meta-qcom

The `meta-qcom` metadata layer is hosted at
[git.yoctoproject.org](http://git.yoctoproject.org) and provides
recipes to build the Qualcomm OSS. Build the software image using the
following recipes from the `meta-qcom` layer.

| Recipe | Description |
| --- | --- |
| `recipes-devtools/qdl/qdl_git.bb` | The Qualcomm Download (QDL) flashing tool communicates<br>with the USB devices displaying ID 05c6:9008 to upload a flash<br>loader and uses this recipe to flash the images. |
| `recipes-support/pd-mapper/pd-mapper_git.bb` | The Qualcomm pd-mapper is an implementation for the<br>protection domain mapper service. This service configures and<br>manages protection domains, ensuring secure communication<br>between applications and various remote processors. |
| `recipes-support/qrtr/qrtr_git.bb` | The Qualcomm Router (QRTR) is an inter-process communication mechanism<br>used in Qualcomm SoCs. It allows communication between different processors in the system,<br>such as the application processor and the modem, using a socket-style programming interface in the user space. |
| `recipes-support/initrdscripts/initramfs-module-copy-modules_1.0.bb` | `initramfs-framework` module for copying kernel modules from<br>`initramfs` to `rootfs`. |

## meta-qcom-hwe

The `meta-qcom-hwe` metadata layer is available on
[GitHub](https://github.com/qualcomm-linux/meta-qcom-hwe/tree/scarthgap).
It provides additional software support for enabling Qualcomm devices.

Note

This guide uses the QCM6490 and QCS6490 hardware SoCs interchangeably.
The `qcs6490-rb3gen2-core-kit.conf` and `qcs6490-rb3gen2-vision-kit.conf`
machine configuration files defined in the `meta-qcom-hwe/conf/machine/` directory
support the QCM6490, QCS6490, and QCS5430 hardware SoCs.

- **BitBake classes**

    For an introduction to the BitBake classes,
see [Classes](https://github.com/qualcomm-linux/meta-qcom-hwe/tree/scarthgap/classes).

    | File | Description |
    | --- | --- |
    | `classes/qprebuilt.bbclass` | Implements logic to use a prebuilt package instead of fetching and<br>compiling the source. For any recipe inheriting **qprebuilt**,<br>this class unpacks the binary packed in a <cite>tar.gz</cite> archive<br>and provides these binaries for packaging using a BitBake task. |
    | `classes/qmodule.bbclass` | By default, the Qualcomm BSP enforces signing the kernel module by<br>enabling `CONFIG_MODULE_SIG_FORCE` in the kernel.<br>However, some out-of-tree modules may not be signed.<br>To avoid module loading issues, `qmodule.bbclass` inspects<br>all packages providing kernel modules and signs them if they’re<br>not already signed. |
    | `classes/image_types_ota_sdboot.bbclass` | This BitBake class implements image creation according to requirements<br>of OSTree over-the-air upgrade system. |
- **Machine configurations**

    The Qualcomm Linux machine configuration files are available on
[GitHub](https://github.com/qualcomm-linux/meta-qcom-hwe/tree/scarthgap/conf/machine).

    The files located in the `meta-qcom-hwe/conf/machine/include` directory define and
set the required BitBake variables, which can be commonly used by machine
configurations defined by the Qualcomm BSP. The following table provides an
overview of these files.

    | File | Description |
    | --- | --- |
    | `meta-qcom-hwe/conf/machine/include/qcom-base.inc` | This file sets the BitBake variables that are commonly<br>shared by all machine configurations defined in the Qualcomm BSP.<br>For example, `SOC_ARCH`, `PREFERRED_PROVIDER` and `IMAGE_FSTYPES`. |
    | `meta-qcom-hwe/conf/machine/include/qcom-qcs6490.inc` | This file sets the `SOC_FAMILY` variable to `qcm6490`.<br>This allows Qualcomm Linux recipes to use the `qcm6490` OVERRIDE to<br>implement changes specific to the Qualcomm BSP. This file also defines<br>configuration variables that are shared by<br>all Qualcomm development kits based on QCS6490. |
    | `meta-qcom-hwe/conf/machine/include/qcom-qcs9100.inc` | This file sets the `SOC_FAMILY` variable to `qcs9100`.<br>This allows Qualcomm Linux recipes to use the `qcs9100` OVERRIDE to<br>implement changes specific to the Qualcomm BSP. This file also defines<br>configuration variables that are shared by<br>all Qualcomm development kits based on QCS9100. |
    | `meta-qcom-hwe/conf/machine/include/qcom-qcs8300.inc` | This file sets the `SOC_FAMILY` variable to `qcs8300`.<br>This allows Qualcomm Linux recipes to use the `qcs8300` OVERRIDE to<br>implement changes specific to the Qualcomm BSP. This file also defines<br>configuration variables that are shared by<br>all Qualcomm development kits based on QCS8300. |
    | `meta-qcom-hwe/conf/machine/include/qcom-qcs615.inc` | This file sets the `SOC_FAMILY` variable to `qcs615`.<br>This allows Qualcomm Linux recipes to use the `qcs615` OVERRIDE to<br>implement changes specific to the Qualcomm BSP. This file also defines<br>configuration variables that are shared by<br>all Qualcomm development kits based on QCS615. |

    **Machine configuration files for development kits based on QCS6490**

Note

For Qualcomm Linux 1.2 and subsequent releases, you must use the new machine configuration
files listed in the following table. Qualcomm Linux 1.2 has replaced the previous machine configuration file,
`qcm6490.conf`, from Qualcomm Linux 1.1.

    | Configuration file | Description |
    | --- | --- |
    | `conf/machine/qcm6490-idp.conf` | This file is for the integrated development platform (IDP) with QCM6490. |
    | `conf/machine/qcs6490-rb3gen2-core-kit.conf` | This file is for the Qualcomm Dragonwing^™^ RB3 Gen 2 Core development kit with QCS6490 SoC. |
    | `conf/machine/qcs6490-rb3gen2-vision-kit.conf` | This file is for the Qualcomm Dragonwing^™^ RB3 Gen 2 Vision development kit with QCS6490 SoC, which includes low-/high-resolution CSI cameras. |
    | `conf/machine/qcs6490-rb3gen2-industrial-kit.conf` | This file is for the Qualcomm Dragonwing^™^ RB3 Gen 2 Industrial development kit with QCS6490 SoC. |

    **Machine configuration files for development kits based on IQ-9075 and IQ-9100**

    | Configuration file | Description |
    | --- | --- |
    | `conf/machine/qcs9100-ride-sx.conf` | This file is for the Qualcomm^®^ IQ-9 Beta Evaluation Kit (EVK) with the IQ-9100 SoC. |
    | `conf/machine/qcs9075-ride-sx.conf` | This file is for the Qualcomm IQ-9 Beta EVK with the IQ-9075 SoC. |
    | `conf/machine/qcs9075-iq-9075-evk.conf` | This file is for the Qualcomm Dragonwing^™^ IQ-9075 EVK with the IQ-9075 SoC. |
    | `conf/machine/qcs9075-iq-9075-evk-ifp.conf` | This file is for the Dragonwing IQ-9075 EVK with the IQ-9075 SoC. |

    **Machine configuration files for development kits based on IQ-8275**

    | Configuration file | Description |
    | --- | --- |
    | `conf/machine/qcs8300-ride-sx.conf` | This file is for the Qualcomm^®^ IQ-8 Beta EVK with the IQ-8300 SoC. |
    | `qcs8275-iq-8275-evk.conf` | This file is for the Qualcomm Dragonwing^™^ IQ-8275 EVK with the IQ-8275 SoC. |
    | `qcs8275-iq-8275-evk-ifp.conf` | This file is for the Dragonwing^™^ IQ-8275 EVK with the IQ-8275 SoC. |

    **Machine configuration files for development kits based on IQ-615**

    | Configuration file | Description |
    | --- | --- |
    | `conf/machine/qcs615-adp-air.conf` | This file is for the Qualcomm Dragonwing^™^ IQ-615 EVK with the IQ-615 SoC. |

    **Use of OVERRIDES in** `meta-qcom-hwe`

    The Qualcomm BSP uses BitBake OVERRIDES to define
two different methods for building the BSP.

    The metadata layer derives `MACHINEOVERRIDES` from `QCOM_SELECTED_BSP`
in the `meta-qcom-hwe/conf/machine/include/qcom-base.inc` file as follows:

MACHINEOVERRIDES =. "qcom-${QCOM_SELECTED_BSP}-bsp:"
        Copy to clipboard

    The two MACHINEOVERRIDES in `meta-qcom-hwe` are `qcom-custom-bsp`
and `qcom-base-bsp`. These OVERRIDES are used by machine configuration
files, recipes, and other configuration files within the `meta-qcom-hwe`
metadata layer. The configuration files and recipes use these OVERRIDE constructs
to conditionally set variables and append tasks as needed.

    Recipes and configuration files use MACHINEOVERRIDES to determine whether the final image
is composed of Qualcomm custom BSP software components or upstream software components,
based on the effective OVERRIDE at build time.

    For example, PREFERRED\_PROVIDER for `egl`, `libgl`, `libgles1`,
and `libgles2` is set as follows:

    | Effective OVERRIDE | PREFERRED\_PROVIDER for `egl`, `libgl`, `libgles1`, `libgles2` |
    | --- | --- |
    | `qcom-custom-bsp` | `adreno` |
    | `qcom-base-bsp` | `mesa` |

    In the BitBake code snippet, the OVERRIDES conditionally set the variables as follows:

# Provider for Graphics Library.
        # qcom-base-bsp uses 'mesa' as GL provider
        GL_PROVIDER ?= "adreno"
        GL_PROVIDER:qcom-base-bsp ?= "mesa"
        
        PREFERRED_PROVIDER_virtual/egl      = "${GL_PROVIDER}"
        PREFERRED_PROVIDER_virtual/libgl    = "${GL_PROVIDER}"
        PREFERRED_PROVIDER_virtual/libgles1 = "${GL_PROVIDER}"
        PREFERRED_PROVIDER_virtual/libgles2 = "${GL_PROVIDER}"
        
        PREFERRED_PROVIDER_virtual/egl-native      = "mesa-native"
        PREFERRED_PROVIDER_virtual/libgl-native    = "mesa-native"
        PREFERRED_PROVIDER_virtual/libgles1-native = "mesa-native"
        PREFERRED_PROVIDER_virtual/libgles2-native = "mesa-native"
        Copy to clipboard

Note

In this release, the `qcom-base-bsp` OVERRIDE is built only for `qcs9100-ride-sx.conf` and `qcs8300-ride-sx.conf`.

> 
> 
> - **Kernel cmdline**
> 
> 
>     The `meta-qcom-hwe/conf/machine/include/qcom-qcs6490.inc`, `meta-qcom-hwe/conf/machine/include/qcom-qcs9100.inc`
> and `meta-qcom-hwe/conf/machine/include/qcom-qcs8300.inc` include files
> use the `KERNEL_CMDLINE_EXTRA` variable to set the kernel command-line parameters as follows:
> 
> 
> Tab qcom-qcs6490.inc
> Tab qcom-qcs9100.inc
> Tab qcom-qcs8300.inc
> 
> The following snippet is from the `qcom-qcs6490.inc` file:
> 
> 
> # Additional Kernel cmdline parameters for debug builds
>         DBG_CMDLINE = "${@oe.utils.conditional('DEBUG_BUILD','1','earlycon page_owner=on qcom_scm.download_mode=1 slub_debug=FZP,zs_handle,zspage;FZPU','',d)}"
>         
>         KERNEL_CMDLINE_EXTRA ?= "pcie_pme=nomsi kernel.sched_pelt_multiplier=4 rcupdate.rcu_expedited=1 rcu_nocbs=0-7 kpti=off kasan=off kasan.stacktrace=off no-steal-acc ${DBG_CMDLINE} swiotlb=128 mitigations=auto net.ifnames=0"
>         Copy to clipboard
> 
> The following snippet is from the `qcom-qcs9100.inc` file:
> 
> 
> # Additional Kernel cmdline parameters for debug builds
>         DBG_CMDLINE = "${@oe.utils.conditional('DEBUG_BUILD','1','earlycon reboot=panic_warm page_owner=on qcom_scm.download_mode=1 slub_debug=FZP,zs_handle,zspage;FZPU','',d)}"
>         
>         KERNEL_CMDLINE_EXTRA ?= "pcie_pme=nomsi net.ifnames=0 pci=noaer kpti=off kasan=off kasan.stacktrace=off swiotlb=128 ${DBG_CMDLINE} mitigations=auto kernel.sched_pelt_multiplier=4 rcupdate.rcu_expedited=1 rcu_nocbs=0-7 no-steal-acc vfio_iommu_type1.allow_unsafe_interrupts=1 fw_devlink.strict=1"
>         Copy to clipboard
> 
> The following snippet is from the `qcom-qcs8300.inc` file:
> 
> 
> # Additional Kernel cmdline parameters for debug builds
>         DBG_CMDLINE = "${@oe.utils.conditional('DEBUG_BUILD','1','earlycon reboot=panic_warm page_owner=on qcom_scm.download_mode=1 slub_debug=FZP,zs_handle,zspage;FZPU','',d)}"
>         
>         KERNEL_CMDLINE_EXTRA ?= "pcie_pme=nomsi net.ifnames=0 pci=noaer kpti=off kasan=off kasan.stacktrace=off swiotlb=128 ${DBG_CMDLINE} mitigations=auto kernel.sched_pelt_multiplier=4 rcupdate.rcu_expedited=1 rcu_nocbs=0-7 no-steal-acc arm64.nopauth  fw_devlink.strict=1"
>         Copy to clipboard
> - **Include DTB**
> 
> 
>     Set the `KERNEL_DEVICETREE` variable conditionally, using the OVERRIDES mechanism
> to ensure that the correct device tree binary (DTB) is included. This is managed within each individual
> machine configuration file in `meta-qcom-hwe/conf/machine`.
> 
> 
>     Set the `KERNEL_DEVICETREE` variable differently for `custom` and `base` variants in the machine configuration file.
> The following example from `conf/machine/qcs9100-ride-sx.conf` shows how the machine configuration file selects a DTB:
> 
> 
> Tab linux-qcom-base
> Tab linux-qcom-custom
> 
> The following code block shows how `KERNEL_DEVICETREE`
> is set for `linux-qcom-base`, resulting in the `base` variant using the upstream DTB.
> 
> 
> KERNEL_DEVICETREE:pn-linux-qcom-base = " \
>                              qcom/qcs9100-ride.dtb \
>                              qcom/qcs9100-ride-r3.dtb \
>                              qcom/sa8775p-ride.dtb \
>                              qcom/sa8775p-ride-r3.dtb \
>                              "
>         Copy to clipboard
> 
> The following code block shows how `KERNEL_DEVICETREE`
> is set for `linux-qcom-custom`, resulting in the `custom` variant using the upstream DTB.
> 
> 
> KERNEL_DEVICETREE:pn-linux-qcom-custom = " \
>                              qcom/qcs9100-addons-ride.dtb \
>                              qcom/qcs9100-addons-ride-r3.dtb \
>                              qcom/sa8775p-addons-ride.dtb \
>                              qcom/sa8775p-addons-ride-r3.dtb \
>                              "
>         Copy to clipboard
> - **Include additional DTBOs**
> 
> 
>     To include an additional device-tree overlay (DTBO) to be overlaid
> on the kernel device-tree, use the `KERNEL_TECH_DTBOS` variable
> to list the DTBO names.
> 
> 
> Note
> 
> 
> Qualcomm Linux supports device tree binary overlay only for `custom` variant.
> 
> 
>     The following example from `qcs9100-ride-sx.conf` shows
> how DTBOs are used.
> 
> 
> KERNEL_TECH_DTBOS[sa8775p-addons-ride] = " \
>            sa8775p-video.dtbo qcs9100-graphics.dtbo \
>            qcs9100-ride-sx-camera.dtbo \
>            "
>         KERNEL_TECH_DTBOS[sa8775p-addons-ride-r3] = " \
>            sa8775p-video.dtbo qcs9100-graphics.dtbo \
>            qcs9100-ride-sx-camera.dtbo \
>            "
>         
>         KERNEL_TECH_DTBOS[qcs9100-addons-ride] = " \
>            sa8775p-video.dtbo qcs9100-graphics.dtbo \
>            qcs9100-ride-sx-camera.dtbo \
>            "
>         
>         KERNEL_TECH_DTBOS[qcs9100-addons-ride-r3] = " \
>            sa8775p-video.dtbo qcs9100-graphics.dtbo \
>            qcs9100-ride-sx-camera.dtbo \
>            "
>         
>         KERNEL_TECH_DTBO_PROVIDERS = "\
>            qcom-graphicsdevicetree \
>            qcom-videodtb \
>            cameradtb \
>            "
>         Copy to clipboard

- **Firmware recipes**

    Qualcomm Linux firmware recipe files are available on
[GitHub](https://github.com/qualcomm-linux/meta-qcom-hwe/tree/scarthgap/recipes-firmware).
When the Qualcomm Linux source code is synced, the firmware recipes
are available in the `<workspace>/layers/meta-qcom-hwe/recipes-firmware/firmware` directory.

    - **Critical boot binaries**

        Critical boot firmware images are required to boot the kernel on the
device. The following firmware recipe provides the hardware SoC-specific
boot firmware.

        | Firmware recipe | Description |
        | --- | --- |
        | `firmware-qcom-bootbins_1.0.bb` | Handles fetch, unpack, and deploy for critical<br>boot firmware binaries for compatible targets.<br>The `QCM6490_bootbinaries.zip`, `QCS9100_bootbinaries.zip`,<br>and `QCS8300_bootbinaries.zip` files provide the boot firmware<br>required for QCS6490, QCS9075, and QCS8300 based machines. |

        After generating the build, the firmware binaries in these zip files
are available for flashing in the following directory:

        `<workspace>/build-qcom-wayland/tmp-glibc/deploy/images/<machine-name>/<image-name>/`
    - **Subsystem firmware binaries**

        Qualcomm Linux includes firmware binaries that are loaded and run on
the corresponding subsystems. As the Qualcomm hardware SoC boots up, individual
subsystems run the firmware as they come out of reset.

        | Firmware recipe | Description |
        | --- | --- |
        | `firmware-qcom-hlosfw_1.0.bb` | Handles fetch, unpack, and install for subsystem<br>firmware binaries, such as aDSP, cDSP, modem, and WLAN.<br>The `QCM6490_fw.zip`, `QCS9100_fw.zip`, and `QCS8300_fw.zip` files<br>pack the firmware files for QCM6490, QCS9075, and QCS8300 based machines. |

        The `firmware-qcom-hlosfw_1.0.bb` recipe does the following:

> 
> 
> 1. Fetches the subsystem firmware binaries from the remote server based on SRC\_URI.
>         2. Unpacks the zip file.
>         3. Installs the firmware in `rootfs`.
    - **DSP libraries**

        User space utilities refer to the DSP libraries, which must
be available in the `rootfs` image.
The following firmware recipes provide the hardware SoC-specific DSP libraries:

        | Firmware recipe | Description |
        | --- | --- |
        | `firmware-qcom-dspso_1.0.bb` | Handles fetch, unpack, and install for DSP libraries.<br>The `QCM6490_dspso.zip`, `QCS9100_dspso.zip`, and `QCS8300_dspso.zip` zip files<br>pack the libraries for QCM6490, QCS9075, and QCS8300 based machines. |

        The `firmware-qcom-dspso_1.0.bb` recipe does the following:

> 
> 
> 1. Fetches the DSP libraries from the remote server based on SRC\_URI.
>         2. Unpacks the zip file.
>         3. Installs the DSP libraries in `rootfs`.
    - **Installation of boot, subsystem, and dspso**

        When Qualcomm Linux is built, the build system uses the firmware
recipes to deploy the prebuilt firmware based on the `MACHINE_EXTRA_RDEPENDS`
configuration variable, which is set in the machine configuration file.
For example, in `qcom-qcs6490.inc`, see the inclusion of
`packagegroup-firmware-qcm6490` in the `MACHINE_EXTRA_RDEPENDS` variable:

MACHINE_EXTRA_RDEPENDS += " \
               packagegroup-firmware-qcm6490 \
               "
            Copy to clipboard

Note

The `packagegroup-firmware-qcm6490` recipe is present in
the `<workspace>/layers/meta-qcom-hwe/recipes-firmware/packagegroups/` directory.
It groups the firmware recipes to generate the image.

        When Qualcomm Linux is built, based on the configuration in the machine
configuration and the package group recipe file, the respective firmware
recipes from the `<workspace>/layers/meta-qcom-hwe/recipes-firmware/firmware`
directory are built.
- **Kernel recipes**

    The Qualcomm Linux kernel recipes used by Qualcomm Linux are in
`<workspace>/layers/meta-qcom-hwe/recipes-kernel/linux`.

    Qualcomm Linux supports the long-term support (LTS) Qualcomm Linux kernel v6.6.x.
In the `meta-qcom-hwe` layer, there are two distinct kernel recipes:

    - The `linux-qcom-custom_6.6.bb` recipe supports the `custom` BSP and fetches
the kernel sources from `qcom.git` hosted at `git.codelinaro.org`.
    - The `linux-qcom-base_6.6.bb` recipe supports the `base` BSP and retrieves
kernel sources from `linux.git` hosted at `git.kernel.org`.

Tab linux-qcom-custom\_6.6.bb
Tab linux-qcom-base\_6.6.bb

inherit kernel sota
        
        COMPATIBLE_MACHINE = "(qcom)"
        
        SRCPROJECT = "git://git.codelinaro.org/clo/la/kernel/qcom.git;protocol=https"
        SRCBRANCH  = "kernel.qclinux.1.0.r1-rel"
        SRCREV     = "d3ed32bf7ee64db22653833d4c3d9a80dd76896d"
        
        SRC_URI = "${SRCPROJECT};branch=${SRCBRANCH};destsuffix=kernel \
                 ${@bb.utils.contains('DISTRO_FEATURES', 'selinux', ' file://selinux.cfg', '', d)} \
                 ${@bb.utils.contains('DISTRO_FEATURES', 'selinux', ' file://selinux_debug.cfg', '', d)} \
                 "
        
        S = "${WORKDIR}/kernel"
        
        KERNEL_CONFIG ??= "qcom_defconfig"
        Copy to clipboard

inherit kernel sota
        
        COMPATIBLE_MACHINE = "(qcom)"
        
        SRC_URI = " git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git;protocol=https;branch=linux-6.6.y \
                    file://qcom.cfg \
                    file://vm-configs/qcom_vm.cfg \
                    file://qcom_debug.cfg \
                    "
        # Apply qcom patches
        require ${BPN}-${PV}/configs.inc
        require ${BPN}-${PV}/devicetree.inc
        require ${BPN}-${PV}/drivers.inc
        require ${BPN}-${PV}/dt-bindings.inc
        require ${BPN}-${PV}/tools.inc
        
        KERNEL_CONFIG_FRAGMENTS:append = " ${WORKDIR}/qcom.cfg"
        KERNEL_CONFIG_FRAGMENTS:append = " ${@oe.utils.vartrue('DEBUG_BUILD', '${WORKDIR}/qcom_debug.cfg', '', d)}"
        
        S = "${WORKDIR}/git"
        Copy to clipboard

    The machine configuration files use OVERRIDES to select the appropriate
kernel recipe variant. The `qcom-base.inc` file chooses
`linux-qcom-base` when you select the `base` variant. If you
select the `custom` variant, the kernel is built using the `linux-qcom-custom`
recipe as shown in the following snippet.

PREFERRED_PROVIDER_virtual/kernel ?= "linux-qcom-custom"
        PREFERRED_PROVIDER_virtual/kernel:qcom-base-bsp ?= "linux-qcom-base"
        Copy to clipboard

    **Kernel configuration**

    The Qualcomm Linux kernel recipe uses a different set of kernel
configuration and fragments for the `base` and `custom` variants.

    | Variant | Configuration and fragments files |
    | --- | --- |
    | `base` | `defconfig`, `qcom.cfg`, `qcom_vm.cfg`, `qcom_debug.cfg` |
    | `custom` | `qcom_defconfig`, `qcom_addons.config`, `selinux.cfg`,<br>`qcom_debug.config`, `qcom_addons_debug.config`, `selinux_debug.cfg` |

    The following table provides the description of `defconfig` and `fragments` used for the `custom` variant:

    | Kernel configuration fragments | Description |
    | --- | --- |
    | `<kernel_src>/arch/arm64/configs/qcom_defconfig` | Default configuration that’s aligned to product/performance needs |
    | `<kernel_src>/arch/arm64/configs/qcom_debug.config` | Debug configuration fragment |
    | `<kernel_src>/arch/arm64/configs/qcom_addons.config` | Additional Qualcomm value-added additions on top of upstream aligned base |
    | `<kernel_src>/arch/arm64/configs/qcom_addons_debug.config` | Qualcomm debug enablement |

    The Qualcomm Linux `custom` variant recipe `linux-qcom-custom_6.6.bb`
further supports the `perf` and `debug` variations.
The default method to build the kernel using `linux-qcom-custom_6.6.bb`
is `perf`.

    | Build variant | Defconfig/config fragments |
    | --- | --- |
    | `Perf` | <ul class="simple"><br><li><p><code class="docutils literal notranslate"><span class="pre">arch/arm64/configs/qcom_defconfig</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">arch/arm64/configs/qcom_addons.config</span></code></p></li><br></ul> |
    | `Debug` | <ul class="simple"><br><li><p><code class="docutils literal notranslate"><span class="pre">arch/arm64/configs/qcom_defconfig</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">arch/arm64/configs/qcom_debug.config</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">arch/arm64/configs/qcom_addons.config</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">arch/arm64/configs/qcom_addons_debug.config</span></code></p></li><br></ul> |

    To build the debug kernel image with `linux-qcom-custom_6.6.bb`,
set DEBUG\_BUILD to 1 in the shell where you are using BitBake comamnds to build the image.

    This selection is effective in the following code:

KERNEL_CONFIG ??= "qcom_defconfig"
        
        KERNEL_CONFIG_FRAGMENTS:append = " ${S}/arch/arm64/configs/qcom_addons.config"
        KERNEL_CONFIG_FRAGMENTS:append = " ${@oe.utils.vartrue('DEBUG_BUILD', '${S}/arch/arm64/configs/qcom_debug.config', '', d)}"
        KERNEL_CONFIG_FRAGMENTS:append = " ${@oe.utils.vartrue('DEBUG_BUILD', '${S}/arch/arm64/configs/qcom_addons_debug.config', '', d)}"
        
        # Enable selinux support
        SELINUX_CFG = "${@oe.utils.vartrue('DEBUG_BUILD', 'selinux_debug.cfg', 'selinux.cfg', d)}"
        KERNEL_CONFIG_FRAGMENTS:append = " ${@bb.utils.contains('DISTRO_FEATURES', 'selinux', '${WORKDIR}/${SELINUX_CFG}', '', d)}"
        Copy to clipboard

    To autoload kernel modules for Qualcomm platforms, update the
KERNEL\_MODULE\_AUTOLOAD variable in the Qualcomm Linux kernel recipe.
For example, the CoreSight and STM modules are autoloaded as follows:

KERNEL_MODULE_AUTOLOAD += "coresight coresight-tmc coresight-funnel"
        KERNEL_MODULE_AUTOLOAD += "coresight-replicator coresight-etm4x coresight-stm"
        KERNEL_MODULE_AUTOLOAD += "coresight-cti coresight-tpdm coresight-tpda coresight-dummy"
        KERNEL_MODULE_AUTOLOAD += "coresight-remote-etm coresight-tgu"
        KERNEL_MODULE_AUTOLOAD += "stm_core stm_p_ost stm_console stm_heartbeat stm_ftrace "
        Copy to clipboard
- **Licenses**

    The licenses for recipes in `meta-qcom-hwe` are listed at
`<workspace>/meta-qcom-hwe/files/common-licenses`.

common-licenses/
        ├── BSD-3-Clause-Clear
        ├── GPLv2.0-with-linux-syscall-note
        └── Qualcomm-Technologies-Inc.-Proprietary
        Copy to clipboard

    Yocto can automatically create SPDX SBOM documents based on image creation.
To enable this feature, inherit the `create-spdx` class in `local.conf` as follows:

INHERIT += "create-spdx"
        Copy to clipboard

    After you inherit the class, rebuild the image with
the BitBake command:

bitbake qcom-multimedia-image
        Copy to clipboard

    You can find the SPDX output in the following directories:

    - For each recipe, the generated files are available in
the `tmp/deploy/spdx/<machine>` directory.
    - The top-level SPDX output file is in the `tmp/deploy/images/MACHINE/<image-recipe>-<MACHINE>.spdx.json` directory.

## meta-qcom-distro

This layer provides a reference distribution configuration for Qualcomm
Linux. This layer defines the image recipes and package groups.

- **BitBake classes**

    Qualcomm Linux supports both SSH and UART serial shell for device access.
You can choose either SSH or UART to access the device. You can also use
ADB to debug issues when IP interfaces are down or to transfer large files.

    The following table provides an introduction to the BitBake classes,
which are available at [Classes](https://github.com/qualcomm-linux/meta-qcom-distro/tree/scarthgap/classes).

    | BitBake class | Description |
    | --- | --- |
    | `image-adbd.bbclass` | The `image-adbd.bbclass` class in `meta-qcom-distro` installs adbd<br>in the image. The adbd daemon remains disabled unless<br>`IMAGE_FEATURES` contains the `enable-adbd` feature.<br>You can disable adbd by manually removing `/etc/usb-debugging-enabled`<br>from `rootfs`. |
    | `image-qcom-deploy.bbclass` | Deploys the image files available in<br>`<workspace>/build-<distro>/tmp-glibc/deploy/images/<machine>/<image-name>`.<br>The generated images are deployed in the `<image-name>` subdirectory. |
- **Distribution configuration**

    The following table provides an introduction to the distribution configurations,
which are available on
[GitHub](https://github.com/qualcomm-linux/meta-qcom-distro/tree/scarthgap/conf/distro).

    | Distribution configuration | Description |
    | --- | --- |
    | `conf/distro/qcom-wayland.conf` | This distribution configuration file defines the `qcom-wayland` distribution.<br>You can use the `qcom-wayland` distribution in the following example command:<br><br><br><br>> <br>> <br>> MACHINE=qcs6490-rb3gen2-core-kit DISTRO=qcom-wayland QCOM_SELECTED_BSP=base source setup-environment<br>>         Copy to clipboard<br><br><br><br>The `meta-qcom-distro/conf/distro/include/qcom-base.inc` configuration<br>defines common DISTRO\_FEATURES. The `meta-qcom-distro/conf/distro/qcom-wayland.conf` configuration<br>adds the following features:<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><code class="docutils literal notranslate"><span class="pre">wayland</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">vulkan</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">opengl</span></code></p></li><br>> </ul><br><br><br><br>The Yocto Project documentation defines these distribution features at<br>[Distribution features](https://docs.yoctoproject.org/5.0.6/singleindex.html#distro-features). |
    | `conf/distro/include/qcom-base.inc` | INIT\_MANAGER is set to `systemd`.<br>For Yocto Project documentation on INIT\_MANAGER,<br>see [INIT_MANAGER](https://docs.yoctoproject.org/5.0.6/singleindex.html#term-INIT_MANAGER).<br>Other DISTRO\_FEATURES enabled are:<br><br><br>DISTRO_FEATURES:append = ” pam overlayfs acl xattr selinux ptest security virtualization tpm usrmerge sota”<br>        Copy to clipboard<br><br><br>To understand the purpose of these DISTRO\_FEATURES, see<br>[Distribution features](https://docs.yoctoproject.org/5.0.6/singleindex.html#distro-features).<br><br><br>This file selects `systemd` as INIT\_MANAGER and `udev` as the DEV\_MANAGER. |
    | `conf/distro/include/qcom-security_flags.inc` | This file includes the security flags as defined in<br>[security flags](https://git.yoctoproject.org/poky/tree/meta/conf/distro/include/security_flags.inc?h=scarthgap). |
- **Package groups**

    Package groups are defined in `meta-qcom-hwe` and `meta-qcom-distro`.
These package groups help you understand the features
defined by the Qualcomm BSP. The following table provides an introduction to the package groups:

    | Package group | Description |
    | --- | --- |
    | `packagegroup-qcom.bb` | Package group that contains all the basic packages. |
    | `packagegroup-qcom-multimedia.bb` | Package group that contains packages to enable multimedia support:<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-container</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-audio</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-camera</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-display</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-fastcv</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-graphics</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-k8s</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-opencv</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-video</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">python3-docker-compose</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-iot-base-utils</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-location</span></code></p></li><br>> </ul><br>> <br>> Note<br>> <br>> <br>> The `packagegroup-qcom-location` is defined in `meta-qcom-extras` metadata layer. |
    | `packagegroup-qcom-test-pkgs.bb` | Package group that contains test packages. |
- **Image recipes**

    The `meta-qcom-distro` Qualcomm Linux metadata layer defines image
recipes, which are available on
[GitHub](https://github.com/qualcomm-linux/meta-qcom-distro/tree/scarthgap/recipes-products/images).
The following table lists various images, their `IMAGE_FEATURES`, and
the functions that the images serve:

    | Image recipe | Description of the image |
    | --- | --- |
    | `qcom-minimal-image.bb` | Defines a small `rootfs` to boot to the shell.<br><br><br>The `IMAGE_FEATURES` enabled are as follows:<br><br><br>IMAGE_FEATURES += "splash tools-debug allow-root-login post-install-logging enable-adbd"<br>        Copy to clipboard<br><br><br>For more information about `IMAGE_FEATURES`, see<br>[Image features](https://docs.yoctoproject.org/5.0.6/singleindex.html#image-features). |
    | `qcom-console-image.bb` | Extends `qcom-minimal-image` by adding more packages<br>and enabling more `IMAGE_FEATURES`:<br><br><br>IMAGE_FEATURES += “package-management ssh-server-openssh”<br>        Copy to clipboard |
    | `qcom-multimedia-image.bb` | Requires `DISTRO_FEATURE` wayland and it includes<br>all the multimedia packages in `rootfs`. |
    | `qcom-multimedia-test-image.bb` | Includes test packages in `rootfs` to test `qcom-multimedia-image`. |
    | `qcom-multimedia-crossesdk-image.bb` | Generates eSDK for `qcom-multimedia-image`. |
    | `qcom-guestvm-image.bb` | A minimal kernel-based virtual machine (KVM) image with boot to shell support. |
- **QDL flashing tool**

    QDL is a flashing tool that communicates
with the USB devices to upload flash loader to the
device. The flash loader flashes the images to universal flash storage (UFS)
or embedded multimedia card (eMMC) built into the device.
For more information about `QDL flashing`, see
[QDL](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-254/flash_images.html).

## meta-qcom-realtime

The `meta-qcom-realtime` metadata layer is available on
[GitHub](https://github.com/qualcomm-linux/meta-qcom-realtime). This layer provides
additional software support for building a real-time kernel for Qualcomm devices.

- **Kernel recipes**

    Qualcomm Linux supports the LTS Qualcomm Linux kernel v6.6.x and real-time extensions.
It’s maintained through the `linux-qcom-custom-rt_6.6.bb` and `linux-qcom-base-rt_6.6.bb` Yocto recipes
at `recipes-kernel/linux` under the `meta-qcom-realtime` layer.
The pending pre-empt RT patches can be found at [realtime](https://wiki.linuxfoundation.org/realtime/start).
These patches are fetched and applied on top of the `linux-qcom-custom-rt_6.6.bb`,
which is publicly hosted at [Codelinaro](https://git.codelinaro.org/clo/la/kernel/qcom.git).

    To compile a real-time kernel for Qualcomm devices:

> 
> 
> - If you chose the `custom` OVERRIDE, `conf/layer.conf` selects `linux-qcom-custom-rt`.
>     - If you chose the `base` OVERRIDE, `conf/layer.conf` selects `linux-qcom-base-rt`.

    **Kernel configuration**

    Both recipes append the `qcom_rt.cfg` fragment as follows:

KERNEL_CONFIG_FRAGMENTS:append = " ${WORKDIR}/qcom_rt.cfg"
        Copy to clipboard
- **Enable** `meta-qcom-realtime` **in build**

    To enable `meta-qcom-realtime` in the build, export the
`meta-qcom-realtime` layer to EXTRALAYERS in `bblayers.conf`, as
described in the following steps:

    1. Source the environment.

        The following is an example to source the environment for a QCS6490-based machine and the `qcom-wayland` distribution:

MACHINE=qcs6490-rb3gen2-core-kit DISTRO=qcom-wayland source setup-environment
            Copy to clipboard
    2. Open the `build-qcom-wayland/conf/bblayers.conf` file and update
the EXTRALAYERS variable as follows.

EXTRALAYERS ?= " \
              ${WORKSPACE}/layers/meta-qcom-realtime \
             "
            Copy to clipboard
    3. Run the build command to rebuild with `meta-qcom-realtime` as
follows:

bitbake qcom-multimedia-image
            Copy to clipboard

## meta-qcom-extras

This layer is an optional metadata layer for registered users. This
layer allows source compilation of select components, which are
otherwise present as binaries in `meta-qcom-hwe`. If you are entitled to
receive this metadata layer, you can use the steps shared in the
[Qualcomm Linux Build
Guide](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-254/build_addn_info.html).

- **Firmware recipes**

    The `meta-qcom-extras` layer provides recipe append files for the
firmware recipes defined in `meta-qcom-hwe` layer at `meta-qcom-hwe/recipes-firmware/firmware`.
The following code snippet shows these recipe append files, with extension `.bbapend`.
The firmware recipe append files have the `SRC_URI` set to zip files that you may want to use
instead of the default zip files distributed with this Qualcomm Linux release.

    Follow the [Qualcomm Linux Build Guide](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-254/build_addn_info.html)
to build cDSP, aDSP, Boot firmware, and generate the zip file that you can integrate using the provided recipe append files.

    | recipes-firmware<br>        └── firmware<br>           ├── firmware-qcom-bootbins_1.0.bbappend<br>           ├── firmware-qcom-dspso_1.0.bbappend<br>           ├── firmware-qcom-hlosfw_1.0.bbappend<br>           └── firmware-qcom-partconf_1.0.bbappend<br>        Copy to clipboard | The recipes in `meta-qcom-extras` override the `SRC_URI` in recipes from `meta-qcom-hwe`.<br>The `meta-qcom-hwe` layer uses pre-built firmware binaries by default, while<br>the `meta-qcom-extras` layer builds the firmware zip provided by the user.<br><br><br>The `meta-qcom-extras` layer ignores the pre-built binaries from the default<br>.zip files. These recipes instead search for user-provided .zip files set<br>in FWZIP\_PATH as follows:<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><code class="docutils literal notranslate"><span class="pre">firmware-qcom-bootbins_1.0.bbappend</span></code>: Searches for the zip archive under the path defined by the variable <code class="docutils literal notranslate"><span class="pre">FWZIP_PATH</span></code>.</p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">firmware-qcom-hlosfw_1.0.bbappend</span></code>: Searches for the zip archive under the path defined by the variable <code class="docutils literal notranslate"><span class="pre">FWZIP_PATH</span></code>.</p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">firmware-qcom-dspso_1.0.bbappend</span></code>: Searches for the zip archive under the path defined by the variable <code class="docutils literal notranslate"><span class="pre">FWZIP_PATH</span></code>.</p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">firmware-qcom-partconf_1.0.bbappend</span></code>: Searches for the zip archive under the path defined by the variable <code class="docutils literal notranslate"><span class="pre">FWZIP_PATH</span></code>.</p></li><br>> </ul> |
    | --- | --- |

## meta-qcom-qim-product-sdk

- **BitBake classes**

    The following table lists the BitBake classes defined in the
`meta-qcom-qim-product-sdk` metadata layer:

    | BitBake class | Description |
    | --- | --- |
    | `qim-prod-sdk-pkg.bbclass` | <ul class="simple"><br><li><p>Provides a packaging task to pack the Qualcomm Intelligent Multimedia (QIM) SDK artifacts<br>into an archive. It’s invoked by the <code class="docutils literal notranslate"><span class="pre">qim-product-sdk</span></code> recipe.</p></li><br><li><p>The easy-to-install artifact archives are available in the<br><code class="docutils literal notranslate"><span class="pre">&lt;workspace&gt;/build-qcom-wayland/tmp-glibc/deploy/qim_prod_sdk_artifacts</span></code><br>directory after the recipe build is complete.</p></li><br></ul> |
    | `qimsdk-pkg.bbclass` | <ul class="simple"><br><li><p>Provides a task to package the Qualcomm Multimedia SDK packages into an<br>archive along with an easy-to-use install script. The archives are<br>generated with packages to develop, deploy, and debug separately.</p></li><br><li><p>The easy-to-install artifact archives are available in the<br><code class="docutils literal notranslate"><span class="pre">&lt;workspace&gt;/build-qcom-wayland/tmp-glibc/deploy/qimsdk_artifacts</span></code> directory.</p></li><br><li><p>Invoked by the <code class="docutils literal notranslate"><span class="pre">qim-sdk</span></code> recipe during the build.</p></li><br></ul> |
    | `tflitesdk-pkg.bbclass` | <ul class="simple"><br><li><p>Provides a packaging task to pack the Lite Runtime SDK artifacts into several<br>archives to develop, deploy, and debug. It’s invoked by the<br><code class="docutils literal notranslate"><span class="pre">tflite-sdk</span></code> recipe during the build.</p></li><br><li><p>The easy-to-install artifact archives are available in the<br><code class="docutils literal notranslate"><span class="pre">&lt;workspace&gt;/build-qcom-wayland/tmp-glibc/deploy/qim_prod_sdk_artifacts</span></code><br>directory after the recipe build is complete.</p></li><br></ul> |
- **Distribution configuration**

    | `layer.conf` | Configures the project layers with the following information:<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>Recipe file path information</p></li><br>> <li><p>Supported Yocto version</p></li><br>> <li><p>Supported Qualcomm<sup>®</sup> Hexagon<sup>™</sup> Processor version</p></li><br>> <li><p>Supported Qualcomm<sup>®</sup> Neural Processing SDK version</p></li><br>> <li><p>Supported Qualcomm Neural Network (QNN) SDK version</p></li><br>> </ul> |
    | --- | --- |
- **Image recipes**

    | Recipe | Description |
    | --- | --- |
    | `recipes-gst` | Consists of the upstream GStreamer recipe changes (`.bbapend`) along with Qualcomm recipes:<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-good_1.20%.bbappend</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-base.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-batch.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-metamux.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mldemux.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlmeta.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlmuxer.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlqnn.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlsnpe.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mltflite.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlvclassification.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlvconverter.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlvdetection.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlvpose.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlvsegmentation.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-overlay.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-qmmfsrc.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-socket.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-tools.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-vcomposer.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-vsplit.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-vtransform.bb</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-qcom-oss-sample-apps.bb</span></code></p></li><br>> </ul> |
    | `recipes-qcom-ml` | Consists of two recipes:<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><code class="docutils literal notranslate"><span class="pre">qnn.bb</span></code>: Used to package QNN SDK</p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">snpe.bb</span></code>: Used to package Qualcomm Neural Processing SDK</p></li><br>> </ul> |
    | `recipes-qim-product-sdk` | Recipe to install QIM product SDK that has QIM, Qualcomm Neural Processing, QNN, and Lite Runtime SDKs |
    | `recipes-tensorflow-lite` | Lite Runtime recipes build and install Lite Runtime for the following versions:<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>2.12.1, 2.13.1, 2.14.1, and 2.15.0</p></li><br>> <li><p>Default version: 2.15.0</p></li><br>> </ul> |
- **Package groups**

    | Package group | Description |
    | --- | --- |
    | `packagegroup-qcom-gstrecipes-gst` | Package group to enable upstream basic GStreamer along with Qualcomm plug-ins:<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-base</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-tools</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-batch</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-metamux</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mldemux</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlmeta</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlvconverter</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlvclassification</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlvdetection</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlvpose</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlvsegmentation</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-overlay</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-qmmfsrc</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-socket</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-vcomposer</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-vsplit</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-vtransform</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-qcom-oss-sample-apps</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlsnpe</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mlqnn</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-qcom-oss-mltflite</span></code></p></li><br>> </ul><br><br><br><br>It also packs the upstream GStreamer packages:<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><code class="docutils literal notranslate"><span class="pre">cairo</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gdk-pixbuf</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">liba52</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">libdaemon</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">libgudev</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">lame</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">libpsl</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">librsvg</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">libsoup-2.4</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">libtheora</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">libwebp</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">mpg123</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">orc</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">sbc</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">speex</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">taglib</span></code></p></li><br>> </ul> |
    | `packagegroup-qcom-gst-basic` | Package group to enable upstream GStreamer:<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-base</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-good</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-plugins-bad</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">gstreamer1.0-rtsp-server</span></code></p></li><br>> </ul> |
    | `packagegroup-qcom-qim-product` | Package group to pack the following packages along with an install script:<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-gst</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">packagegroup-qcom-ml</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">install.sh</span></code></p></li><br>> </ul> |
    | `packagegroup-qcom-ml` | Package group to pack the Qualcomm ML framework:<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><code class="docutils literal notranslate"><span class="pre">tensorflow-lite</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">qnn</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">snpe</span></code></p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">libgomp-dev</span></code></p></li><br>> </ul> |

Last Published: Jul 02, 2025

[Previous Topic
Qualcomm Linux features](https://docs.qualcomm.com/bundle/publicresource/80-70020-27/topics/qualcomm_linux_features.md) [Next Topic
Use of BitBake OVERRIDES in Qualcomm Linux metadata layers](https://docs.qualcomm.com/bundle/publicresource/80-70020-27/topics/use-of-bitbake-overrides.md)