Hey everyone, I’m stuck trying to get four Arducam 12MP USB Camera modules working on a single Windows machine. Each camera is plugged directly into its own USB port on the motherboard — no hubs or splitters involved. Problem is, I cannot tell them apart programmatically.
Here’s what I’ve tried so far for enumeration:
- DirectShow
- OpenCV (cv2.VideoCapture)
- pygrabber
- WMI queries
All four enumerate with the device name “Arducam 12MP USB Camera” or “Arducam_12MP”. They all share the same VID (1BCF) and PID (28C1). The PNPDeviceID is identical across all of them. Even the USB port signature is the same, which makes no sense since they’re in different physical ports. Windows also shows multiple camera interfaces (MI_00, MI_02) for each one.
Here are the actual enumeration logs I captured:
Camera Name : Arducam 12MP USB Camera
OpenCV Index : 0
Device ID : USB\VID_1BCF&PID_28C1&MI_00\6&2A63504F&0&0000
Port Path : 6&2A63504F&0&0000
Camera Name : Arducam_12MP
OpenCV Index : 1
Device ID : USB\VID_1BCF&PID_28C1&MI_00\6&35A126FC&0&0000
Port Path : 6&35A126FC&0&0000
Camera Name : Arducam_12MP
OpenCV Index : 2
Device ID : USB\VID_1BCF&PID_28C1&MI_00\6&35A126FC&0&0000
Port Path : 6&35A126FC&0&0000
Camera Name : Arducam_12MP
OpenCV Index : 3
Device ID : USB\VID_1BCF&PID_28C1&MI_00\6&35A126FC&0&0000
Port Path : 6&35A126FC&0&0000
Notice cameras at indices 1, 2, and 3 all have the exact same port path (6&35A126FC&0&0000) even though they’re on different physical ports. That can’t be right.
A few more things I’ve attempted:
- Filtering down to only
MI_00interfaces - Grabbing DirectShow monikers directly
- Reading
PNPDeviceIDvia WMI - Checking unique identifiers with pygrabber, OpenCV, and raw Win32 APIs
- Reboots and physically reconnecting cameras in different orders
Nothing works. The device_path and PNPDeviceID remain identical across all four units. I can’t build any kind of reliable mapping. Has anyone run into this before with these Arducam modules?
Thanks for the detailed report — that’s really helpful. Let me go through what I’m seeing here.
First off, you’re right: all four cameras sharing VID 1BCF and PID 28C1 is expected since they’re the same model. But the identical PNPDeviceID and port path across physically separate ports — that’s definitely not normal and points to something in the firmware descriptors.
A couple of things I noticed in your logs:
- One camera shows up as “Arducam 12MP USB Camera” while the other three show as “Arducam_12MP”. That naming inconsistency might be a clue that there’s some firmware variation between units.
- Three cameras sharing the port path
6&35A126FC&0&0000despite being on different ports is odd. That shouldn’t happen under normal USB enumeration.
Before I dig deeper — can you confirm exactly which 12MP USB Camera module you’re using? A product link would be ideal so I can verify the hardware revision.
Will dig up the exact product link and post it here shortly. In the meantime — is this a known issue with these modules? I’m starting to wonder if they just don’t have unique serial numbers burned in from the factory.
You’ve actually hit the nail on the head. After reviewing the evidence and checking internally, I can confirm the root cause:
These Arducam 12MP USB Camera modules ship without unique serial numbers or distinguishable identifiers in their UVC descriptors. Because of this, Windows has no way to tell them apart at the descriptor level — it falls back to the VID/PID match and ends up assigning identical device paths, PNPDeviceIDs, and port signatures across all connected units. That’s why your reboots and reconnections don’t help, and why tools like OpenCV, DirectShow, and pygrabber all see the same identifiers.
It’s not a driver bug or a Windows issue — the cameras simply present themselves identically at the USB descriptor level.
Well that explains a lot. So what are my options here? Is there any way to actually fix this, or am I stuck with four indistinguishable cameras?
There is a solution. We have an internal update tool that can write unique identifiers — either a custom device name or a serial number — directly to the camera firmware. Once each physical unit has its own unique identifier burned in, Windows will enumerate them as distinct devices and you’ll be able to reliably map each one.
Here’s what I need from you:
- Confirm the exact 12MP USB Camera module and share a product link so I can make sure the tool is compatible with your revision.
- Once confirmed, I’ll send you the update tool and instructions through private message.
This is the recommended approach for distinguishing multiple identical Arducam USB cameras on Windows when you’re dealing with identical UVC descriptors out of the box.
That’s exactly what I needed to hear — thanks. I’ll get you that product link ASAP. Looking forward to getting these cameras uniquely identifiable. Will update the thread once I’ve run the tool.