I want to connect a couple of Canon cameras with my computer in such a way that a single click both captures images and stores them on the computer.

I am trying the same in c#. Actually, I have connected the camera with computer, but it connects only a single camera at a time.

  • 1
    Only one camera shows up with the camera usb interface, or you don't know how to address the one you intend to communicate with? Look for something in the library you're using to talk to the camera with a name like "enumerate", or parameters to use when establishing a handle. – JDługosz Jul 3 '15 at 8:23
  • 1
    Some of the comments and answers on this question will be useful here. – JDługosz Jul 3 '15 at 8:25
  • Have you tried using something like GPhoto2 or similar? I seem to remember that it has the functionality to connect multiple cameras using USB. – Harry Sanderson Jul 25 '15 at 16:02

You can use digiCamControl to connect multiple cameras and control it in same time, but you can't trigger multiple cameras in same time via USB connection will be a lag between cameras capture around 200-800 ms.

If you want do same programmatically you can use the CameraControl.Devices nuget package for it


It sounds like a limitation of the Canon SDK that it connects to one camera at a time.

Multi-camera implementations would either need to disconnect/reconnect to each camera in turn (which would introduce quite a lot of lag) or be written from the ground up to talk directly to the device(s) across USB.

Depending on your needs, gPhoto2 may be suitable, it depends on what control you need (click & get picture would be fine, do fancy thing... not so much). Otherwise it's off to the specs to grab/write the USB frames yourself.


One alternative option, albeit resource intensive, would be loading a Virtual OS. Effectively load the OS for each camera you use and connect each one to a different OS.

  • As mentioned in question I want to connect a couple of Canon cameras with my computer in such a way that a single click both captures images and stores them on the computer.. Different OS shall behave differently, OS1 won't recognize the OS2 click. – Vikrant Jain Apr 11 '18 at 5:05

Here's how with a different Camera, explains things to consider: https://www.youtube.com/watch?v=svY2NOEBEQA .


You can use a remote shutter switch and split the signal between cameras, if you have a microcontroller you can also control the time between triggers


James Shell, Yes there is limitation with Canon SDK. You need to tweak it a bit to work. (Kindly do, at your own risk, it may cost Camera).

Forgot to mention the link

Check in comment section, you will find solution.

// my 2 cameras - they are populated by a selection logic.

public Camera camL;

public Camera2 camR;

if (camL == null || camR == null) return;

try {

           // code for closing session - removed for simplicity
        catch (Exception ex) { ReportError(ex.Message, false); }


Where Camera is the core class of camera.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.