Hi everyone, hoping someone can help me out. I bought a UCTRONICS B0354 UVC camera (the version with the 2.8-12mm CS-mount lens) and honestly I have never gotten it to work the way it should. I’m on Windows 10. I followed the official manual, the online docs, and the setup video, and it still misbehaves. Here’s what I’m running into:
Mic quality is terrible. As far as I can tell the case has no opening for the mic to actually pick up sound from outside.
Low light performance is bad. In auto exposure the exposure time never goes above ~31.3 ms, which shows up as CAP_PROP_EXPOSURE of -5. Gain doesn’t seem to increase in auto mode either. Turning on “Low Light Compensation” does nothing at all.
Somebody on the seller side told me the longest exposure time via UVC is 1 second (CAP_PROP_EXPOSURE of 1). I have not been able to hit that with any software I tried.
There’s no H.264 option in the settings, even though Webcam Diagnostics reports H.264 as a supported format.
The 2.8-12mm lens will not focus at infinity between 2.8mm and about 5mm. To get focus in that range I basically have to unscrew the lens almost all the way off the camera.
Has anyone seen these? Is there a firmware fix for the exposure/H.264 stuff?
Thanks for the very detailed writeup, that really helps. A few things before we go deep:
When you say “no H.264 option,” which app are you looking at? Some apps simply don’t expose it in their UI.
What software are you using to test exposure right now?
On the exposure point specifically: the ~31.3 ms / CAP_PROP_EXPOSURE of -5 you’re seeing is the default behavior, but exposure time can be controlled from software through OpenCV. Please take a look at these two pages:
Ok I read both docs. So for exposure I’ve been testing with OpenCV and a couple of other capture programs, and I get the same result every time — it caps out around 31.3 ms (CAP_PROP_EXPOSURE -5) and never goes past it, regardless of what I set. I’ve now tried this on multiple programs AND multiple computers, same behavior.
Also a couple of things I already ruled out:
The lens: I tested it on multiple CS-mount cameras and it has the same infinity focus problem in that focal length range. So it’s the lens, not the camera.
The mic: I removed the lens from the camera and the audio quality/reception clearly improved. That points to the case blocking the mic.
For what it’s worth I’ve done consulting for smartwatch ODMs in Shenzhen covering hardware, software, and case design, so I’m happy to work with you on this. If there’s firmware that fixes the exposure/settings issues I have no problem flashing an update — I just need the right software and firmware. Same for getting H.264 into the settings.
One more thing I forgot to add — the low light stuff is the main blocker for me. If gain is only adjustable manually, and Low Light Compensation isn’t doing anything, I can’t get usable footage in anything but bright light. Is there a manual control I’m missing, or is this a firmware limitation?
Great testing, thanks. Let me walk through each item:
Exposure: yes, exposure time can be driven entirely from software via OpenCV. The 1 second maximum via UVC is possible, but you generally have to go through OpenCV (on Windows, the GStreamer pipeline route in the second doc is the reliable one). Note that some auto-controlled features — saturation, contrast, acutance, white balance, exposure — are managed in auto mode, but gain can be adjusted manually.
Low Light Compensation: it’s enabled at the sensor level, but not at maximum effect, because full effect tanks the frame rate. It can’t be adjusted manually from the app side. If you need that changed, we do offer a customization service for it.
H.264: the format does appear in certain applications, for example PotPlayer, or with the AMCap app we ship alongside the camera. It’s often the app hiding it, not the camera.
Mic: the thick foam we add to keep dust off the sensor sits over the mic opening, which is exactly the problem you demonstrated. It can be removed, or replaced with a thinner foam that lets sound through. We can get you a thin foam piece.
Lens focus: the infinity focus issue in the 2.8-5mm range is usually solved with a CS-mount to C-mount adapter, which changes the flange distance. We can get you one of those as well.
Let me know how the OpenCV/GStreamer test goes and I’ll follow up with you separately about getting the foam and adapter to you.
Alright, I dug into the GStreamer route on Windows and re-ran the exposure test. Using CAP_PROP_EXPOSURE of -5 still gives me ~31.3 ms as the ceiling, and when I try to push it toward 1 (the supposed 1 second) it just clamps back down — nothing I set holds. So I’m still stuck at the same limit as before.
On the plus side, H.264 DOES show up when I open the stream in PotPlayer, so you were right that it was the app hiding it. That item I’ll call solved (still odd it doesn’t appear in other tools, but it’s there).
Gain in manual mode does respond, so that helps a bit, but not enough for the low light I’m dealing with. And Low Light Compensation still does nothing on my unit even with it enabled.
Did I do the exposure call wrong, or is there something else in the pipeline? Happy to paste my exact code if that helps.
Go ahead and paste the code you’re using so I can check the property call.
On the low light compensation — since it’s already enabled at the sensor level and can’t be pushed further through the app, the only path to more effect is the customization service I mentioned, where the sensor-side setting is changed for you. That’s not something adjustable from the software on your end.
For the 1 second exposure: make sure you’re setting the exposure property after the stream is opened and the capture is actually running, and that you’re not letting auto mode re-assert itself afterward. The GStreamer pipeline doc covers the ordering that works. If it still clamps, that tells us the driver/firmware on your unit isn’t honoring the higher value, and a firmware update is the next step.
Here’s the relevant part of what I’m running — this is the exposure call:
cap.set(cv2.CAP_PROP_EXPOSURE, -5) # gives me ~31.3 ms
cap.set(cv2.CAP_PROP_EXPOSURE, 1) # supposed to be 1 second, doesn’t stick
I’ve tried moving these lines around, after opening the stream, after a few frames are read, with auto disabled first — same result every time. It always falls back to the ~31.3 ms ceiling. So I don’t think it’s my code at this point.
If the fix is firmware, that’s fine by me. I just need the software and the firmware to flash it.
Ok, if it clamps no matter the ordering, that’s consistent with the firmware on your unit not honoring the higher exposure value. I’ve sent you the firmware package through private message, plus the AMCap app for testing H.264 and the capture settings — please check your messages and grab both.
Steps:
Flash the firmware on the camera (follow the included instructions).
Re-test the exposure call with CAP_PROP_EXPOSURE set toward 1 and see whether it now holds.
Open the stream in AMCap and confirm H.264 is listed there.
Since you’ve already shown it’s the lens (tested on multiple CS-mount bodies) and the case blocking the mic (audio improved with the lens removed), the firmware won’t fix those two — those are hardware/mechanical. For the mic, pull the thick dust foam and we’ll get you a thin foam replacement. For the lens, the CS-to-C-mount adapter is the fix; I’ll sort out getting you those parts in the same private thread.
Got the files, thanks. Firmware flashed fine. Exposure is now better than before — I can get further than the old 31.3 ms ceiling — but I still can’t hit the full 1 second that was quoted, and it still falls short of what I’d want for really low light. Low Light Compensation still doesn’t do anything for me, so it looks like that genuinely needs the customization service.
AMCap shows H.264, so that’s confirmed working.
The lens and mic issues are unchanged, which makes sense given they’re mechanical. I’ll try the thin foam when I get it and test the adapter for the infinity focus once it’s here.
Thanks for confirming all of that. Here’s where we stand:
H.264: resolved — it was an app-side display issue, and it’s present in PotPlayer and AMCap.
Exposure: improved after the firmware flash (you’re past the old 31.3 ms / CAP_PROP_EXPOSURE -5 ceiling), but the full 1 second via UVC still isn’t reachable on your unit. If you need more than that, it’s a customization-service item, not something settable from the app.
Low Light Compensation: enabled at sensor level but capped to protect frame rate, and not manually adjustable — also a customization-service item.
Mic: caused by the thick dust foam over the mic opening; remove it and use the thin foam replacement.
Lens infinity focus (2.8-5mm range): use the CS-mount to C-mount adapter to correct the flange distance.
So the software-side items are either fixed or require the customization service, and the mic/lens items are mechanical fixes. Keep me posted once you’ve tested the thin foam and the adapter — if the adapter doesn’t resolve focus at infinity across the whole range on your lens, we’ll dig further from there.