> ## Documentation Index
> Fetch the complete documentation index at: https://dragonwingdocs.qualcomm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Troubleshoot video

This section outlines the process to verify the function of the VPU driver. You can use the commands and samples provided in this section to:

* Verify if the VPU driver is successfully loaded
* Verify if decoding/encoding is successfully offloaded to the VPU
* Debug the VPU driver, firmware, and GStreamer video plugins

The following workflow diagram shows the sequence to verify the VPU driver:

<div className="flex flex-col items-center gap-2">
  <img src="https://mintcdn.com/qualcomm-prod/h7j64QujhJHkLxyj/Technologies/Video/media/qli-video-technology/Video-Verify-workflow.svg?fit=max&auto=format&n=h7j64QujhJHkLxyj&q=85&s=bdb9e14090065dd146bedca947a254b2" alt="Figure: Workflow to verify the VPU driver" width="806" height="110" data-path="Technologies/Video/media/qli-video-technology/Video-Verify-workflow.svg" />

  <p className="text-sm text-gray-700">
    **Figure: Workflow to verify the VPU driver**
  </p>
</div>

The workflow diagram outlines the sequential steps involved in initializing and validating the VPU driver:

1. Boot up the driver to begin the startup process and initialize the VPU driver.
2. Verify if the VPU driver is successfully loaded into the video system.
3. Verify if the video decoding and encoding tasks are appropriately handled by the VPU.
4. Run use cases to validate the VPU functionality.

## **Verify if VPU driver is loaded on qcom-multimedia-proprietary-image**

The kernel image loads the VPU driver. You can use the `lsmod` or `udevadm` commands to check if the VPU driver loads successfully on `qcom-multimedia-proprietary-image`.

### **Verify using the lsmod command**

1. Run the `lsmod` command on the device shell:
   ```text theme={null}
   lsmod | grep -i "iris_vpu"
   ```
2. To verify that the VPU driver is loaded successfully, review the sample output and ensure that an entry for `iris_vpu` is available under the Module column:
   ```text theme={null}
   Module    Size    Used by
   iris_vpu   585728    0
   ```

### **Verify using the udevadm command**

1. Run the `udevadm` command on the device shell:
   ```text theme={null}
   udevadm info -n /dev/video*
   ```
2. To verify that the VPU is loaded successfully, review that the following sample output shows `msm_vidc_decoder` and `msm_vidc_encoder` against the `ID_V4L_PRODUCT` tag:
   ```text theme={null}
   P: /devices/platform/soc@0/aa00000.video-codec/video4linux/video32
   M: video32
   R: 32
   U: video4linux
   D: c 81:0
   N: video32
   L: 0
   S: v4l/by-path/platform-aa00000.video-codec-video-index0
   E: DEVPATH=/devices/platform/soc@0/aa00000.video-codec/video4linux/video32
   E: DEVNAME=/dev/video32
   E: MAJOR=81
   E: MINOR=0
   E: SUBSYSTEM=video4linux
   E: USEC_INITIALIZED=3749470
   E: ID_V4L_VERSION=2
   E: ID_V4L_PRODUCT=msm_vidc_decoder
   E: ID_V4L_CAPABILITIES=:
   E: ID_PATH=platform-aa00000.video-codec
   E: ID_PATH_TAG=platform-aa00000_video-codec
   E: ID_FOR_SEAT=video4linux-platform-aa00000_video-codec
   E: DEVLINKS=/dev/v4l/by-path/platform-aa00000.video-codec-video-index0
   E: TAGS=:seat:uaccess:
   E: CURRENT_TAGS=:seat:uaccess:
   |
   P: /devices/platform/soc@0/aa00000.video-codec/video4linux/video33
   M: video33
   R: 33
   U: video4linux
   D: c 81:1
   N: video33
   L: 0
   S: v4l/by-path/platform-aa00000.video-codec-video-index1
   E: DEVPATH=/devices/platform/soc@0/aa00000.video-codec/video4linux/video33
   E: DEVNAME=/dev/video33
   E: MAJOR=81
   E: MINOR=1
   E: SUBSYSTEM=video4linux
   E: USEC_INITIALIZED=3749498
   E: ID_V4L_VERSION=2
   E: ID_V4L_PRODUCT=msm_vidc_encoder
   E: ID_V4L_CAPABILITIES=:
   E: ID_PATH=platform-aa00000.video-codec
   E: ID_PATH_TAG=platform-aa00000_video-codec
   E: ID_FOR_SEAT=video4linux-platform-aa00000_video-codec
   E: DEVLINKS=/dev/v4l/by-path/platform-aa00000.video-codec-video-index1
   E: TAGS=:seat:uaccess:
   E: CURRENT_TAGS=:seat:uaccess:
   ```

