# Error using V4l2 API's VIDIOC\_G\_CTRL

**URL:** <https://forums.developer.nvidia.com/t/error-using-v4l2-apis-vidioc-g-ctrl/272283>\
**Category:** Jetson Xavier NX\
**Tags:** camera, cuda\
**Created:** [November 9, 2023, 7:12am UTC](https://forums.developer.nvidia.com/t/error-using-v4l2-apis-vidioc-g-ctrl/272283 "2023-11-09T07:12:20Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![shree24](https://developer.download.nvidia.com/images/forums/profile-default-devtalk-84.png) [@shree24](https://forums.developer.nvidia.com/u/shree24)\
**Post date:** [November 9, 2023, 7:12am UTC](https://forums.developer.nvidia.com/t/error-using-v4l2-apis-vidioc-g-ctrl/272283/1 "2023-11-09T07:12:20Z")

</div>

Hi Team,

I have written v4l2 driver for AP1302. I am able to control V4l2 parameters with cmds.

**v4l2-ctl -d /dev/v4l-subdev4 -L**  
 →   
User Controls

```
                 brightness 0x00980900 (int) : min=0 max=65535 step=256 default=0 value=0
                   contrast 0x00980901 (int) : min=0 max=65535 step=256 default=0 value=0
                 saturation 0x00980902 (int) : min=0 max=65535 step=256 default=4096 value=4096
         white_balance_mode 0x0098090c (menu) : min=0 max=1 default=1 value=1
			0: Manual Temp Mode
			1: Auto Mode
                      gamma 0x00980910 (int) : min=0 max=65535 step=256 default=0 value=0
                   exposure 0x00980911 (int) : min=0 max=1000000 step=1 default=10000 value=10000
                       gain 0x00980913 (int) : min=0 max=65535 step=256 default=256 value=256
                      hflip 0x00980914 (bool) : default=0 value=0
                      vflip 0x00980915 (bool) : default=0 value=0
  white_balance_temperature 0x0098091a (int) : min=2300 max=15000 step=1 default=5000 value=5000
                  sharpness 0x0098091b (int) : min=0 max=65535 step=256 default=0 value=0
     backlight_compensation 0x0098091c (int) : min=0 max=65535 step=256 default=256 value=256
             special_effect 0x0098091f (menu) : min=0 max=4 default=0 value=0
			0: Normal Mode
			1: Black and White Mode
			2: Grayscale Mode
			3: Negative Mode
			4: Sketch Mode

```

Camera Controls

```
              exposure_mode 0x009a0901 (menu) : min=0 max=1 default=1 value=1
			0: Manual Mode
			1: Auto Mode
                 pan_target 0x009a0908 (int) : min=0 max=256 step=1 default=128 value=128
                tilt_target 0x009a0909 (int) : min=0 max=256 step=1 default=128 value=128
                zoom_target 0x009a090d (int) : min=256 max=2048 step=1 default=256 value=256
                 scene_mode 0x009a091a (menu) : min=0 max=13 default=0 value=0
			0: None
			1: Backlight
			2: Beach/Snow
			3: Candle Light
			6: Fireworks
			7: Landscape
			8: Night
			9: Party/Indoor
			10: Portrait
			11: Sports
			12: Sunset
			13: Text
                 group_hold 0x009a2003 (bool) : default=0 value=0 flags=execute-on-write
                sensor_mode 0x009a2008 (int64) : min=0 max=4 step=1 default=0 value=0 flags=slider
                 frame_rate 0x009a200b (int64) : min=2000000 max=30000000 step=1 default=30000000 value=2000000 flags=slider

```

I am able to change it cmd but with API it is giving me error 22.  
I am using sample API /usr/src/jetson\_multimedia\_api/samples/12\_v4l2\_camera\_cuda/camera\_v4l2\_cuda.cpp and added following function.

static bool  
control\_v4l2(context\_t\*ctx)  
{  
struct v4l2\_ext\_controls ctrls;  
struct v4l2\_ext\_control ctrl;  
ctrls.ctrl\_class = V4L2\_CTRL\_ID2CLASS(V4L2\_CID\_GAIN);  
ctrls.count = 1;  
ctrls.controls = &ctrl;

```
memset(&ctrl, 0, sizeof(ctrl));
ctrl.id = V4L2_CID_GAIN;

if (ioctl(ctx->cam_fd, VIDIOC_G_EXT_CTRLS, &ctrls) < 0)
     ERROR_RETURN("Failed to dequeue camera buff: %s (%d)",
     strerror(errno), errno);

```

return 1;  
}

But after this I am getting **ERROR: control\_v4l2(): (line:576) Failed to dequeue camera buff: Invalid argument (22)**

I have taken reference of topic [Failed to configure sensor\_mode by using v4l2 API](https://forums.developer.nvidia.com/t/failed-to-configure-sensor-mode-by-using-v4l2-api/141839)

Thank you,

---

<div class="post-metadata">

**Author:** ![MarkusHoHo](https://sea2.discourse-cdn.com/nvidia/user_avatar/forums.developer.nvidia.com/markushoho/32/233145_2.png) [@MarkusHoHo](https://forums.developer.nvidia.com/u/MarkusHoHo)\
**Post date:** [November 14, 2023, 12:19pm UTC](https://forums.developer.nvidia.com/t/error-using-v4l2-apis-vidioc-g-ctrl/272283/2 "2023-11-14T12:19:17Z")

</div>

Hi @shree24,

sorry for the delay in answering. I think your question might better be suited for the Jetson categories in our forums.

I hope you don’t mind me moving the post.

Thanks!

---

<div class="post-metadata">

**Author:** ![shree24](https://developer.download.nvidia.com/images/forums/profile-default-devtalk-84.png) [@shree24](https://forums.developer.nvidia.com/u/shree24)\
**Post date:** [November 20, 2023, 4:16am UTC](https://forums.developer.nvidia.com/t/error-using-v4l2-apis-vidioc-g-ctrl/272283/3 "2023-11-20T04:16:02Z")

</div>

Hi @MarkusHoHo ,

I don’t mind if you move this post to another category but I didn’t get any reply even after a week. So what should I do according to you.

Thank you

---

<div class="post-metadata">

**Author:** ![shree24](https://developer.download.nvidia.com/images/forums/profile-default-devtalk-84.png) [@shree24](https://forums.developer.nvidia.com/u/shree24)\
**Post date:** [November 27, 2023, 4:22am UTC](https://forums.developer.nvidia.com/t/error-using-v4l2-apis-vidioc-g-ctrl/272283/4 "2023-11-27T04:22:34Z")

</div>

Hey No reply from 2 weeks

---

<div class="post-metadata">

**Author:** ![kayccc](https://sea2.discourse-cdn.com/nvidia/user_avatar/forums.developer.nvidia.com/kayccc/32/14043_2.png) [@kayccc](https://forums.developer.nvidia.com/u/kayccc)\
**Post date:** [December 6, 2023, 3:31am UTC](https://forums.developer.nvidia.com/t/error-using-v4l2-apis-vidioc-g-ctrl/272283/6 "2023-12-06T03:31:03Z")

</div>

Sorry for the late response.  
Is this still an issue to support? Any result can be shared?

---

<div class="post-metadata">

**Author:** ![JerryChang](https://sea2.discourse-cdn.com/nvidia/user_avatar/forums.developer.nvidia.com/jerrychang/32/14043_2.png) [@JerryChang](https://forums.developer.nvidia.com/u/JerryChang)\
**Post date:** [December 6, 2023, 6:30am UTC](https://forums.developer.nvidia.com/t/error-using-v4l2-apis-vidioc-g-ctrl/272283/7 "2023-12-06T06:30:54Z")

</div>

please also examine your driver by [v4l2-compliance test](https://docs.nvidia.com/jetson/archives/r35.4.1/DeveloperGuide/text/SD/CameraDevelopment/SensorSoftwareDriverProgramming.html#to-run-a-v4l2-compliance-test).

---

<div class="post-metadata">

**Author:** ![shree24](https://developer.download.nvidia.com/images/forums/profile-default-devtalk-84.png) [@shree24](https://forums.developer.nvidia.com/u/shree24)\
**Post date:** [December 22, 2023, 6:46am UTC](https://forums.developer.nvidia.com/t/error-using-v4l2-apis-vidioc-g-ctrl/272283/9 "2023-12-22T06:46:27Z")

</div>

v4l2-compliance  
v4l2-compliance SHA: not available, 64 bits

Compliance test for tegra-video device /dev/video0:

Driver Info:  
Driver name : tegra-video  
Card type : vi-output, tevi-ap1302 12-003d  
Bus info : platform:tegra-capture-vi:0  
Driver version : 5.10.120  
Capabilities : 0x84200001  
Video Capture  
Streaming  
Extended Pix Format  
Device Capabilities  
Device Caps : 0x04200001  
Video Capture  
Streaming  
Extended Pix Format  
Media Driver Info:  
Driver name : tegra-camrtc-ca  
Model : NVIDIA Tegra Video Input Device  
Serial :  
Bus info :  
Media version : 5.10.120  
Hardware revision: 0x00000003 (3)  
Driver version : 5.10.120  
Interface Info:  
ID : 0x03000011  
Type : V4L Video  
Entity Info:  
ID : 0x0000000f (15)  
Name : vi-output, tevi-ap1302 12-003d  
Function : V4L2 I/O  
Pad 0x01000010 : 0: Sink  
Link 0x02000015: from remote pad 0x100000c of entity ‘13e10000.host1x:nvcsi@15a00000-’: Data, Enabled

Required ioctls:  
test MC information (see ‘Media Driver Info’ above): OK  
test VIDIOC\_QUERYCAP: OK

Allow for multiple opens:  
test second /dev/video0 open: OK  
test VIDIOC\_QUERYCAP: OK  
test VIDIOC\_G/S\_PRIORITY: OK  
test for unlimited opens: OK

Debug ioctls:  
test VIDIOC\_DBG\_G/S\_REGISTER: OK (Not Supported)  
test VIDIOC\_LOG\_STATUS: OK

Input ioctls:  
test VIDIOC\_G/S\_TUNER/ENUM\_FREQ\_BANDS: OK (Not Supported)  
test VIDIOC\_G/S\_FREQUENCY: OK (Not Supported)  
test VIDIOC\_S\_HW\_FREQ\_SEEK: OK (Not Supported)  
test VIDIOC\_ENUMAUDIO: OK (Not Supported)  
test VIDIOC\_G/S/ENUMINPUT: OK  
test VIDIOC\_G/S\_AUDIO: OK (Not Supported)  
Inputs: 1 Audio Inputs: 0 Tuners: 0

Output ioctls:  
test VIDIOC\_G/S\_MODULATOR: OK (Not Supported)  
test VIDIOC\_G/S\_FREQUENCY: OK (Not Supported)  
test VIDIOC\_ENUMAUDOUT: OK (Not Supported)  
test VIDIOC\_G/S/ENUMOUTPUT: OK (Not Supported)  
test VIDIOC\_G/S\_AUDOUT: OK (Not Supported)  
Outputs: 0 Audio Outputs: 0 Modulators: 0

Input/Output configuration ioctls:  
test VIDIOC\_ENUM/G/S/QUERY\_STD: OK (Not Supported)  
test VIDIOC\_ENUM/G/S/QUERY\_DV\_TIMINGS: OK (Not Supported)  
test VIDIOC\_DV\_TIMINGS\_CAP: OK (Not Supported)  
test VIDIOC\_G/S\_EDID: OK (Not Supported)

Control ioctls (Input 0):  
test VIDIOC\_QUERY\_EXT\_CTRL/QUERYMENU: OK  
test VIDIOC\_QUERYCTRL: OK  
test VIDIOC\_G/S\_CTRL: OK  
test VIDIOC\_G/S/TRY\_EXT\_CTRLS: OK  
test VIDIOC\_(UN)SUBSCRIBE\_EVENT/DQEVENT: OK  
test VIDIOC\_G/S\_JPEGCOMP: OK (Not Supported)  
Standard Controls: 1 Private Controls: 18

Format ioctls (Input 0):  
fail: v4l2-test-formats.cpp(280): duplicate format 59565955 (UYVY)  
test VIDIOC\_ENUM\_FMT/FRAMESIZES/FRAMEINTERVALS: FAIL  
fail: v4l2-test-formats.cpp(1280): ret && node-\>has\_frmintervals  
test VIDIOC\_G/S\_PARM: FAIL  
test VIDIOC\_G\_FBUF: OK (Not Supported)  
test VIDIOC\_G\_FMT: OK  
test VIDIOC\_TRY\_FMT: OK  
test VIDIOC\_S\_FMT: OK  
test VIDIOC\_G\_SLICED\_VBI\_CAP: OK (Not Supported)  
test Cropping: OK (Not Supported)  
test Composing: OK (Not Supported)  
test Scaling: OK (Not Supported)

Codec ioctls (Input 0):  
test VIDIOC\_(TRY\_)ENCODER\_CMD: OK (Not Supported)  
test VIDIOC\_G\_ENC\_INDEX: OK (Not Supported)  
test VIDIOC\_(TRY\_)DECODER\_CMD: OK (Not Supported)

Buffer ioctls (Input 0):  
fail: v4l2-test-buffers.cpp(715): q.create\_bufs(node, 1, &fmt) != EINVAL  
test VIDIOC\_REQBUFS/CREATE\_BUFS/QUERYBUF: FAIL  
test VIDIOC\_EXPBUF: OK  
test Requests: OK (Not Supported)

Total for tegra-video device /dev/video0: 45, Succeeded: 42, Failed: 3, Warnings: 0

---

<div class="post-metadata">

**Author:** ![JerryChang](https://sea2.discourse-cdn.com/nvidia/user_avatar/forums.developer.nvidia.com/jerrychang/32/14043_2.png) [@JerryChang](https://forums.developer.nvidia.com/u/JerryChang)\
**Post date:** [December 25, 2023, 4:56am UTC](https://forums.developer.nvidia.com/t/error-using-v4l2-apis-vidioc-g-ctrl/272283/10 "2023-12-25T04:56:55Z")

</div>

> [@shree24](#):
>
> test VIDIOC\_G/S\_CTRL: OK  
> test VIDIOC\_G/S/TRY\_EXT\_CTRLS: OK

hello shree24,

it looks sanity test of these controls has passed.  
please examine your implementation, and.. may I know what’s the real use-case for sending gain controls.

---

<div class="post-metadata">

**Author:** ![shree24](https://developer.download.nvidia.com/images/forums/profile-default-devtalk-84.png) [@shree24](https://forums.developer.nvidia.com/u/shree24)\
**Post date:** [December 26, 2023, 5:03am UTC](https://forums.developer.nvidia.com/t/error-using-v4l2-apis-vidioc-g-ctrl/272283/11 "2023-12-26T05:03:26Z")

</div>

I just want to control all the v4l2 control parameters. I am able to set and get all the parameters from cmd line. When I am trying to use it from wrapper there it is not working.

---

<div class="post-metadata">

**Author:** ![system](https://sea2.discourse-cdn.com/nvidia/user_avatar/forums.developer.nvidia.com/system/32/68080_2.png) [@system](https://forums.developer.nvidia.com/u/system)\
**Post date:** [January 9, 2024, 5:03am UTC](https://forums.developer.nvidia.com/t/error-using-v4l2-apis-vidioc-g-ctrl/272283/12 "2024-01-09T05:03:41Z")

</div>

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.
