# Compile and install a Qualcomm IM SDK plugin

Tab Qualcomm Linux
Tab Ubuntu

- *class* tabincludedirectiv

    - This section explains how to compile a Qualcomm IM SDK plugin and install it on the device,
using the `mlvdetection` plugin as an example.

1. Set up the environment:

cd $ESDK_ROOT
        Copy to clipboard

source environment-setup-armv8-2a-qcom-linux
        Copy to clipboard

SDK environment now set up; additionally you may now run devtool to perform development tasks.
        Run devtool --help for further details.
        [/local/mnt/workspace/QIMSDK_ESDK_6490/workspace/sources/qcom-gst-ai-classification]$
        Copy to clipboard
2. Download the Qualcomm IM SDK plugin source code.

cd $ESDK_ROOT
        Copy to clipboard

devtool modify qcom-gstreamer1.0-plugins-oss-mlvdetection
        Copy to clipboard

    Where `qcom-gstreamer1.0-plugins-oss-mlvdetection` is the BitBake recipe that downloads the source code for the plugin.

NOTE: Starting bitbake server...
        Loading cache: 100% |######################################| Time: 0:00:00
        Loaded 9816 entries from dependency cache.
        Parsing recipes: 100% |####################################| Time: 0:00:01
        Parsing of 6700 .bb  files complete (6678 cached, 22 parsed). 9838 targets, 842 skipped, 0 masked, 0 errors.
        NOTE: Resolving any missing task queue dependencies
        Initialising tasks: 100% |#################################| Time: 0:00:55
        Sstate summary: Wanted 10 local 0 mirrors 0 Missed 10 Current 10 (0% match, 50% complete)
        NOTE: Executing Tasks
        NOTE: Tasks Summary: Attempted 93 tasks of which 90 didn't need to be rerun and all succeeded.
        INFO: Source tree extracted to /local/mnt/workspace/QIMSDK_ESDK_6490/workspace/sources/qcom-gstreamer1.0-plugins-oss-mlvdetection
        INFO: Recipe qcom-gstreamer1.0-plugins-oss-mlvdetection now setup to build from /local/mnt/workspace/QIMSDK_ESDK_6490/workspace/sources/qcom-gstreamer1.0-plugins-oss-mlvdetection
        Copy to clipboard

    The plugin source code is downloaded to `$ESDK_ROOT/workspace/sources/qcom-gstreamer1.0-plugins-oss-mlvdetection`.

[/local/mnt/workspace/QIMSDK_ESDK_6490/workspace/sources/qcom-gstreamer1.0-plugins-oss-mlvdetection]$ ls
        CMakeLists.txt    config.h.in    mlvdetection.h    modules
        [/local/mnt/workspace/QIMSDK_ESDK_6490/workspace/sources/qcom-gstreamer1.0-plugins-oss-mlvdetection]$
        Copy to clipboard
3. After customizing, use the following commands to rebuild the plugin.

devtool build qcom-gstreamer1.0-plugins-oss-mlvdetection
        Copy to clipboard

NOTE: Starting bitbake server...
        Loading cache: 100% |################################################| Time: 0:00:00
        Loaded 9816 entries from dependency cache.
        Parsing recipes: 100% |##############################################| Time: 0:00:01
        Parsing of 6700 .bb  files complete (6678 cached, 22 parsed). 9838 targets, 842 skipped, 0 masked, 0 errors.
        NOTE: Resolving any missing task queue dependencies
        Initialising tasks: 100% |###########################################| Time: 0:00:55
        Checking sstate mirror object availability: 100% |###################| Time: 0:01:06
        Sstate Summary: Wanted 264 Local 0 Mirrors 0 Missed 264 Current 255 (0% match, 49% complete)
        Removing 1 stale sstate objects for arch qcs6490_rb3gen2_vision_kit: 100% |################################################| Time: 0:00:12
        Removing 1 stale sstate objects for arch armv8-2a: 100% |##################################################################| Time: 0:00:16
        NOTE: Executing Tasks
        NOTE: qcom-gstreamer1.0-plugins-oss-mlvdetection: compiling from external source tree /local/mnt/workspace/QIMSDK_ESDK_6490/workspace/sources/qcom-gstreamer1.0-plugins-oss-mlvdetection
        NOTE: Task Summary: Attempted 1836 tasks of which 1827 didn't need to be rerun and all succeeded.
        Copy to clipboard
4. Generate the plugin installer (`.ipk`) to install the application on the device.

devtool package qcom-gstreamer1.0-plugins-oss-mlvdetection
        Copy to clipboard

    Verify that the installable package is present at the following path.

ls $ESDK_ROOT/tmp/deploy/ipk/armv8-2a | grep qcom-gstreamer1.0-plugins-oss-mlvdetection
        Copy to clipboard