<div style={{ borderLeft: '4px solid #3B5BDB', backgroundColor: '#EEF2FF', padding: '12px 16px', borderRadius: '4px', marginTop: '12px', marginBottom: '16px' }}>
  <p style={{ margin: '0 0 6px 0', fontWeight: 'bold', color: '#1E3A8A' }}>Note:</p>
  <p style={{ margin: 0 }}>To identify the device nodes, check the <code>DEVNAME</code> tag. In the earlier example, <code>/dev/video32</code> corresponds to the VPU decoder node and <code>/dev/video33</code> corresponds to the VPU encoder node.</p>
</div>

## **Verify if VPU driver is loaded on qcom-multimedia-image**

The kernel image loads the VPU driver. You can use the `lsmod` and `udevadm` commands to check if the VPU driver loads successfully on `qcom-multimedia-image`.

### **Verify using the lsmod command**

1. Run the following `lsmod` command on the device shell for Dragonwing IQ-8275, Dragonwing IQ-9075, QCS6490:
   ```text theme={null}
   lsmod | grep -i "qcom_iris"
   ```
2. To verify that the VPU driver is loaded successfully, review the sample output and ensure that an entry for `qcom_iris` is available under the Module column:
   ```text theme={null}
   Module    Size    Used by
   qcom_iris   585728    0
   ```
3. Run the following `lsmod` command on the device shell for QCS615:
   ```text theme={null}
   lsmod | grep -i "venus"
   ```
4. To verify that the VPU driver is loaded successfully, review the sample output and ensure that an entry for `venus` is available under the Module column:
   ```text theme={null}
   Module    Size    Used by
   venus_enc   28672    0
   venus_dec   28672    0
   ```

### **Verify using the udevadm command**

1. Run the `udevadm` command on the device shell:
   ```text theme={null}
   udevadm info -a -n /dev/video*
   ```
   <div style={{ borderLeft: '4px solid #3B5BDB', backgroundColor: '#EEF2FF', padding: '12px 16px', borderRadius: '4px', marginTop: '12px', marginBottom: '12px' }}>
     <p style={{ margin: '0 0 6px 0', fontWeight: 'bold', color: '#1E3A8A' }}>Note:</p>
     <p style={{ margin: 0 }}>Run the <code>udevadm info -a -n /dev/video\<0 to 27></code> command on all available video nodes.</p>
   </div>
2. To verify that the VPU is loaded successfully for Dragonwing IQ-8275/Dragonwing IQ-9075/ QCS6490, review that the sample output shows `qcom-iris-decoder` and `qcom-iris-encoder` against available video devices:
   > ```text theme={null}
   > '/devices/platform/soc@0/aa00000.video-codec/video4linux/video0':
   > KERNEL=="video0"
   > SUBSYSTEM=="video4linux"
   > DRIVER==""
   > ATTR{dev_debug}=="0"
   > ATTR{index}=="0"
   > ATTR{name}=="qcom-iris-decoder"
   > ATTR{power/control}=="auto"
   > ATTR{power/runtime_active_time}=="0"
   > ATTR{power/runtime_status}=="unsupported"
   > ATTR{power/runtime_suspended_time}=="0"
   > ```
3. To verify that the VPU is loaded successfully for QCS615, review that the sample output shows `qcom-venus-decoder` and `qcom-venus-encoder` against available video devices:
   > ```text theme={null}
   > '/devices/platform/soc@0/aa00000.video-codec/video4linux/video0':
   > KERNEL=="video0"
   > SUBSYSTEM=="video4linux"
   > DRIVER==""
   > ATTR{dev_debug}=="0"
   > ATTR{index}=="0"
   > ATTR{name}=="qcom-venus-decoder"
   > ATTR{power/control}=="auto"
   > ATTR{power/runtime_active_time}=="0"
   > ATTR{power/runtime_status}=="unsupported"
   > ATTR{power/runtime_suspended_time}=="0"
   > ```

## **Verify if decoding and encoding are offloaded on qcom-multimedia-proprietary-image**

To confirm if video decoding or encoding is successfully offloaded to the VPU:

