# Run sample applications
Qualcomm^®^ Linux^®^ includes various sample applications. For more information, see [Sample applications](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-50/example-applications.html).
Two main groups of sample applications are available, each suited for different use cases such as retail, Qualcomm^®^ Edge AI Box Solutions, and IP camera.
[Run multimedia sample applications](https://docs.qualcomm.com/doc/80-70018-253/topic/demo_app.html#link-mm-apps)
These sample applications focus on camera, video, and audio functionalities.
[Run AI sample applications](https://docs.qualcomm.com/doc/80-70018-253/topic/demo_app.html#link-ai-apps)
These sample applications focus on AI and machine learning (ML) capabilities.
You can run these applications using one of the following methods:
- [Run sample applications using Qdemo, a GUI-based application](https://docs.qualcomm.com/doc/80-70018-253/topic/demo_app.html#qdemo)
- Run sample applications manually
>
>
> - [Run multimedia sample applications](https://docs.qualcomm.com/doc/80-70018-253/topic/demo_app.html#link-mm-apps)
> - [Run AI sample applications](https://docs.qualcomm.com/doc/80-70018-253/topic/demo_app.html#link-ai-apps)
Note
- To run the multimedia and AI applications, set up the [Wi-Fi](https://docs.qualcomm.com/doc/80-70018-253/topic/set_up_the_device.html#using-wifi) and establish [SSH](https://docs.qualcomm.com/doc/80-70018-253/topic/set_up_the_device.html#connect-ssh) connectivity.
- To view the display output, connect the HDMI display to the HDMI port of the RB3 Gen 2 device (see [Connect to HDMI display](https://docs.qualcomm.com/doc/80-70018-253/topic/set_up_the_device.html#concept-wc5-hcp-4bc)).
- To enable audio, see [Qualcomm Linux Audio Guide](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-16/enable-audio.html).
## Run sample applications using Qdemo
Qdemo is a GUI-based application that allows you to experience the AI and multimedia capabilities of the Qualcomm^®^ RB3 Gen 2 Development Kit with a single click. You can get started with this application without the host setup and can connect to the Wi-Fi also.
**Prerequisites**
- HDMI monitor
- Mouse
- Keyboard
- Wi-Fi connection
- Recorded video to run the video wall application
**Procedure**
1. Connect the mouse, keyboard, and HDMI monitor to the device, and then power on the device.

If you face any keyboard or mouse connectivity issue, update the USB firmware. For more information, see [FAQs](https://docs.qualcomm.com/doc/80-70018-253/topic/faqs.html#usb-firmware).
2. Click the terminal icon on the Wayland display.

3. Once the terminal opens, run the Qdemo application.
Qdemo
Copy to clipboard

4. Connect to a Wi-Fi network.

5. In the Applications drop-down, select an application and click Start.
When running the application for the first time on the device, this step may take more than a minute because the device downloads the AI models and labels from GitHub. When running the application subsequently, this step takes just a few seconds for execution.
6. Close the pop-up window to stop the use case.
7. Click Exit to close the application.
## Run multimedia sample applications
The multimedia sample applications show use cases for camera, display, and video streams on the RB3 Gen 2 device.
### Multicamera streaming or encoding (Dash cam)
The **gst-multi-camera-example** command-line application shows simultaneous streaming from two camera sensors on the RB3 Gen 2 device. The application composes the camera feeds side-by-side to display on a screen or encodes and stores the video streams to files.

**Figure: Dash cam application workflow**
**Video: Multicamera application**
**Example usage**
To start the application, run the following use cases from the SSH terminal:
1. To view the sample application on the HDMI display, run the following export command:
export XDG_RUNTIME_DIR=/dev/socket/weston && export WAYLAND_DISPLAY=wayland-1
Copy to clipboard
Note
If Weston isn’t enabled automatically, start two instances of secure shell: one to enable Weston and the other to run the application.
1. To enable Weston, run the following command in the first shell:
export GBM_BACKEND=msm && export XDG_RUNTIME_DIR=/dev/socket/weston && mkdir -p $XDG_RUNTIME_DIR && weston --continue-without-input --idle-time=0
Copy to clipboard
2. To set up the Wayland Display environment, run the following command in the second shell:
export XDG_RUNTIME_DIR=/dev/socket/weston && export WAYLAND_DISPLAY=wayland-1
Copy to clipboard
2. To view the `waylandsink` output, run the following command:
gst-multi-camera-example -o 0
Copy to clipboard
3. To store the encoder output, do the following:
1. Run the following command:
gst-multi-camera-example -o 1
Copy to clipboard
The device stores the encoded files at `/opt/cam1_vid.mp4` and `/opt/cam2_vid.mp4` for camera 1 and camera 2, respectively.
2. To pull the files from the host computer, run the following command:
scp root@:/opt/cam1_vid.mp4
Copy to clipboard
Note
When prompted for a password, enter `oelinux123`.
3. To play the encoder output, you can use any media player that supports MP4 files.
- To stop the use case, select **CTRL + C**.
- To display the available help options, run the following command:
gst-multi-camera-example --help
Copy to clipboard
- The `GST_DEBUG` environment variable controls the GStreamer debug output. Set the required level to allow logging. For example, to log all warnings, run the following command:
export GST_DEBUG=2
Copy to clipboard
### Multichannel video decode and compose (Video wall)
The **gst-concurrent-videoplay-composition** command-line application allows concurrent video decoding and playback for AVC-coded videos and composes them on a display for video wall applications. The application requires at least one input video file, which should be an MP4 file with the AVC codec.

**Figure: Video wall application workflow**
**Video: Multichannel decode and display application**
**Example usage**
1. To transfer prerecorded or test videos that are in the AVC-encoded MP4 (H.264) format (with the filename as ``) to your device, run the following command on the host computer:
scp root@[DEVICE IP-ADDR]:/opt/
Copy to clipboard
Note
When prompted for a password, enter `oelinux123`.
2. To view the sample application on the HDMI display, run the following export command from the SSH terminal:
export XDG_RUNTIME_DIR=/dev/socket/weston && export WAYLAND_DISPLAY=wayland-1
Copy to clipboard
Note
If Weston isn’t enabled automatically, start two instances of secure shell: one to enable Weston and the other to run the application.
1. To enable Weston, run the following command in the first shell:
export GBM_BACKEND=msm && export XDG_RUNTIME_DIR=/dev/socket/weston && mkdir -p $XDG_RUNTIME_DIR && weston --continue-without-input --idle-time=0
Copy to clipboard
2. To set up the Wayland Display environment, run the following command in the second shell:
export XDG_RUNTIME_DIR=/dev/socket/weston && export WAYLAND_DISPLAY=wayland-1
Copy to clipboard
3. To start concurrent playback for four channels, run the following command:
gst-concurrent-videoplay-composition -c 4 -i /opt/.mp4 -i /opt/.mp4 -i /opt/.mp4 -i /opt/.mp4
Copy to clipboard
Note
- `-c`: specifies the number of streams to be decoded for composition can be either 2, 4, or 8.
- `-i`: specifies the absolute path to the input video file.
- To stop the use case, select **CTRL + C**.
- To display the available help options, run the following command:
gst-concurrent-videoplay-composition --help
Copy to clipboard
- The `GST_DEBUG` environment variable controls the GStreamer debug output. Set the required level to allow logging. For example, to log all warnings, run the following command:
export GST_DEBUG=2
Copy to clipboard
## Run AI sample applications
AI sample applications show use cases for object detection and parallel inferencing on input streams from a camera, video file, or Real-Time Streaming Protocol (RTSP) stream on the RB3 Gen 2 device. To run these sample applications, you must obtain AI models from [Qualcomm® AI Hub](https://aihub.qualcomm.com/iot/models) and labels from GitHub.
The procedure involves downloading the models and labels, transferring them to the RB3 Gen 2 device, and running the sample applications.

**Figure: Workflow for running AI sample applications**
**Prerequisite**
AI sample applications require model and label files on the device to run the application.
**Procedure**
1. You require the following models for the AI sample applications:
| Sample application | Models required |
| --- | --- |
| AI object detection | [Yolov8-Detection-Quantized](https://github.com/quic/ai-hub-models/tree/main/qai_hub_models/models/yolov8_det_quantized) |
| Parallel AI inference | [Yolov8-Detection-Quantized](https://github.com/quic/ai-hub-models/tree/main/qai_hub_models/models/yolov8_det_quantized) |
| Parallel AI inference | [Inception-v3-Quantized](https://aihub.qualcomm.com/iot/models/inception_v3_quantized) |
| Parallel AI inference | [HRNetPoseQuantized](https://aihub.qualcomm.com/iot/models/hrnet_pose_quantized) |
| Parallel AI inference | [DeepLabV3-Plus-MobileNet-Quantized](https://aihub.qualcomm.com/iot/models/deeplabv3_plus_mobilenet_quantized) |
| | |
| | |
| | |
2. Download and run the automated script to get the model and label files on the device:
cd /tmp/
Copy to clipboard
curl -L -O https://raw.githubusercontent.com/quic/sample-apps-for-qualcomm-linux/refs/heads/main/qualcomm-linux/scripts/download_artifacts.sh
Copy to clipboard
chmod +x download_artifacts.sh
Copy to clipboard
./download_artifacts.sh
Copy to clipboard
Note
The YOLOv8 models aren’t part of the script. You need to export these models using the Qualcomm AI Hub APIs.
### AI object detection
The **gst-ai-object-detection** sample application shows the hardware capability to detect objects on input streams from a camera, video file, or RTSP stream. The pipeline receives the input stream, preprocesses it, runs inferences on AI hardware, and displays the results on the screen.

**Figure: Object detection application workflow**
**Video: Object detection application**
**Example usage**
It’s mandatory to push the model and label files to the device to run the sample application. For details, see [Procedure](https://docs.qualcomm.com/doc/80-70018-253/topic/demo_app.html#procedure-ai).
1. Begin a new SSH session and start the HDMI display monitor if you haven’t already:
ssh root@
Copy to clipboard
2. To view the sample application on the HDMI display, run the following export command from the SSH terminal:
export XDG_RUNTIME_DIR=/dev/socket/weston && export WAYLAND_ DISPLAY=wayland-1
Copy to clipboard
Note
If Weston isn’t enabled automatically, start two instances of secure shell: one to enable Weston and the other to run the application.
1. To enable Weston, run the following command in the first shell:
export GBM_BACKEND=msm && export XDG_RUNTIME_DIR=/dev/socket/weston && mkdir -p $XDG_RUNTIME_DIR && weston --continue-without-input --idle-time=0
Copy to clipboard
2. To set up the Wayland Display environment, run the following command in the second shell:
export XDG_RUNTIME_DIR=/dev/socket/weston && export WAYLAND_DISPLAY=wayland-1
Copy to clipboard
3. Edit the `/etc/configs/config_detection.json` file on your device.
{
"file-path": "/etc/media/video.mp4",
"ml-framework": "tflite",
"yolo-model-type": "yolov8",
"model": "/etc/models/yolov8_det_quantized.tflite",
"labels": "/etc/labels/yolonas.labels",
"constants": "YOLOv8,q-offsets=<21.0, 0.0, 0.0>,q-scales=<3.0546178817749023, 0.003793874057009816, 1.0>;",
"threshold": 40,
"runtime": "dsp"
}
Copy to clipboard
| Field | Values/description |
| --- | --- |
| **ml-framework** | **ml-framework** |
| `snpe` | Uses the Qualcomm^®^ Neural Processing SDK models |
| `tflite` | Uses the LiteRT models |
| `qnn` | Uses the Qualcomm^®^ AI Engine direct models |
| **yolo-model-type** | **yolo-model-type** |
| `yolov5` `yolov8` `yolonas` | Runs the YOLOv5, YOLOv8, and YOLO-NAS models, respectively. See [Sample model and label files](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-50/gst-ai-object-detection.html#gst-ai-object-detection__section_hds_vxp_mdc). |
| **runtime** | **runtime** |
| `cpu` | Runs on the CPU |
| `gpu` | Runs on the GPU |
| `dsp` | Runs on the digital signal processor (DSP) |
| **Input source** | **Input source** |
| `camera` |
0 – Primary camera
1 – Secondary camera
|
| `file-path` | Directory path to the video file |
| `rtsp-ip-port` | Address of the RTSP stream in \_\_rtsp://<ip>:/<stream>\_\_ format |
4. To start the application, run the following command:
gst-ai-object-detection
Copy to clipboard
- To stop the use case, select **CTRL + C**.
- To display the available help options, run the following command:
gst-ai-object-detection -h
Copy to clipboard
- The `GST_DEBUG` environment variable controls the GStreamer debug output. Set the required level to allow logging. For example, to log all warnings, run the following command:
export GST_DEBUG=2
Copy to clipboard
### Parallel AI inference
The **gst-ai-parallel-inference** command-line application shows the hardware capability to perform four parallel AI inferences on input streams from a camera, video file, or RTSP stream. The pipeline detects objects, classifies objects, detects poses, and segments images on the input stream. The screen displays the results side-by-side.

**Figure: Parallel inference application workflow**
**Video: Parallel inferencing application**
**Example usage**
It’s mandatory to push the model and label files to the device to run the sample application. For details, see [Procedure](https://docs.qualcomm.com/doc/80-70018-253/topic/demo_app.html#procedure-ai).
1. Begin a new SSH session and start the HDMI display monitor if you haven’t already:
ssh root@
Copy to clipboard
2. To view the sample application on the HDMI display, run the following export command from the SSH terminal:
export XDG_RUNTIME_DIR=/dev/socket/weston && export WAYLAND_ DISPLAY=wayland-1
Copy to clipboard
Note
If Weston isn’t enabled automatically, start two instances of secure shell: one to enable Weston and the other to run the application.
1. To enable Weston, run the following command in the first shell:
export GBM_BACKEND=msm && export XDG_RUNTIME_DIR=/dev/socket/weston && mkdir -p $XDG_RUNTIME_DIR && weston --continue-without-input --idle-time=0
Copy to clipboard
2. To set up the Wayland Display environment, run the following command in the second shell:
export XDG_RUNTIME_DIR=/dev/socket/weston && export WAYLAND_DISPLAY=wayland-1
Copy to clipboard
3. To start the application, run the following command:
gst-ai-parallel-inference
Copy to clipboard
- To stop the use case, select **CTRL + C**.
- To display the available help options, run the following command:
gst-ai-parallel-inference -h
Copy to clipboard
Qualcomm AI Hub often updates models with the latest SDK versions. Using wrong model constants may lead to inaccurate results. If you face such issues, update the model constants. Provide the model constants for the sample application using the following command:
gst-ai-parallel-inference -s /etc/media/video.mp4 \
--object-detection-constants="YOLOv8,q-offsets=<21.0, 0.0, 0.0>,q-scales=<3.0546178817749023, 0.003793874057009816, 1.0>;" \
--pose-detection-constants="Posenet,q-offsets=<8.0>,q-scales=<0.0040499246679246426>;" \
--segmentation-constants="deeplab,q-offsets=<0.0>,q-scales=<1.0>;" \
--classification-constants="Inceptionv3,q-offsets=<38.0>,q-scales=<0.17039915919303894>;"
Copy to clipboard
- The `GST_DEBUG` environment variable controls the GStreamer debug output. Set the required level to allow logging. For example, to log all warnings, run the following command:
export GST_DEBUG=2
Copy to clipboard
**Known issue**
In pose detection, the model detects only one person, even if many people are present in the frame.
Note
Image classification using the Inception v3 model trains on the ImageNet data set. As a result, the model can’t detect a person because this class isn’t included in the data set.
## More applications
The Qualcomm Linux release offers various sample applications. To explore more, see [Sample applications](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-50/example-applications.html).
Last Published: Dec 31, 2025
[Previous Topic
Set up the device](https://docs.qualcomm.com/bundle/publicresource/80-70018-253/topics/set_up_the_device.md) [Next Topic
Develop your own application](https://docs.qualcomm.com/bundle/publicresource/80-70018-253/topics/develop_application.md)
Source: [https://docs.qualcomm.com/doc/80-70018-253/topic/demo_app.html](https://docs.qualcomm.com/doc/80-70018-253/topic/demo_app.html)