qcom-gstreamer1.0-plugins-oss-mlvdetection_1.0-r0_armv8-2a.ipk
        qcom-gstreamer1.0-plugins-oss-mlvdetection_dbg_1.0-r0_armv8-2a.ipk
        qcom-gstreamer1.0-plugins-oss-mlvdetection_dev_1.0-r0_armv8-2a.ipk
        qcom-gstreamer1.0-plugins-oss-mlvdetection_src_1.0-r0_armv8-2a.ipk
        [/local/mnt/workspace/QIMSDK_ESDK_6490/workspace/sources/qcom-gstreamer1.0-plugins-oss-mlvdetection]$
        Copy to clipboard
5. Set up an SSH connection with the device by following the steps provided in
[Sign in using SSH](https://docs.qualcomm.com/bundle/publicresource/topics/80-70022-254/how_to.html#use-ssh).

    When connected, the Dragonwing RB3 Gen 2 device is accessible through its configured IP address.
6. Copy the `qcom-gstreamer1.0-plugins-oss-mlvdetection_1.0-r0_armv8-2a.ipk` to the Dragonwing RB3 Gen 2 device to
install the compiled reference apps.
7. Connect to the device through the SSH shell:

ssh root@<IP addr of the target device>
        Copy to clipboard

Note

If prompted, enter `oelinux123` as the password for the SSH shell.
8. Run the following command on the target device.

mount -o remount,rw /
        exit
        Copy to clipboard
9. Run the following commands on the host machine:

cd $ESDK_ROOT/tmp/deploy/ipk/armv8-2a/
        Copy to clipboard

scp qcom-gstreamer1.0-plugins-oss-mlvdetection_1.0-r0_armv8-2a.ipk root@<IP addr of the target device>:/opt
        Copy to clipboard
10. Connect to the device through the SSH shell:

ssh root@<IP addr of the target device>
        Copy to clipboard
11. Run the following command on the target device:

opkg --force-depends --force-reinstall --force-overwrite install /opt/qcom-gstreamer1.0-plugins-oss-mlvdetection_1.0-r0_armv8-2a.ipk
        Copy to clipboard
12. Verify that the IPK installation is successful as shown below:

Installing qcom-gstreamer1.0-plugins-oss-mlvdetection (1.0) on root
        Configuring qcom-gstreamer1.0-plugins-oss-mlvdetection.
        Copy to clipboard

## Next steps

- [Qualcomm Linux build guide](https://docs.qualcomm.com/bundle/publicresource/topics/80-70022-254/build_landing_page.html)
- [Build multimedia applications](https://docs.qualcomm.com/doc/80-70022-51/topic/application-development.html#application-development)
- [Create a sample application](https://docs.qualcomm.com/doc/80-70022-51/topic/content-develop-your-first-application.html#content-develop-your-first-application)
- [Customize an existing sample application](https://docs.qualcomm.com/doc/80-70022-51/topic/customize-sample-applications.html#customize-sample-applications)
- [Develop custom plugins](https://docs.qualcomm.com/doc/80-70022-51/topic/create-your-imsdk-plugin.html#create-your-imsdk-plugin)
- [Troubleshooting guide](https://docs.qualcomm.com/doc/80-70022-51/topic/troubleshooting.html#troubleshooting)

- *class* tabincludedirective

    - Set up your environment and install the Qualcomm IM SDK plugin to integrate its multimedia capabilities into your applications.

## Prerequisites

> 
> 
> Before you begin, ensure the following:
> 
> 
> 
> > 
> > 
> > - You have access to a Qualcomm development kit running Ubuntu Linux.
> > - You have administrative privileges (sudo access) for installing packages.
> > - Internet connectivity for downloading packages and source code.

## Steps to compile and install

To download the source code and compile the sample applications, run the following commands on the Qualcomm development kit.

1. Update the user permissions for your session.

> 
> 
> sudo su
>         Copy to clipboard
2. Configure Ubuntu package manager to download source code.

> 
> 
> apt-add-repository -s ppa:ubuntu-qcom-iot/qcom-ppa && apt-add-repository ppa:ubuntu-qcom-iot/qcom-ppa && apt-get install qcom-adreno-dev && apt-get install gstreamer1.0-qcom-sample-apps-utils-dev
>         Copy to clipboard
3. Build the dependencies.

> 
> 
> apt build-dep gst-plugins-qti-oss
>         Copy to clipboard
4. Change directory to the home folder.

> 
> 
> cd /home/ubuntu
>         Copy to clipboard
5. Download the sources of the QIM Package.

> 
> 
> apt source gst-plugins-qti-oss
>         Copy to clipboard
6. Go to the QIM root folder.

    For example:

> 
> 
> cd gst-plugins-qti-oss-1.0.r1.06200
>         Copy to clipboard
7. Create and go to the build directory.

> 
> 
> mkdir build; cd build
>         Copy to clipboard
8. Run CMake to generate the Makefile.

> 
> 
> cmake \
>            -DCMAKE_INSTALL_PREFIX=/usr \
>            -DCMAKE_BUILD_TYPE=None \
>            -DCMAKE_INSTALL_SYSCONFDIR=/etc \
>            -DCMAKE_INSTALL_LOCALSTATEDIR=/var \
>            -DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON \
>            -DCMAKE_FIND_USE_PACKAGE_REGISTRY=OFF \
>            -DCMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=ON \
>            -DFETCHCONTENT_FULLY_DISCONNECTED=ON \
>            -DCMAKE_INSTALL_RUNSTATEDIR=/run \
>            -DCMAKE_SKIP_INSTALL_ALL_DEPENDENCY=ON \
>            "-GUnix Makefiles" \
>            -DCMAKE_VERBOSE_MAKEFILE=ON \
>            -DCMAKE_INSTALL_LIBDIR=lib/aarch64-linux-gnu \
>            -DGST_VERSION_REQUIRED=1.20.1 \
>            -DSYSROOT_INCDIR=/usr/include \
>            -DSYSROOT_LIBDIR=/usr/lib \
>            -DGST_PLUGINS_QTI_OSS_INSTALL_BINDIR=/usr/bin \
>            -DGST_PLUGINS_QTI_OSS_INSTALL_LIBDIR=/usr/lib/aarch64-linux-gnu \
>            -DGST_PLUGINS_QTI_OSS_INSTALL_INCDIR=/usr/include \
>            -DGST_PLUGINS_QTI_OSS_INSTALL_CONFIG=/etc/configs \
>            -DGST_PLUGINS_QTI_OSS_LICENSE=BSD \
>            -DGST_PLUGINS_QTI_OSS_VERSION=2.0.0 \
>            -DGST_PLUGINS_QTI_OSS_PACKAGE=gstreamer1.0-plugins-qcom-oss \
>            "-DGST_PLUGINS_QTI_OSS_SUMMARY=Qualcomm open-source GStreamer Plug-ins" \
>            -DGST_PLUGINS_QTI_OSS_ORIGIN=http://www.qualcomm.com \
>            -DGST_IMAGE_MAX_WIDTH=5184 \
>            -DGST_IMAGE_MAX_HEIGHT=3880 \
>            -DGST_VIDEO_MAX_WIDTH=5184 \
>            -DGST_VIDEO_MAX_HEIGHT=3880 \
>            -DGST_VIDEO_MAX_FPS=120/1 \
>            -DCAMERA_METADATA_VERSION=1.0 \
>            -DGST_VIDEO_TYPE_SUPPORT=TRUE \
>            -DEIS_MODES_ENABLE=TRUE \
>            -DVHDR_MODES_ENABLE=TRUE \
>            -DFEATURE_OFFLINE_IFE_SUPPORT=TRUE \
>            -DENABLE_VIDEO_ENCODE=TRUE \
>            -DENABLE_VIDEO_DECODE=TRUE \
>            -DENABLE_VIDEO_DISPLAY=TRUE \
>            -DENABLE_VIDEO_ML=TRUE \
>            -DENABLE_VIDEO_AUDIO=TRUE \
>            ..
>         Copy to clipboard
9. Compile the QIM plugins.

> 
> 
> make -C gst-sample-apps/gst-sample-apps-utils install DESTDIR=../../../utils install
>         Copy to clipboard
> 
> 
> make
>         Copy to clipboard

    If successful, the compiled library files are present in the build directory.
10. Run the following to install the programs.

> 
> 
> sudo make install
>         Copy to clipboard

## Next steps

- [Build multimedia applications](https://docs.qualcomm.com/bundle/publicresource/topics/80-70022-51/application-development.html)
- [Create a sample application](https://docs.qualcomm.com/bundle/publicresource/topics/80-70022-51/content-develop-your-first-application.html)
- [Customize an existing sample application](https://docs.qualcomm.com/bundle/publicresource/topics/80-70022-51/customize-sample-applications.html)

Last Published: Jan 04, 2026

[Previous Topic
Customize an existing sample application with the Qualcomm IM SDK](https://docs.qualcomm.com/bundle/publicresource/80-70022-51/topics/customize-sample-applications.md) [Next Topic
Develop a custom plugin for the Qualcomm IM SDK](https://docs.qualcomm.com/bundle/publicresource/80-70022-51/topics/create-your-imsdk-plugin.md)