1. Run the following command in a loop:

> ```text theme={null}
> cat /proc/interrupts | grep "msm-vidc"
> ```
>
> Sample output:
>
> ```text theme={null}
> 253: 4        0        0        0        0        0        0        0     GICv3 206 Level  msm-vidc
> ```

2. Verify that the interrupt count from `msm-vidc` increases on any CPU while the decoding or encoding use case is running.

## **Verify if decoding/encoding is offloaded on qcom-multimedia-image**

To confirm if the video decoding or encoding is successfully offloaded to the VPU:

1. Run the following command in a loop for Dragonwing IQ-8275/Dragonwing IQ-9075/QCS6490:

> ```text theme={null}
> cat /proc/interrupts | grep "iris"
> ```
>
> Sample output:
>
> ```text theme={null}
> 253: 4        0        0        0        0        0        0        0     GICv3 206 Level  iris
> ```

2. Verify that the interrupt count from `iris` increases on any CPU while the decoding or encoding use case is running.
3. Run the following command in a loop for QCS615:

> ```text theme={null}
> cat /proc/interrupts | grep "venus"
> ```
>
> Sample output:
>
> ```text theme={null}
> 253: 4        0        0        0        0        0        0        0     GICv3 206 Level  venus
> ```

4. Verify that the interrupt count from `venus` increases on any CPU while the decoding or encoding use case is running.

## **Debug video**

If you face an issue while running a video decode or encode use case, debugging can help identify the root cause.

### **Debug the VPU driver**

This section provides the commands to use, debug log levels, and log value information that helps in debugging the VPU driver and firmware.

The following workflow diagram shows the sequence to debug the VPU driver and firmware:

<div className="flex flex-col items-center gap-2">
  <img src="https://mintcdn.com/qualcomm-prod/h7j64QujhJHkLxyj/Technologies/Video/media/qli-video-technology/Debug-vpu-workflow.svg?fit=max&auto=format&n=h7j64QujhJHkLxyj&q=85&s=e296e6974d3f9f02c7b517c099e4914a" alt="Figure: Debug VPU workflow" width="1100" height="191" data-path="Technologies/Video/media/qli-video-technology/Debug-vpu-workflow.svg" />

  <p className="text-sm text-gray-700">
    Figure: Debug VPU workflow
  </p>
</div>

This workflow outlines the procedure to capture debug logs from the VPU:

1. Mount the debug file system to start the debug process.
2. Choose the preferred log level.
3. Configure the log levels for the VPU driver and/or the firmware as needed.
4. Apply the chosen log level using the `debugfs` node.
5. Start capturing logs for both the VPU driver and the firmware.

Follow the steps to debug the VPU driver and firmware:

1. Mount the `debugfs` node using the following command:
   ```text theme={null}
   mount -t debugfs none /sys/kernel/debug/
   ```
2. Choose the VPU driver debug log level and debug log value as listed in the following table. You can also select multiple debug log levels by using the bitmask of debug log values.

