0

I am using an ELP-USBFHD01M-L21 camera. It claims to have autoexposure support and when I plug it into my Mac it appears to be so. I downloaded a sample application on OS X that someone wrote that uses the USB Video Class commands to enable/disable autoexposure and it seems fine.

On a Debian 8.5 system I am using Python to access v4l2. Here I am setting exposure to manual mode. This value (1) and a value of 3 are accepted:

self._camera = v4l2capture.Video_device(device)

self._frame_size = self._camera.set_format(*requested_frame_size)

# 0: V4L2_EXPOSURE_AUTO
# 1: V4L2_EXPOSURE_MANUAL
# 2: V4L2_EXPOSURE_SHUTTER_PRIORITY
# 3: V4L2_EXPOSURE_APERTURE_PRIORITY

actual = self._camera.set_exposure_auto(1)

If I try to set exposure_auto to zero it fails with:

Traceback (most recent call last):
  File "camera.py", line 207, in <module>
    camera = Camera('/dev/video0')
  File "camera.py", line 45, in __init__
    a = self._camera.set_exposure_auto(0)
IOError: [Errno 34] Numerical result out of range

Similar results with the utilities:

$ v4l2-ctl -c exposure_auto=0
VIDIOC_S_EXT_CTRLS: failed: Numerical result out of range
Error setting controls: Numerical result out of range
$ v4l2-ctl -c exposure_auto=1

If I use lsusb -v to examine the descriptors I see this (excerpted):

  VideoControl Interface Descriptor:
    bLength                18
    bDescriptorType        36
    bDescriptorSubtype      2 (INPUT_TERMINAL)
    bTerminalID             1
    wTerminalType      0x0201 Camera Sensor
    bAssocTerminal          0
    iTerminal               0 
    wObjectiveFocalLengthMin      0
    wObjectiveFocalLengthMax      0
    wOcularFocalLength            0
    bControlSize                  3
    bmControls           0x0000000e
      Auto-Exposure Mode
      Auto-Exposure Priority
      Exposure Time (Absolute)
Kenny
  • 675
  • 10
  • 24
  • This is not setting the manual exposure time but the auto exposure mode which can be 0-3 and the values are defined in the comments. I think I solved this however. – Kenny Jun 17 '16 at 06:33

1 Answers1

0

I got a bit fixated on making camera.set_exposure_auto(0) work. It turns out a value of 3 is auto exposure with manual iris adjustment. This camera doesn't have an iris (at least not a mechanical one) and this does appear to activate a form of auto exposure that works for me.

A value of 0 is auto exposure along with auto iris and it makes sense in retrospect why this isn't supported.

Some documentation here. Search for "exposure".

Kenny
  • 675
  • 10
  • 24