# Qualcomm Linux metadata layers overview

This section introduces the layers included
in the [Qualcomm manifest](https://github.com/qualcomm-linux/qcom-manifest).
This manifest includes all the layers required to reproduce the
reference build. The subsequent sections introduce the layers maintained by the Yocto Project.
Qualcomm maintains the layers specific to Qualcomm development kits, which depend on the community
layers to realize full functionality.

The following figure shows the layers included in the Qualcomm Linux release:

![../../_images/qualcomm_linux_metadata_layers.png](data:image/png;base64,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a3wglhvQHspdeRT6eV8t6AEHg0nuGexd7srzrK3sIyGRDtiq4z55vwLFqcS9AZCzb6spLn0HRnEeceyGjZz3pSglgPSwVWpCrJATtLqnlwWFDAp/kP+eyMT2TBmwlbpMoX2RK3IehD922JGG8wASxUmoFd3h6x79cMRTNciin/dVE0YY5GU5xa7qgc67Ka6c26+nqNPkn/EUS9WRXdRJ/OifDzbgbIrzYm4YTbKDwW0cZwwOhHZJnNxgDJ6zheFm3gPapECRqF5nk6ciTZmgqdmUVCyBOlbC02JJeuzKV55sREsHxv6YVCPIpilXcokmZEkR0AY6OZAUx0+y5WybuO7W5A14XgiDbY5jcpo6LUuzq/o8Ug5IZ1ab7/OOPmlVn0oWkkyjxjXTtHbJDfv8ZGM4fTC2JAcbbqZAg7pYhHBLVv3kiEChpeGsIeGQpcOQ9A3yeuqBIo3rLZBL0tV874FONkrStFiy/+ERz332sFdUPg3Ux3K4DWxCHtzG0CVwuA4OEWo+lRamirRxAEJ0GMCQChI14eM04brQaF3gMM+hwiLta4V5G553y4T4DysLMym7Gvd5SSYclaxWyKiMDYOrO/TOE6pbRcovC8dEpXeBrovSY76qPk9g8GHQLWopD3vyAA6REK4jRChTAZ/hT3CgKQgXFaUrwoMm9BJFkZ4vk/wZXpgvnchILsjk87JMIqofJiaiuEBOTimLTu8C2S9PL1JXZHl0CddTwuYNb/ZC/l49DzNjDUay+QrjeeODZfw9JB59OWTnYwdfdbn+wyEW/fKf7/rr8sSjL+Z1eZju2briAvqosndKj0V/+cO3/F6HirqPSX/nL6VMzPwV/+vgw8Yl/hrK+wyJ+x339av3cfSN/2j/feM/2n/af+cDlAkOoDwniMVs7SsYkaH2E2s/fxCHkUWZz0QGA+p9XlcCsb5skRmRwQB1Wz4tECu3kBmxwYBQ1eKwCpQZ0cHAZCQOm3UwozamJxLf0piRU346r5gD7yuCagRUeX8QFko/UZFMfAkbttzlM/XILHetDa13vraK0QZbe9dbG/5J1yJTijZkaN0ynra2di6HzaAM1VnkztfW2uU8y7U1LClCWdStc1vWLm/zzrdbk1oJarLVeud7u9yq1jvnFaGc821lR1C11Za+VIDyZbtV21F1L5Sg7rXKVdp/2n9JyQIAWE1QIHEBAAA8P3hwYWNrZXQgYmVnaW49J++7vycgaWQ9J1c1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCc/Pg0KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyI+PHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj48cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0idXVpZDpmYWY1YmRkNS1iYTNkLTExZGEtYWQzMS1kMzNkNzUxODJmMWIiIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIj48dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPjwvcmRmOkRlc2NyaXB0aW9uPjwvcmRmOlJERj48L3g6eG1wbWV0YT4NCjw/eHBhY2tldCBlbmQ9J3cnPz4A)

**Figure : Qualcomm Linux metadata layers**

Table : Qualcomm Linux metadata layers and descriptions

| Metadata layer | Description |
| --- | --- |
| `meta-qcom-hwe` | Contains recipes that build software components for Qualcomm development kits and provides value-added software features applicable to Qualcomm SoCs. |
| `meta-qcom-distro` | Provides a reference distribution configuration for Qualcomm development kits. Image recipes and package groups are defined in this layer. |
| `meta-qcom-extras` | Optional metadata layer for registered users. This layer enables source compilation of select components, which are<br>otherwise provided as binaries in `meta-qcom-hwe`. |
| `meta-qcom-qim-product-sdk` | Provides Qualcomm^®^ Intelligent Multimedia SDK (IM SDK) and AI SDKs based on the GStreamer framework. This includes<br>a set of GStreamer plug-ins, sample applications for multimedia, and AI use cases. |
| `meta-qcom-realtime` | Provides patches and configurations for the Qualcomm Linux kernel to enable real-time operations. |
| `meta-qcom` | Contains Qualcomm device support and upstream open-source software (OSS) components. |
| `meta-virtualization`<br><br><br>For more information, see [meta-virtualization](https://git.yoctoproject.org/meta-virtualization). | Contains packages for constructing OpenEmbedded virtualized solutions and virtualization stacks, such as Docker and Kubernetes. |
| `meta-selinux`<br><br><br>For more information, see [meta-selinux](https://git.yoctoproject.org/meta-selinux). | Enables SELinux support. This layer includes reference SELinux policies and<br>provides necessary tooling. To enable SELinux for Qualcomm Linux, set the<br>variable `DEFAULT_ENFORCING` to `enforcing` in `meta-qcom-distro/conf/distro/include/qcom-base.inc`. |
| `poky/meta`<br><br><br>For more information, see [poky/meta](https://git.yoctoproject.org/poky). | Provides build tools and recipe files that provide various software components needed for an embedded OS distribution. |
| `meta-openembedded`<br><br><br>For more information, see [meta-openembedded](https://git.openembedded.org/meta-openembedded). | Collection of layers for the OpenEmbedded build system. |
| `meta-security`<br><br><br>For more information, see [meta-security](https://git.yoctoproject.org/meta-security/tree/README.md?h=scarthgap). | Provides security tools and hardening tools for Qualcomm Linux kernels and libraries for implementing security mechanisms. |
| `meta-updater`<br><br><br>For more information, see [meta-updater](https://github.com/uptane/meta-updater/blob/scarthgap/README.adoc). | Enables over-the-air updates (OTA) with OSTree. OSTree is a tool for atomic full file system upgrades with rollback capability. |

For information about robotics layers, see [Qualcomm Intelligent Robotics Product (QIRP) SDK layers](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-265/architecture.html#component-layers-of-the-qirp-sdk).

## Qualcomm Linux metadata layers

The following layers represent the Qualcomm BSP metadata:

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

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

- [meta-qcom-distro](https://docs.qualcomm.com/doc/80-70018-27/topic/qualcomm_linux_metadata_layers_overview.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-70018-27/topic/qualcomm_linux_metadata_layers_overview.html#meta-qcom-qim-product-sdk-section)

The following metadata layer defines the optional BSP:

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

### Use of BitBake OVERRIDES in Qualcomm Linux metadata layers

The Qualcomm Linux metadata layers use the OVERRIDES mechanism of BitBake to implement two
distinct BSP variants referred to as `base` and `custom`.

When initiating Qualcomm Linux builds, set the `QCOM_SELECTED_BSP` variable to either
`custom` or `base`. This variable is defined in
`conf/machine/include/qcom-base.inc` and is set to `custom` by default as follows:

QCOM_SELECTED_BSP ??= "custom"
    Copy to clipboard

The value set for `QCOM_SELECTED_BSP` translates into two BitBake OVERRIDES.
The following is a mapping table of `QCOM_SELECTED_BSP` to the corresponding BitBake OVERRIDE:

| `QCOM_SELECTED_BSP` value | Corresponding BitBake OVERRIDE |
| --- | --- |
| `base` | `qcom-base-bsp` |
| `custom` | `qcom-custom-bsp` |

The effective value of the BitBake OVERRIDE sets variables selectively,
resulting in inclusion of packages in the image.

Note

To familiarize yourself with BitBake OVERRIDES, see
[Conditional syntax (Overrides)](https://docs.yoctoproject.org/bitbake/2.8/bitbake-user-manual/bitbake-user-manual-metadata.html#conditional-syntax-overrides)
and [Yocto Project documentation](https://docs.yoctoproject.org/singleindex.html#term-OVERRIDES).

To utilize the `base` variant of the BSP and how to set `QCOM_SELECTED_BSP` at build time,
see [Build base image](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-254/github_workflow_unregistered_users.html#build-base-image).

Note

In this release, the `base` BSP supports Qualcomm reference devices for building with `qcs8300-ride-sx.conf`,
`qcs9075-ride-sx.conf`, `qcs9100-ride-sx.conf`.

The final image composition depends on whether you choose `base` or `custom` value for the
`QCOM_SELECTED_BSP` variable, see [Overview](https://docs.qualcomm.com/doc/80-70018-27/topic/overview.html#yocto-overview).

To find examples of how these OVERRIDES select the software components
to be built, search the `meta-qcom-hwe` codebase using `qcom-base-bsp` and `qcom-custom-bsp`.

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

| `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>like 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.

> 
> 
> - **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<br>integrated development platform (IDP) with QCM6490. |
>     | `conf/machine/qcs6490-rb3gen2-core-kit.conf` | This file is for the QCS6490-based<br>Qualcomm^®^ RB3 Gen 2 Core development kit. |
>     | `conf/machine/qcs6490-rb3gen2-vision-kit.conf` | This file is for the QCS6490-based<br>Qualcomm^®^ RB3 Gen 2 Vision development kit with low-/high-resolution<br>CSI cameras. |
>     | `conf/machine/qcs6490-rb3gen2-industrial-kit.conf` | This file is for the QCS6490-based<br>Qualcomm^®^ RB3 Gen 2 Industrial development kit. |
> 
> 
> 
>     **Machine configuration files for development kits based on QCS9075 and QCS9100**
> 
> 
> 
> 
> 
> 
>     | Configuration file | Description |
>     | --- | --- |
>     | `conf/machine/qcs9100-ride-sx.conf` | This file is for the QCS9100-based<br>Qualcomm^®^ IQ9 Beta Evaluation Kit (EVK). |
>     | `conf/machine/qcs9075-ride-sx.conf` | This file is for the QCS9075-based<br>Qualcomm IQ9 Beta EVK. |
>     | `conf/machine/qcs9075-rb8-core-kit.conf` | This file is for the QCS9075-based<br>Qualcomm Dragonwing^™^ IQ-9075 EVK. |
>     | `conf/machine/qcs9075-rb8-core-kit-interface-plus-mezz.conf` | This file is for the QCS9075-based<br>Dragonwing IQ-9075 EVK. |
> 
> 
> 
>     **Machine configuration files for development kits based on QCS8300**
> 
> 
> 
> 
> 
> 
>     | Configuration file | Description |
>     | --- | --- |
>     | `conf/machine/qcs8300-ride-sx.conf` | This file is for the QCS8300-based<br>Qualcomm^®^ IQ8 Beta EVK. |
> 
> 
> 
>     **Machine configuration files for development kits based on QCS615**
> 
> 
> 
> 
> 
> 
>     | Configuration file | Description |
>     | --- | --- |
>     | `conf/machine/qcs615-adp-air.conf` | This file is for the QCS615-based<br>Qualcomm^®^ IQ6 Beta EVK. |
> 
> 
> 
>     **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 following directory:
> `<workspace>/layers/meta-qcom-hwe/recipes-firmware/firmware`.
> 
>     - **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-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-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-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**

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

    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.

    | `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).

    | `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` | The 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.

    | `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-70018-254/flash_images.html).

### Build Qualcomm Linux

The `meta-qcom`, `meta-qcom-hwe`, and `meta-qcom-distro` sections describe the
machine configurations, distribution configurations, image recipes, and OVERRIDES.

The supported values for `MACHINE`, `DISTRO`, and `QCOM_SELECTED_BSP` are listed in the [table](https://docs.qualcomm.com/doc/80-70018-27/topic/qualcomm_linux_metadata_layers_overview.html#qcom-selected-bsp).
To setup the environment, use these values and run the following command:

MACHINE=<machine configuration name> DISTRO=<Distro name> QCOM_SELECTED_BSP=<variant name> source setup-environment
    Copy to clipboard

The following table lists the possible image recipes to select and generate an image according the selected
`MACHINE`, `DISTRO`, and `QCOM_SELECTED_BSP`, run the following command:

bitbake <image recipe name>
    Copy to clipboard

| `QCOM_SELECTED_BSP`<br><br>(selected by you) | Effective BitBake OVERRIDE<br><br>(derived from `QCOM_SELECTED_BSP`) | MACHINE configuration<br><br>(selected by you) | Reference DISTRO configuration<br><br>(selected by you) | Image recipe<br><br>(selected by you) |
| --- | --- | --- | --- | --- |
| `custom` | `qcom-custom-bsp` | <ul class="simple"><br><li><p><code class="docutils literal notranslate"><span class="pre">qcs6490-rb3gen2-core-kit.conf</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcs6490-rb3gen2-vision-kit.conf</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcs6490-rb3gen2-industrial-kit.conf</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcs6490-idp.conf</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcs8300-ride-sx.conf</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcs9100-ride-sx.conf</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcs9075-ride-sx.conf</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcs8300-ride-sx.conf</span></code></p></li><br></ul> | <ul class="simple"><br><li><p><code class="docutils literal notranslate"><span class="pre">qcom-wayland</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcom-robotics-ros2-humble</span></code></p></li><br></ul> | <ul class="simple"><br><li><p><code class="docutils literal notranslate"><span class="pre">qcom-minimal-image</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcom-console-image</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcom-multimedia-image</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcom-multimedia-test-image</span></code></p></li><br></ul> |
| `base` | `qcom-base-bsp` | <ul class="simple"><br><li><p><code class="docutils literal notranslate"><span class="pre">qcs6490-rb3gen2-core-kit.conf</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcs6490-rb3gen2-vision-kit.conf</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcs6490-rb3gen2-industrial-kit.conf</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcs6490-idp.conf</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcs8300-ride-sx.conf</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcs9100-ride-sx.conf</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcs9075-ride-sx.conf</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcs8300-ride-sx.conf</span></code></p></li><br></ul> | <ul class="simple"><br><li><p><code class="docutils literal notranslate"><span class="pre">qcom-wayland</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcom-robotics-ros2-humble</span></code></p></li><br></ul> | <ul class="simple"><br><li><p><code class="docutils literal notranslate"><span class="pre">qcom-minimal-image</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcom-console-image</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcom-multimedia-image</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">qcom-multimedia-test-image</span></code></p></li><br></ul> |
|  |  |  |  |  |

To learn more about the supported combinations for building Qualcomm Linux, see
[Qualcomm Linux Release Notes](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-250403001134).

For detailed build instructions, see
[GitHub workflow for unregistered users](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-254/github_workflow_unregistered_users.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 include `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-70018-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-70018-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 Product (QIMP) 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: Apr 09, 2025

[Previous Topic
Qualcomm Linux features](https://docs.qualcomm.com/bundle/publicresource/80-70018-27/topics/qualcomm_linux_features.md) [Next Topic
Qualcomm Linux software components](https://docs.qualcomm.com/bundle/publicresource/80-70018-27/topics/qualcomm_linux_software_components.md)

Source: [https://docs.qualcomm.com/doc/80-70018-27/topic/qualcomm_linux_metadata_layers_overview.html](https://docs.qualcomm.com/doc/80-70018-27/topic/qualcomm_linux_metadata_layers_overview.html)