<div
  style={{
border: '2px solid #0050D8',
borderRadius: '16px',
padding: '24px',
marginTop: '25px',
backgroundColor: '#FFFFFF',
boxShadow: '0 0 25px rgba(0, 80, 216, 0.15)'
}}
>
  <div
    style={{
  borderRadius: '12px',
  overflow: 'hidden',
  border: '2px solid #0050D8',
  width: '100%'
}}
  >
    <div
      style={{
    background: 'linear-gradient(90deg, #0050D8 0%, #0037A5 100%)',
    color: 'white',
    padding: '14px',
    textAlign: 'center',
    fontWeight: 'bold'
  }}
    >
      Table: VPU driver debug log levels and values
    </div>

    <div style={{ width: '100%', display: 'block' }}>
      <table
        style={{
      display: 'table',
      width: '100%',
      minWidth: '100%',
      maxWidth: '100%',
      borderCollapse: 'collapse',
      backgroundColor: 'white',
      tableLayout: 'fixed',
      boxSizing: 'border-box'
    }}
      >
        <colgroup>
          <col style={{ width: '50%' }} />

          <col style={{ width: '50%' }} />
        </colgroup>

        <thead>
          <tr style={{ backgroundColor: '#F8FAFC' }}>
            <th
              style={{
            border: '1px solid #E5E7EB',
            padding: '16px',
            textAlign: 'center',
            fontWeight: 'bold',
            color: '#111827',
            verticalAlign: 'top',
            boxSizing: 'border-box'
          }}
            >
              Debug log level
            </th>

            <th
              style={{
            border: '1px solid #E5E7EB',
            padding: '16px',
            textAlign: 'center',
            fontWeight: 'bold',
            color: '#111827',
            verticalAlign: 'top',
            boxSizing: 'border-box'
          }}
            >
              Debug log value
            </th>
          </tr>
        </thead>

        <tbody>
          <tr>
            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                VIDC\_ERR
              </span>
            </td>

            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                0x00000001
              </span>
            </td>
          </tr>

          <tr>
            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                VIDC\_HIGH
              </span>
            </td>

            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                0x00000002
              </span>
            </td>
          </tr>

          <tr>
            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                VIDC\_LOW
              </span>
            </td>

            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                0x00000004
              </span>
            </td>
          </tr>

          <tr>
            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                VIDC\_PERF
              </span>
            </td>

            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                0x00000008
              </span>
            </td>
          </tr>

          <tr>
            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                VIDC\_PKT
              </span>
            </td>

            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                0x00000010
              </span>
            </td>
          </tr>

          <tr>
            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                VIDC\_BUS
              </span>
            </td>

            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                0x00000020
              </span>
            </td>
          </tr>

          <tr>
            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                VIDC\_STAT
              </span>
            </td>

            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                0x00000040
              </span>
            </td>
          </tr>

          <tr>
            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                VIDC\_ENCODER
              </span>
            </td>

            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                0x00000100
              </span>
            </td>
          </tr>

          <tr>
            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                VIDC\_DECODER
              </span>
            </td>

            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                0x00000200
              </span>
            </td>
          </tr>

          <tr>
            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                VIDC\_PRINTK
              </span>
            </td>

            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                0x10000000
              </span>
            </td>
          </tr>

          <tr>
            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                VIDC\_FTRACE
              </span>
            </td>

            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                0x20000000
              </span>
            </td>
          </tr>
        </tbody>
      </table>
    </div>
  </div>

  <div><br /> **Note:** The VPU driver sets the default debug level to `VIDC_ERR` and limits debug logs to error scenarios. </div>
</div>

3. Set the VPU driver debug log value to the `/sys/module/iris_vpu/parameters/msm_vidc_debug` node. The sample command to activate all message levels:
   ```text theme={null}
   echo 0x1000037F > /sys/module/iris_vpu/parameters/msm_vidc_debug
   ```
4. Choose the VPU firmware debug log level and debug log value as listed in the following table. You can also select many debug log levels by using the bitmask of debug log values.

