Home Learn Linux Linux Tutorials How to Remote Control Your Camera with Darktable on Linux

How to Remote Control Your Camera with Darktable on Linux

We've talked about Darktable before, because it is a wonderful advanced RAW photo editor and workflow manager. My current favorite feature is tethered shooting, which is connecting a camera to your computer and controlling it with Darktable. Obviously this is not very convenient for hiking or street photography, but for studio and tripod work it's the bee's knees. There are two scenarios where this might be useful to you.

If your camera has Live View, then you can control it from Darktable and preview and adjust images on your Linux PC. This makes Darktable a great tool for staged macro photography, astrophotography, portrait photography, and for getting the best composition and most accurate focus on long telephoto shots. Newer Canon and Nikon dSLRs come with Live View, and other brands are rolling it out as well. You know those glorious wildlife photos that look like the photographer was just a few feet away, and the critters were super-cooperative and held attractive poses? These are often made from stationary positions with a tethered camera and a long lens.

If your camera doesn't support Live View but is still supported for tethered shooting in Darktable, then you have an easy and cheap way to do time-lapse photography without having to buy an expensive programmable remote control or other spendy gadget. Sure, buying spendy gadgets is fun, but it's nice to have options.

Supported Cameras

Darktable uses gphoto2 as its backend, so you can consult their Remote controlling cameras guide to see if yours is supported. If your camera is not on the list you can run a few commands to see if works. When you install Darktable it should pull in the ghoto libraries automatically, but it may not install the userland tools, so look for a ghoto or ghoto2 package to get these. Connect your camera to your computer with its USB cable, make sure it is detected but unmounted, and run these commands. This first command outputs a more complete list of supported cameras:

$ env LANG=C gphoto2 --list-cameras

This tells you if ghoto sees your camera:

$ env LANG=C gphoto2 --auto-detect
Model                  Port                                            
Canon EOS 7D          usb:003,011

Yay, it sees my Canon 7D. Now test which features are supported:

$ env LANG=C gphoto2 --port usb: --abilities
Abilities for camera             : Canon EOS 7D                                
Serial port support              : no
USB support                      : yes
Capture choices                  :
                                 : Image
                                 : Preview
Configuration support            : yes
Delete selected files on camera  : yes
Delete all files on camera       : no
File preview (thumbnail) support : yes
File upload support              : yes

'Capture choices' shows that both image previews (Live View) and capturing images are supported. (The other available options are audio capture and video capture, though the man page warns that video capture is not yet available.) For comparison, this is the output from an old Canon Rebel 400D:

$ env LANG=C gphoto2 --port usb: --abilities
Abilities for camera             : Canon EOS 400D (PTP mode)                   
Serial port support              : no
USB support                      : yes
Capture choices                  :
                                 : Image
Configuration support            : yes
Delete selected files on camera  : yes
Delete all files on camera       : no
File preview (thumbnail) support : yes
File upload support              : yes

Note the differences: the Rebel does not have Preview support, as it operates only in PTP (Picture Transfer Protocol) mode. PTP is an older protocol for transferring images from digital cameras. So it won't have the Live View in Darktable, but you can still control exposure, shutter speed, and do time lapse and bracketed photographs. Images are automatically transferred to Darktable for instant review and editing.

Now test taking a picture and downloading it to your PC. This command copies it to your current working directory and deletes it from your camera's storage card:

$ env LANG=C gphoto2 --port usb: --capture-image-and-download
New file is in location /capt0000.cr2 on the camera                            
Saving file as capt0000.cr2
Deleting file /capt0000.cr2 on the camera
Deleting 'capt0000.cr2' from folder '/'...

And you can test tethered shooting. Run this command and then press the shutter button on your camera:

$ env LANG=C gphoto2 --port usb: --capture-tethered
Waiting for events from camera. Press Ctrl-C to abort.                         
UNKNOWN PTP Property d105 changed
UNKNOWN PTP Property d108 changed
File capt0000.cr2 exists. Overwrite? [y|n] y                                   
Saving file as capt0000.cr2
Deleting 'capt0000.cr2' from folder '/'...
UNKNOWN Camera Status 0
UNKNOWN PTP Property d102 changed

