v4l2-ctl exposure-auto setting fails
I am trying to tune a C920 webcam for picture quality using v4l2-ctl
utility on Ubuntu PC. I am unable to set exposure_auto to 'Auto' mode, but I am able to set it to 'Manual Mode' or in 'Aperture Priority Mode'. Any clues?
*lenovo@ubuntu:~$ v4l2-ctl -d /dev/video1 -c exposure_auto=0
VIDIOC_S_CTRL: failed: Input/output error
exposure_auto: Input/output error*
Following are the settings dump of C920 connected to my ubuntu:
- brightness (int) : min=0 max=255 step=1 default=128 value=128
- contrast (int) : min=0 max=255 step=1 default=128 value=128
- saturation (int) : min=0 max=255 step=1 default=128 value=128
- white_balance_temperature_auto (bool) : default=1 value=1
- gain (int) : min=0 max=255 step=1 default=0 value=0
- power_line_frequency (menu) : min=0 max=2 default=2 value=2
- white_balance_temperature (int) : min=2000 max=6500 step=1 default=4000 value=4000
- sharpness (int) : min=0 max=255 step=1 default=128 value=128
- backlight_compensation (int) : min=0 max=1 step=1 default=0 value=0
- exposure_auto (menu) : min=0 max=3 default=3 value=3 (0: Auto Mode 1: Manual Mode
2: Shutter Priority Mode
3: Aperture Priority Mode)
- exposure_absolute (int) : min=3 max=2047 step=1 default=250 value=250
- exposure_auto_priority (bool) : default=0 value=1
- focus_absolute (int) : min=0 max=250 step=5 default=0 value=0
- focus_auto (bool) : default=1 value=1
- zoom_absolute (int) : min=100 max=500 step=1 default=100 value=100
Solution 1:
That usually happens when you try to manually set a setting which is currently controlled by some other automatic. Try toggling ''exposure_auto_priority'' to see if that looses the grip of the auto algorithm on that particular setting.
For me, for example, setting ''white_balance_temperature_auto'' to 0 allowed me to manually set ''white_balance_temperature'' which resulted in "failed: Input/output error" before.
Solution 2:
Using
v4l2-ctl -d /dev/video1 -c exposure_auto=1
instead of exposure_auto = 0
, you can set exposure to manual then set exposure_absolute
to change the value.