I’m running two Arducam B0498 cameras (USB3, IMX585 sensor, 8.3MP) on Windows 11 and trying to control them through OpenCV with the DirectShow backend (cv2.CAP_DSHOW). Capture is set to 1920×1080 MJPG at around 60 FPS, which works fine for streaming — but I’m hitting a wall with manual UVC property control.
I wrote a small diagnostic script to check what’s actually writable via OpenCV, and the results are identical on both cameras:
Gain is completely locked at 100 — set() returns False every time.
AUTO_WB reads back as 1.0 and I can’t seem to disable it through OpenCV at all.
AUTO_EXPOSURE set() claims success but get() returns -1.0, so the readback is garbage.
I’m assuming the IMX585 sensor itself supports manual gain, AGC disable, and white balance control — is there alternate firmware or a different Windows control path I should be using to actually get at these?
Thanks for the detailed diagnostic — that’s really helpful. Based on what you’re seeing, I don’t think the camera hardware or firmware is at fault here. The IMX585 sensor on the B0498 does support full manual control. What you’re running into is more likely the OpenCV DirectShow backend misinterpreting the UVC property ranges for this specific sensor.
OpenCV’s CAP_PROP_* constants map to a subset of DirectShow properties, and the mapping isn’t always reliable — especially for gain, where the UVC range and units can confuse the wrapper. The -1.0 on auto exposure readback and the gain set() returning False are classic symptoms of this mismatch.
Let’s run through two steps to confirm:
Step 1 — Firmware version check
Use the Arducam UVC Camera Configuration Tool (guide here: UVC Camera Configuration Guide - Arducam Wiki). Hit the Read button to pull the firmware version from camera memory and report back what you get.
Step 2 — Direct UVC command test
I’ve put together a Python script that bypasses OpenCV’s property layer and talks directly to the camera via UVC commands for exposure, gain, and white balance. I’ve sent it to you through private message — check your inbox. If this script works (proper readback, gain responds, AUTO_WB can be toggled), then the hardware is fine and the issue is purely in OpenCV’s DirectShow property mapping.
Alright, I ran through Step 1 — firmware version reads back fine from the config tool, nothing unusual there.
I’ve grabbed the script from the private message. Will run it against both cameras and post back with what I find. Fingers crossed this is just an OpenCV mapping problem.
Okay, great news — the direct UVC script works perfectly. Here’s what I’m now able to do on both B0498 cameras:
AUTO_WB — successfully disabled. Readback confirms it’s off, and I can manually set white balance parameters.
Manual exposure — sets and reads back correctly, no more -1.0 garbage.
Gain — I can adjust it across a normal range and the readback matches what I set. No more locked-at-100 or set() returning False.
So the IMX585 hardware on the B0498 absolutely supports full manual control — this is 100% an OpenCV CAP_PROP_* / DirectShow mapping limitation. The camera itself is fine.
Really appreciate the help on this one. For anyone else hitting the same wall: don’t trust the OpenCV property wrappers for these cameras, go direct UVC.
Glad that cleared it up. To summarise for anyone landing here with the same symptoms:
The Arducam B0498 (IMX585) fully supports manual gain, exposure, AGC disable, and white balance control at the hardware/firmware level.
The problems you ran into — gain locked at 100, AUTO_WB stuck enabled, AUTO_EXPOSURE returning bogus readback — are all OpenCV DirectShow backend limitations, not a camera or firmware defect.
The workaround is to bypass cv2.CAP_PROP_* for these controls and issue UVC commands directly. The script I shared privately does exactly that, and you’re welcome to adapt it to your pipeline.
If you need the script or run into any further issues integrating direct UVC control into your application, just post here and I’ll follow up.