USB Camera Control


The Canon EOS M doesn’t include a remote shutter release cable port, and the on-camera controls don’t expose features such as bulb-mode exposures. Further, simple remote shutter release doesn’t support the sophisticated camera control necessary to do timelapses with complex exposures.

What kind of complex exposures? Imagine a timelapse going from day to night. During daylight the exposure might be f8, 1/1000 second at ISO 100, but the night exposure might require f4 1/15 second at ISO 400. That’s three stops change in ISO, six stops change in exposure time, and two stops change in aperture, totaling 11 stops difference. You can’t rely on auto exposure during a timelapse because it can result in exposures that pump up and down as clouds pass by, but changing the exposure manually during that time can result in dramatic shifts. An automated tool adjust the exposure based on the metered reading, but limit changes to no more than 1/4 stop over 30 frames, for instance. (Note, those exposure values are totally pulled out of my ass and they don’t even look right to me now, but you got the point.)

Prior art

DSLR Camera Remote is a commercial software product that demonstrates what can be done when interacting with a camera over the USB port. Libgphoto appears to support similar remote control of cameras over the USB port (FAQ), though without the pretty app. This guy wrote about building a camera controller, but the approach was focused on triggering the shutter switch, rather than controlling camera features. The proliferation of DSLR-wielding filmmakers has created a market for USB focus controllers.


  • USB control of Canon EOS cameras, including control of aperture, exposure time, focus, ISO speed (optional), and display of last shot taken (or live preview, if available).
  • Ability to receive exposure trigger commands from another timing device, such as an intervalometer or motion control equipment, and execute that exposure trigger on the camera via the USB interface.
  • Interact with a client device via WiFi.
  • Be battery powered and run for 12 hours on battery power.

Option 1

Build a compact solution. A web app interacting with libgphoto on a Gumstix Overo (with Pinto for USB , and maybe a Tobi and 5V US Power Adapter while building it) running Ubuntu.

The Gumstix computer on module has built-in WiF, and the Pinto board’s USB OTG should support the required camera connectivity. The hardware cost starts at about $300, without a housing or battery.

This could be a very elegant solution, especially with a well-designed app and housing. The entire device might be made tripod mountable with the camera, so cables can be kept short and the device’s visibility minimized. Achieving that elegance, however, would demand significant effort.

Option 2

Assemble off-shelf components. An Asus Eee PC netbook (store) or fit PC (store) running Windows and the DSLR Camera Remote server (though a Mac Mini or MacBook Air could probably fill the bill as well, I just feel bad relegating a nice machine to dumb work). Power consumption will be greater than with Option 1 and a larger battery will be required in addition to the computer host to run for 12 hours.

This option is probably the fastest solution, but lacks the potential elegance and compactness of the first. Packing all the equipment into the wilderness and preventing theft in the city will be a greater challenge.


My searches for existing products may have been incomplete, but assuming that there is no existing product to do what I need, and assuming libgphoto can support the required camera control, option 1 appears to be the best solution in the long term. Anybody want to help? Is it work doing a Kickstarter?

Update, option 3

Give up on the exposure control requirements and focus on shutter triggering. Gentles offers devices that can trigger the shutter via the IR remote on many cameras. It’s some pretty straightforward kit, but there’s no option to manage the exposure via that interface.