It will emit a lot of "PTP Property"output, store the image in your current directory on your computer, and then wait for more input. Press ctrl+c to stop it. If any of the shooting commands don't work, check your camera settings because it may be too close to an object to focus, or your room may be too dark, or it's not set to shoot RAW. When your test succeeds, congratulations, you can do tethered shooting! Now you can be a command-line commando and stick with ghoto, or you can fire up Darktable. Follow me for a tour of Darktable.

Tethered Shooting in Darktable

With your camera still attached, open Darktable. Click "scan for devices", and when it recognizes your camera click "tethered shoot" (figure 1).

fig 1 darktable

This should take you to the Tethering page, and if it doesn't then find your own way there. Click the eyeball in the Live View dialogue (figure 2), and if the stars align and your camera is supported you'll have a live preview in Darktable.

fig 2 darktable

Just for fun click the 'capture image' button, and voilà! Darktable takes a picture (figure 3).

fig 3 darktable

Darktable has an almost overwhelming wealth of features. Take a look in just the Live View dialogue: you can zoom, rotate, flip horizontally, focus, turn on focusing and composition guides, and overlay preview.

The 'camera settings' dialogue is where the real fun begins. Depending on which of your camera functions Darktable supports you can control aperture, ISO, white balance, shutter speed, and focusing modes. Toggle the eyeballs to preview the various settings on the selected image.

Time Lapse

Use the 'camera control' tab to set up time lapse shooting. Click the 'delayed capture mode' and 'sequenced capture mode' buttons, set the timer interval, and then the count, which is how many photos you want to shoot. In figure 4 it's set to shoot 24 pictures at intervals of 60 seconds.

fig 4 darktable

For longer intervals it's unlikely your camera battery will last, so you'll need an AC adapter. Remember to take your camera out of power-save mode so it doesn't turn itself off. You'll also need to decide if you want to set exposure and focus manually, or leave automatic functions on for changing conditions.

You can also do bracketed shooting in Live View. Click the 'bracketed capture mode' button, set how many images you want to shoot on the 'bracket' line, and the 'bkt. steps' value. This is how many exposure steps you want between each shot, and your available values depend on your camera. Some cameras allow 1/3 EV (exposure value) steps, and some do not support fractional steps. 1 EV is one full stop.

Once you have captured your images you need to use the Lighttable and Darkroom tabs to edit and manage them. See A RAW Feast on the Linux Darktable to learn some of the basics, or consult the Darktable manual.



Subscribe to Comments Feed
  • Johan Nilsson Said:

    Hey. Very nice article and have tried to find 'live View' for this for a long time :) I'm not very good on terminiology and I hope you can understand me. I have a Canon Powershot G9, with support: joni@Datorn:~$ env LANG=C gphoto2 --port usb: --abilitiesAbilities for camera : Canon PowerShot G9 (PTP mode) Serial port support : no USB support : yes Capture choices : : Image : Preview Configuration support : yes Delete selected files on camera : yes Delete all files on camera : no File preview (thumbnail) support : yes File upload support : yes joni@Datorn:~$ Darktable can't find any device... I can set Lv-mode in the camera (not easy with Canons manual) , but only when I don't have the USB connected, but when I connect it to the computer,the focus-led is flashing green for a few seconds and then the camera closing the lens, a and the disply whent black. If I have the camera connected to USB, I cannot do anything and if I power up the camera, I can see a taken picture a while, the focus-led is flashing green, and after that, the disply whent black, but the dail-led is on the green led beside the mode-whel on cameras 'roof'. Probably something wrong inte the order to do things... I'm using Ubuntu 12.04.

  • giorgionetg Said:

    Great!!! I was waiting from a long time... I'm just trying a real HDR image... :-D

Upcoming Linux Foundation Courses

  1. LFS230 Linux Network Management
    06 Oct » 09 Oct - Virtual
  2. LFS416 Linux Security
    06 Oct » 09 Oct - Washington
  3. LFD331 Developing Linux Device Drivers
    13 Oct » 17 Oct - Virtual

View All Upcoming Courses

Become an Individual Member
Check out the Friday Funnies

Sign Up For the Newsletter

Who we are ?

The Linux Foundation is a non-profit consortium dedicated to the growth of Linux.

More About the foundation...

Frequent Questions

Join / Linux Training / Board