<div
  style={{
border: '2px solid #0050D8',
borderRadius: '16px',
padding: '24px',
marginTop: '25px',
backgroundColor: '#FFFFFF',
boxShadow: '0 0 25px rgba(0, 80, 216, 0.15)'
}}
>
  <div
    style={{
  borderRadius: '12px',
  overflow: 'hidden',
  border: '2px solid #0050D8',
  width: '100%'
}}
  >
    <div
      style={{
    background: 'linear-gradient(90deg, #0050D8 0%, #0037A5 100%)',
    color: 'white',
    padding: '14px',
    textAlign: 'center',
    fontWeight: 'bold'
  }}
    >
      Table: VPU firmware debug log levels and values
    </div>

    <div style={{ width: '100%', display: 'block' }}>
      <table
        style={{
      display: 'table',
      width: '100%',
      minWidth: '100%',
      maxWidth: '100%',
      borderCollapse: 'collapse',
      backgroundColor: 'white',
      tableLayout: 'fixed',
      boxSizing: 'border-box'
    }}
      >
        <colgroup>
          <col style={{ width: '55%' }} />

          <col style={{ width: '45%' }} />
        </colgroup>

        <thead>
          <tr style={{ backgroundColor: '#F8FAFC' }}>
            <th
              style={{
            border: '1px solid #E5E7EB',
            padding: '16px',
            textAlign: 'center',
            fontWeight: 'bold',
            color: '#111827',
            verticalAlign: 'top',
            boxSizing: 'border-box'
          }}
            >
              Debug log level
            </th>

            <th
              style={{
            border: '1px solid #E5E7EB',
            padding: '16px',
            textAlign: 'center',
            fontWeight: 'bold',
            color: '#111827',
            verticalAlign: 'top',
            boxSizing: 'border-box'
          }}
            >
              Debug log value
            </th>
          </tr>
        </thead>

        <tbody>
          <tr>
            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                FW\_LOW
              </span>
            </td>

            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                0x00000001
              </span>
            </td>
          </tr>

          <tr>
            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                FW\_MED
              </span>
            </td>

            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                0x00000002
              </span>
            </td>
          </tr>

          <tr>
            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                FW\_HIGH
              </span>
            </td>

            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                0x00000004
              </span>
            </td>
          </tr>

          <tr>
            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                FW\_ERROR
              </span>
            </td>

            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                0x00000008
              </span>
            </td>
          </tr>

          <tr>
            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                FW\_FATAL
              </span>
            </td>

            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                0x00000010
              </span>
            </td>
          </tr>

          <tr>
            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                FW\_PERF
              </span>
            </td>

            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                0x00000020
              </span>
            </td>
          </tr>

          <tr>
            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                FW\_CACHE\_LOW
              </span>
            </td>

            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                0x00000100
              </span>
            </td>
          </tr>

          <tr>
            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                FW\_CACHE\_MED
              </span>
            </td>

            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                0x00000200
              </span>
            </td>
          </tr>

          <tr>
            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                FW\_CACHE\_HIGH
              </span>
            </td>

            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                0x00000400
              </span>
            </td>
          </tr>

          <tr>
            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                FW\_CACHE\_ERROR
              </span>
            </td>

            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                0x00000800
              </span>
            </td>
          </tr>

          <tr>
            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                FW\_CACHE\_FATAL
              </span>
            </td>

            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                0x00001000
              </span>
            </td>
          </tr>

          <tr>
            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                FW\_CACHE\_PERF
              </span>
            </td>

            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                0x00002000
              </span>
            </td>
          </tr>

          <tr>
            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                FW\_PRINTK
              </span>
            </td>

            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                0x10000000
              </span>
            </td>
          </tr>

          <tr>
            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                FW\_FTRACE
              </span>
            </td>

            <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', verticalAlign: 'top', boxSizing: 'border-box' }}>
              <span style={{ fontFamily: 'monospace', fontSize: '13px', backgroundColor: '#F3F4F6', padding: '4px 8px', borderRadius: '6px', color: '#111827', display: 'inline-block' }}>
                0x20000000
              </span>
            </td>
          </tr>
        </tbody>
      </table>
    </div>
  </div>

  <div><br />**Note:** The VPU firmware debug logs are limited to error and fatal scenarios, and the default debug level is set to \`FW\_ERROR | FW\_FATAL\`. </div>
</div>

5. Set the VPU firmware debug log value to the `/sys/module/iris_vpu/parameters/msm_fw_debug` node. Sample command to activate all message levels:
   ```text theme={null}
   echo 0x1000037F > /sys/module/iris_vpu/parameters/msm_fw_debug
   ```
6. Start capturing kernel messages for both the VPU driver and the firmware using the following command in device shell and run the use case:
   ```text theme={null}
   cat /proc/kmsg or dmesg -w
   ```

<div style={{ borderLeft: '4px solid #3B5BDB', backgroundColor: '#EEF2FF', padding: '12px 16px', borderRadius: '4px', marginTop: '12px', marginBottom: '16px' }}>
  <p style={{ margin: '0 0 6px 0', fontWeight: 'bold', color: '#1E3A8A' }}>Note:</p>

  <ul style={{ margin: 0, paddingLeft: '20px' }}>
    <li>The debug video instructions provided in this section are applicable only to <code>qcom-multimedia-prop-image</code>.</li>
    <li>No debug logs are available in the <code>qcom-multimedia-image</code> of the Adreno VPU driver.</li>
    <li>To debug the Adreno video driver on <code>qcom-multimedia-image</code>, add <code>dev\_err</code> logs in the driver source and build the <code>qcom-multimedia-image</code>.</li>
    <li>For more information, see <a href="https://dragonwingdocs.qualcomm.com/Technologies/Video/build-video-source-components#vpu-driver-build-instructions-qcom-multimedia-image" style={{ color: '#1D4ED8', textDecoration: 'none' }}>VPU driver build instructions for qcom-multimedia-image</a>.</li>
  </ul>
</div>

### **Debug the GStreamer plugins**

Qualcomm GStreamer video plugins are compliant with the standard GStreamer framework. For information on the debugging these GStreamer plugins, see [Debugging tools](https://gstreamer.freedesktop.org/documentation/tutorials/basic/debugging-tools.html).
