# Verify and debug

The following workflow outlines the process to verify the function of the VPU driver.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by Microsoft Visio, SVG Export Video-Verify-workflow.svg Page-1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="9.00521in" height="1.76563in" viewbox="0 0 648.375 127.125" xml:space="preserve" color-interpolation-filters="sRGB" class="st7"><v:documentproperties v:langid="1033" v:viewmarkup="false">	<v:userdefs>		<v:ud v:nameu="msvNoAutoConnect" v:val="VT0(1):26"></v:ud>	</v:userdefs></v:documentproperties>
<style>.svg-1 .st1 { fill: #f7f8fa; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st2 { fill: #ffffff; stroke: #3253dc; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2.25 }
.svg-1 .st3 { fill: #000000; font-family: Arial; font-size: 1.00001em }
.svg-1 .st4 { font-size: 1em }
.svg-1 .st5 { marker-end: url("#mrkr5-23"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2.25 }
.svg-1 .st6 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.47169811320755 }
.svg-1 .st7 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<defs id="Markers">	<g id="lend5">		<path d="M 2 1 L 0 0 L 1.98117 -0.993387 C 1.67173 -0.364515 1.67301 0.372641 1.98465 1.00043 " style="stroke:none"></path>	</g>	<marker id="mrkr5-23" class="st6" v:arrowtype="5" v:arrowsize="2" v:setback="3.71" refx="-3.71" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend5" transform="scale(-2.12,-2.12) "></use>	</marker></defs><g v:mid="0" v:index="1" v:groupcontext="foregroundPage">	<title>Page-1</title>	<v:pageproperties v:drawingscale="1" v:pagescale="1" v:drawingunits="19" v:shadowoffsetx="9" v:shadowoffsety="-9"></v:pageproperties>	<v:layer v:name="Connector" v:index="0"></v:layer>	<g id="shape13-1" v:mid="13" v:groupcontext="shape" transform="translate(18,-18)">		<title></title>		<rect x="0" y="36" width="612" height="91.125" class="st1"></rect>	</g>	<g id="shape6-3" v:mid="6" v:groupcontext="shape" transform="translate(495,-39.7895)">		<title></title>		<desc>Run use cases</desc>		<v:userdefs>			<v:ud v:nameu="CTypeTopLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeTopRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CornerLockHoriz" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockVert" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockDiag" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="54" cy="101.645" width="108" height="50.9605"></v:textrect>		<path d="M10.8 127.13 L97.2 127.13 A10.7998 10.7998 -180 0 0 108 116.33 L108 86.96 A10.7998 10.7998 -180 0 0 97.2 76.16					 L10.8 76.16 A10.7998 10.7998 -180 0 0 0 86.96 L0 116.33 A10.7998 10.7998 -180 0 0 10.8 127.13 Z" class="st2"></path>		<text x="14.31" y="105.25" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Run use cases</text>		</g>	<g id="shape7-6" v:mid="7" v:groupcontext="shape" transform="translate(342.375,-39.7895)">		<title></title>		<desc>Verify if decode/encode is offloaded to VPU</desc>		<v:userdefs>			<v:ud v:nameu="CTypeTopLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeTopRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CornerLockHoriz" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockVert" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockDiag" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="54" cy="101.645" width="108" height="50.9605"></v:textrect>		<path d="M10.8 127.13 L97.2 127.13 A10.7998 10.7998 -180 0 0 108 116.33 L108 86.96 A10.7998 10.7998 -180 0 0 97.2 76.16					 L10.8 76.16 A10.7998 10.7998 -180 0 0 0 86.96 L0 116.33 A10.7998 10.7998 -180 0 0 10.8 127.13 Z" class="st2"></path>		<text x="10.98" y="90.84" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Verify if decode/<tspan x="28.32" dy="1.2em" class="st4">encode is </tspan><tspan x="8.64" dy="1.2em" class="st4">offloaded to VPU</tspan></text>		</g>	<g id="shape8-11" v:mid="8" v:groupcontext="shape" transform="translate(189.375,-39.7895)">		<title></title>		<desc>Verify if VPU driver is loaded</desc>		<v:userdefs>			<v:ud v:nameu="CTypeTopLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeTopRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CornerLockHoriz" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockVert" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockDiag" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="54" cy="101.645" width="108" height="50.9605"></v:textrect>		<path d="M10.8 127.13 L97.2 127.13 A10.7998 10.7998 -180 0 0 108 116.33 L108 86.96 A10.7998 10.7998 -180 0 0 97.2 76.16					 L10.8 76.16 A10.7998 10.7998 -180 0 0 0 86.96 L0 116.33 A10.7998 10.7998 -180 0 0 10.8 127.13 Z" class="st2"></path>		<text x="19.99" y="98.04" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Verify if VPU <tspan x="13.31" dy="1.2em" class="st4">driver is loaded</tspan></text>		</g>	<g id="shape9-15" v:mid="9" v:groupcontext="shape" transform="translate(36.375,-39.7895)">		<title></title>		<desc>Boot up the driver</desc>		<v:userdefs>			<v:ud v:nameu="CTypeTopLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeTopRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CornerLockHoriz" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockVert" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockDiag" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="54" cy="101.645" width="108" height="50.9605"></v:textrect>		<path d="M10.8 127.13 L97.2 127.13 A10.7998 10.7998 -180 0 0 108 116.33 L108 86.96 A10.7998 10.7998 -180 0 0 97.2 76.16					 L10.8 76.16 A10.7998 10.7998 -180 0 0 0 86.96 L0 116.33 A10.7998 10.7998 -180 0 0 10.8 127.13 Z" class="st2"></path>		<text x="6.64" y="105.25" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Boot up the driver</text>		</g>	<g id="shape10-18" v:mid="10" v:groupcontext="shape" v:layermember="0" transform="translate(144.375,-56.2697)">		<title></title>		<path d="M0 118.13 L36.65 118.13" class="st5"></path>	</g>	<g id="shape11-24" v:mid="11" v:groupcontext="shape" v:layermember="0" transform="translate(297.375,-56.2697)">		<title></title>		<path d="M0 118.13 L36.65 118.13" class="st5"></path>	</g>	<g id="shape12-29" v:mid="12" v:groupcontext="shape" v:layermember="0" transform="translate(450.375,-56.2697)">		<title></title>		<path d="M0 118.13 L36.28 118.13" class="st5"></path>	</g></g>
</svg>

**Figure : Workflow to verify the VPU driver**

The commands and samples provided here enable you to verify the following:

- VPU driver is successfully loaded
- Decoding/encoding is offloaded to the VPU

## Verify if the VPU driver is successfully loaded

The VPU driver is loaded as part of the kernel image. You can confirm whether the VPU driver is loaded successfully by executing either of the following commands:

### Using lsmod command

1. Run the following `lsmod` command on the device shell:

lsmod | grep -i "iris"
        Copy to clipboard
2. To verify if the VPU driver is successfully loaded, review the sample output and ensure that an entry for `iris_vpu` is available under the Module column:

Module    Size    Used by
        
        iris_vpu   585728    0
        Copy to clipboard

### Using udevadm command

1. Run the following command on the device shell and verify if the output shows `msm_vidc_decoder` and `msm_vidc_encoder` against the `ID_V4L_PRODUCT` tag.

udevadm info -n /dev/video*
        Copy to clipboard
2. To verify whether the VPU is successfully loaded, review the following sample output:

P: [/devices/platform/soc@0/aa00000.video-codec/video4linux/video32](mailto:/devices/platform/soc&#37;&#52;&#48;0/aa00000&#46;video-codec/video4linux/video32)
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](mailto:DEVPATH=/devices/platform/soc&#37;&#52;&#48;0/aa00000&#46;video-codec/video4linux/video32)
E: DEVNAME=/dev/video32
E: MAJOR=81
E: MINOR=26
E: SUBSYSTEM=video4linux
E: USEC\_INITIALIZED=6690806
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
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=27
E: SUBSYSTEM=video4linux
E: USEC\_INITIALIZED=6686892
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:

Note

To identify the device nodes, check for the `DEVNAME` tag. In the earlier example, the `/dev/video32` is for the VPU decoder node and `/dev/video33` is for the VPU encoder node.

## Verify if the decoding/encoding is offloaded to the VPU

You can confirm if the video decoding or encoding is successfully offloaded to the VPU by doing the following:

- Run the following command as a loop:

cat /proc/interrupts | grep "msm-vidc"
        Copy to clipboard
- The following is the sample output that helps you verify whether the video decoding/encoding is offloaded to the VPU. Verify if the interrupt count from `msm-vidc` increases across any CPU when the use case is running:

253: 4     0      0        0        0        0        0        0     GICv3 206 Level  msm-vidc

## Debug

The methods to debug the VPU driver and firmware, and the GStreamer video plugins are provided in the following sections.

### Debug VPU

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by Microsoft Visio, SVG Export Debug-vpu-workflow.svg Page-1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="15.875in" height="4.26042in" viewbox="0 0 1143 306.75" xml:space="preserve" color-interpolation-filters="sRGB" class="st10"><v:documentproperties v:langid="1033" v:viewmarkup="false">	<v:userdefs>		<v:ud v:nameu="msvNoAutoConnect" v:val="VT0(1):26"></v:ud>	</v:userdefs></v:documentproperties>
<style>.svg-2 .st1 { fill: #f7f8fa; stroke: #ffffff; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-2 .st2 { fill: #ffffff; stroke: #3253dc; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2.25 }
.svg-2 .st3 { fill: #000000; font-family: Arial; font-size: 1.00001em }
.svg-2 .st4 { font-size: 1em }
.svg-2 .st5 { marker-end: url("#mrkr5-30"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2.25 }
.svg-2 .st6 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.47169811320755 }
.svg-2 .st7 { marker-end: url("#mrkr5-30"); marker-start: url("#mrkr5-60"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2.25 }
.svg-2 .st8 { stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2.25 }
.svg-2 .st9 { marker-start: url("#mrkr5-60"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2.25 }
.svg-2 .st10 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<defs id="Markers">	<g id="lend5">		<path d="M 2 1 L 0 0 L 1.98117 -0.993387 C 1.67173 -0.364515 1.67301 0.372641 1.98465 1.00043 " style="stroke:none"></path>	</g>	<marker id="mrkr5-30" class="st6" v:arrowtype="5" v:arrowsize="2" v:setback="3.71" refx="-3.71" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend5" transform="scale(-2.12,-2.12) "></use>	</marker>	<marker id="mrkr5-60" class="st6" v:arrowtype="5" v:arrowsize="2" v:setback="3.55" refx="3.55" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend5" transform="scale(2.12) "></use>	</marker></defs><g v:mid="0" v:index="1" v:groupcontext="foregroundPage">	<title>Page-1</title>	<v:pageproperties v:drawingscale="1" v:pagescale="1" v:drawingunits="19" v:shadowoffsetx="9" v:shadowoffsety="-9"></v:pageproperties>	<v:layer v:name="Connector" v:index="0"></v:layer>	<g id="shape35-1" v:mid="35" v:groupcontext="shape" transform="translate(18,-18)">		<title></title>		<rect x="0" y="36" width="1107" height="270.75" class="st1"></rect>	</g>	<g id="shape4-3" v:mid="4" v:groupcontext="shape" transform="translate(935.625,-137.664)">		<title></title>		<desc>Stop capturing logs</desc>		<v:userdefs>			<v:ud v:nameu="CTypeTopLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeTopRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CornerLockHoriz" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockVert" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockDiag" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.1625):1"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.1625):1"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.1625):1"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.1625):1"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="58.5" cy="281.27" width="117" height="50.9605"></v:textrect>		<path d="M11.7 306.75 L105.3 306.75 A11.6998 11.6998 -180 0 0 117 295.05 L117 267.49 A11.6998 11.6998 -180 0 0 105.3					 255.79 L11.7 255.79 A11.6998 11.6998 -180 0 0 -0 267.49 L0 295.05 A11.6998 11.6998 -180 0 0 11.7 306.75					 Z" class="st2"></path>		<text x="7.13" y="284.87" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Stop capturing logs</text>		</g>	<g id="shape5-6" v:mid="5" v:groupcontext="shape" transform="translate(791.625,-137.664)">		<title></title>		<desc>Run the use case</desc>		<v:userdefs>			<v:ud v:nameu="CTypeTopLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeTopRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CornerLockHoriz" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockVert" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockDiag" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="54" cy="281.27" width="108" height="50.9605"></v:textrect>		<path d="M10.8 306.75 L97.2 306.75 A10.7998 10.7998 -180 0 0 108 295.95 L108 266.59 A10.7998 10.7998 -180 0 0 97.2 255.79					 L10.8 255.79 A10.7998 10.7998 -180 0 0 0 266.59 L0 295.95 A10.7998 10.7998 -180 0 0 10.8 306.75 Z" class="st2"></path>		<text x="7.3" y="284.87" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Run the use case</text>		</g>	<g id="shape6-9" v:mid="6" v:groupcontext="shape" transform="translate(638.625,-137.664)">		<title></title>		<desc>Start capturing logs</desc>		<v:userdefs>			<v:ud v:nameu="CTypeTopLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeTopRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CornerLockHoriz" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockVert" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockDiag" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="54" cy="281.27" width="108" height="50.9605"></v:textrect>		<path d="M10.8 306.75 L97.2 306.75 A10.7998 10.7998 -180 0 0 108 295.95 L108 266.59 A10.7998 10.7998 -180 0 0 97.2 255.79					 L10.8 255.79 A10.7998 10.7998 -180 0 0 0 266.59 L0 295.95 A10.7998 10.7998 -180 0 0 10.8 306.75 Z" class="st2"></path>		<text x="14.98" y="277.67" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Start capturing <tspan x="42.99" dy="1.2em" class="st4">logs</tspan></text>		</g>	<g id="shape7-13" v:mid="7" v:groupcontext="shape" transform="translate(495,-137.664)">		<title></title>		<desc>Set the log level using debugfs node</desc>		<v:userdefs>			<v:ud v:nameu="CTypeTopLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeTopRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CornerLockHoriz" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockVert" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockDiag" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="54" cy="281.27" width="108" height="50.9605"></v:textrect>		<path d="M10.8 306.75 L97.2 306.75 A10.7998 10.7998 -180 0 0 108 295.95 L108 266.59 A10.7998 10.7998 -180 0 0 97.2 255.79					 L10.8 255.79 A10.7998 10.7998 -180 0 0 0 266.59 L0 295.95 A10.7998 10.7998 -180 0 0 10.8 306.75 Z" class="st2"></path>		<text x="11.3" y="270.47" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Set the log level <tspan x="16.64" dy="1.2em" class="st4">using debugfs </tspan><tspan x="40.65" dy="1.2em" class="st4">node</tspan></text>		</g>	<g id="shape8-18" v:mid="8" v:groupcontext="shape" transform="translate(180,-136.52)">		<title></title>		<desc>Choose the log level</desc>		<v:userdefs>			<v:ud v:nameu="CTypeTopLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeTopRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CornerLockHoriz" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockVert" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockDiag" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="54" cy="281.27" width="108" height="50.9605"></v:textrect>		<path d="M10.8 306.75 L97.2 306.75 A10.7998 10.7998 -180 0 0 108 295.95 L108 266.59 A10.7998 10.7998 -180 0 0 97.2 255.79					 L10.8 255.79 A10.7998 10.7998 -180 0 0 0 266.59 L0 295.95 A10.7998 10.7998 -180 0 0 10.8 306.75 Z" class="st2"></path>		<text x="13.64" y="277.67" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Choose the log <tspan x="41.66" dy="1.2em" class="st4">level</tspan></text>		</g>	<g id="shape9-22" v:mid="9" v:groupcontext="shape" transform="translate(36.375,-136.52)">		<title></title>		<desc>Mount debugfs</desc>		<v:userdefs>			<v:ud v:nameu="CTypeTopLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeTopRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CornerLockHoriz" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockVert" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockDiag" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="54" cy="281.27" width="108" height="50.9605"></v:textrect>		<path d="M10.8 306.75 L97.2 306.75 A10.7998 10.7998 -180 0 0 108 295.95 L108 266.59 A10.7998 10.7998 -180 0 0 97.2 255.79					 L10.8 255.79 A10.7998 10.7998 -180 0 0 0 266.59 L0 295.95 A10.7998 10.7998 -180 0 0 10.8 306.75 Z" class="st2"></path>		<text x="14.31" y="284.87" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Mount debugfs</text>		</g>	<g id="shape10-25" v:mid="10" v:groupcontext="shape" v:layermember="0" transform="translate(144.375,-153)">		<title></title>		<path d="M0 297.75 L27.28 297.75" class="st5"></path>	</g>	<g id="shape12-31" v:mid="12" v:groupcontext="shape" v:layermember="0" transform="translate(603,-154.145)">		<title></title>		<path d="M0 297.75 L27.28 297.75" class="st5"></path>	</g>	<g id="shape13-36" v:mid="13" v:groupcontext="shape" v:layermember="0" transform="translate(746.625,-154.032)">		<title></title>		<path d="M0 297.75 L36.65 297.75" class="st5"></path>	</g>	<g id="shape14-41" v:mid="14" v:groupcontext="shape" v:layermember="0" transform="translate(899.625,-154.145)">		<title></title>		<path d="M0 297.75 L27.65 297.75" class="st5"></path>	</g>	<g id="shape16-46" v:mid="16" v:groupcontext="shape" transform="translate(342,-183.039)">		<title></title>		<desc>VPU driver debug log level</desc>		<v:userdefs>			<v:ud v:nameu="CTypeTopLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeTopRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CornerLockHoriz" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockVert" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockDiag" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="54" cy="281.27" width="108" height="50.9605"></v:textrect>		<path d="M10.8 306.75 L97.2 306.75 A10.7998 10.7998 -180 0 0 108 295.95 L108 266.59 A10.7998 10.7998 -180 0 0 97.2 255.79					 L10.8 255.79 A10.7998 10.7998 -180 0 0 0 266.59 L0 295.95 A10.7998 10.7998 -180 0 0 10.8 306.75 Z" class="st2"></path>		<text x="6.64" y="277.67" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>VPU driver debug <tspan x="31.99" dy="1.2em" class="st4">log level</tspan></text>		</g>	<g id="shape20-50" v:mid="20" v:groupcontext="shape" transform="translate(342,-91.1447)">		<title></title>		<desc>VPU firmware debug log level</desc>		<v:userdefs>			<v:ud v:nameu="CTypeTopLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeTopRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotLeftSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CTypeBotRightSnip" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="CornerLockHoriz" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockVert" v:prompt="" v:val="VT0(1):5"></v:ud>			<v:ud v:nameu="CornerLockDiag" v:prompt="" v:val="VT0(0):5"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):1"></v:ud>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="TopLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="TopRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotLeftOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>			<v:ud v:nameu="BotRightOffset" v:prompt="" v:val="VT0(0.15):0"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="54" cy="281.27" width="108" height="50.9605"></v:textrect>		<path d="M10.8 306.75 L97.2 306.75 A10.7998 10.7998 -180 0 0 108 295.95 L108 266.59 A10.7998 10.7998 -180 0 0 97.2 255.79					 L10.8 255.79 A10.7998 10.7998 -180 0 0 0 266.59 L0 295.95 A10.7998 10.7998 -180 0 0 10.8 306.75 Z" class="st2"></path>		<text x="16.99" y="277.67" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>VPU firmware <tspan x="13.63" dy="1.2em" class="st4">debug log level</tspan></text>		</g>	<g id="shape27-54" v:mid="27" v:groupcontext="shape" v:layermember="0" transform="translate(333,-116.625)">		<title></title>		<path d="M1.01 306.75 L0.65 306.75 L-4.5 306.75 L-4.5 214.86 L0.65 214.86" class="st7"></path>	</g>	<g id="shape28-62" v:mid="28" v:groupcontext="shape" v:layermember="0" transform="translate(288,-153)">		<title></title>		<path d="M0 297.75 L40.5 297.75" class="st8"></path>	</g>	<g id="shape32-65" v:mid="32" v:groupcontext="shape" v:layermember="0" transform="translate(441,-208.52)">		<title></title>		<path d="M9 306.75 L22.5 306.75 L22.5 398.64 L9 398.64" class="st8"></path>	</g>	<g id="shape33-68" v:mid="33" v:groupcontext="shape" v:layermember="0" transform="translate(495,-171.572)">		<title></title>		<path d="M-7.99 315.18 L-8.35 315.18 L-31.5 315.18 L-31.5 316.32" class="st9"></path>	</g></g>
</svg>

**Figure : Debug VPU workflow**

To debug the VPU driver and VPU firmware, do the following:

1. Mount the `debugfs` node, using the following command:

mount -t debugfs none /sys/kernel/debug/
        Copy to clipboard
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.

    | Debug log level | Debug log value |
    | --- | --- |
    | VIDC\_ERR | 0x00000001 |
    | VIDC\_HIGH | 0x00000002 |
    | VIDC\_LOW | 0x00000004 |
    | VIDC\_PERF | 0x00000008 |
    | VIDC\_PKT | 0x00000010 |
    | VIDC\_BUS | 0x00000020 |
    | VIDC\_STAT | 0x00000040 |
    | VIDC\_ENCODER | 0x00000100 |
    | VIDC\_DECODER | 0x00000200 |
    | VIDC\_PRINTK | 0x10000000 |
    | VIDC\_FTRACE | 0x20000000 |

Note

The VPU driver debug logs are limited to error scenarios, and the default debug level is set to `VIDC_ERR`.
3. Set the VPU driver debug log value to the `/sys/module/iris_vpu/parameters/msm_vidc_debug` node.

    The following is a sample command to enable all message levels:

echo 0x1000037F > /sys/module/iris_vpu/parameters/msm_vidc_debug
        Copy to clipboard
4. Choose the VPU firmware 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.

    | Debug log level | Debug log value |
    | --- | --- |
    | FW\_LOW | 0x00000001 |
    | FW\_MED | 0x00000002 |
    | FW\_HIGH | 0x00000004 |
    | FW\_ERROR | 0x00000008 |
    | FW\_FATAL | 0x00000010 |
    | FW\_PERF | 0x00000020 |
    | FW\_CACHE\_LOW | 0x00000100 |
    | FW\_CACHE\_MED | 0x00000200 |
    | FW\_CACHE\_HIGH | 0x00000400 |
    | FW\_CACHE\_ERROR | 0x00000800 |
    | FW\_CACHE\_FATAL | 0x00001000 |
    | FW\_CACHE\_PERF | 0x00002000 |
    | FW\_PRINTK | 0x10000000 |
    | FW\_FTRACE | 0x20000000 |

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`.
5. Set the VPU firmware debug log value to the `/sys/module/iris_vpu/parameters/msm_fw_debug` node.

    The following is a sample command to enable all message levels:

echo 0x1000037F > /sys/module/iris_vpu/parameters/msm_fw_debug
        Copy to clipboard
6. Start capturing kernel messages for both the VPU driver and the firmware using the following command and run the use case:

cat /proc/kmsg
        Copy to clipboard

### Debug GStreamer plugins

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

Last Published: Dec 30, 2024

[Previous Topic
Software](https://docs.qualcomm.com/bundle/publicresource/80-70017-20/topics/software.md) [Next Topic
Detailed capabilities and feature descriptions](https://docs.qualcomm.com/bundle/publicresource/80-70017-20/topics/feature-descriptions.md)