The libgphoto2 camera access and control library.
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/ISSUE_TEMPLATE Update issue templates Jan 26, 2019
camlibs add some more known values for eos Feb 17, 2019
doc removed baudboy.h usage Oct 22, 2011
examples disable capture fuzzing Jan 20, 2019
gphoto-m4 added missing htole64 Mar 30, 2018
gphoto2 Canon EOS: Add support for CR3 RAW Jan 29, 2019
libgphoto2 fixed including Win32 shlobj.h header when compiling using Visual Studio Jan 12, 2019
libgphoto2_port add a generic fuzz mode we can use for other cameras Jan 26, 2019
packaging print-camera-list: Fix udev rules for linux-4.14+ Dec 11, 2018
po updated danish Feb 3, 2019
tests add log_remove func too Jun 3, 2017
.gitignore added missing example binaries to .gitignore Dec 5, 2016
.travis-translate-pkgs libusb1 is default installed on macosx travis builds, Apr 9, 2018
.travis.yml newest travis images seemd to need gettext May 8, 2017
AUTHORS merge over the rest of AUTHORS list addtions from svn Aug 2, 2015
COPYING replace (c) and (C) by � Dec 15, 2002
ChangeLog Eliminated some compiler warnings, fixing a couple of small Jul 11, 2010
HACKING fix selective install instructions Sep 3, 2007
INSTALL Rename dep package Oct 29, 2018
MAINTAINERS updated to current state May 27, 2013 oadded RELEASE HOWTO Jan 1, 2019
NEWS sony news Feb 10, 2019 Add Bindings section to README Apr 10, 2018
README.packaging Fixed minor file name typo Nov 1, 2010 oadded RELEASE HOWTO Jan 1, 2019
TESTERS * TESTERS: add myself as tester for Canon 20D Oct 18, 2004 development Jan 1, 2019
coverity-model.c try to model ptp_transaction Jul 21, 2018 Consistently use #include <gphoto2/gphoto2-foo.h> everywhere. Sep 28, 2006 INSTALLCHECK_DEPS: additional dependencies for installcheck target Dec 11, 2006 Consistently define driverdir in all *.pc files Jul 18, 2017 Avoid overlinking of libexif Jan 14, 2016


Hello and welcome to the wonderful world of gphoto! This is libgphoto2, the successor of gphoto with lots of new features and additional camera drivers.

If you miss a feature, would like to report success or failure, or have any questions, please don't hesitate to contact our mailing list.

What is libgphoto2?

libgphoto2 is a library that can be used by applications to access various digital cameras.

For more information on gphoto, see gphoto project home page.

There, you can also get information on mailing lists, supported cameras, and availability of gphoto2. Another source of information is gphoto github project page.

where you can access our SVN server to fetch the source code of gphoto2, gtkam and GnoCam (see below).

What is libgphoto2 not?

libgphoto2 itself is not a GUI application, opposed to gphoto. There are GUI frontends for the gphoto2 library, however, such as gtkam for example.

libgphoto2 can only talk to cameras the language of those it understands. That is, if you own a camera that speaks a language that isn't published anywhere and nobody has been able to figure out the meaning of the sentences, libgphoto2 cannot communicate with those cameras.

Then, there are cameras supporting the so-called USB Mass Storage protocol. This is a protocol that has been published and lets you access any storage device, be it a camera or a disk connected via USB to your computer. As there are already drivers for this protocol out there, you don't need an additional library like libgphoto2. The list of camera that use USB Mass Storage is getting longer everyday, so we won't publish it.

For a more up to date list, you can consult camera list with support status.

Your operating system will tell you about that because it is likely to recognize the device as a SCSI disk that you can mount (for Linux 'dmesg' will tell you). Again, those cameras cannot be accessed through libgphoto2. Some of them can be switched to use a different communication protocol and might be in that case useable with libgphoto2.

Other camera support a protocol called PTP or USB Imaging Devices that has been developed by Kodak and other. libgphoto2 does support PTP. Also working will be cameras labeled as "PictBridge", which is a extension to PTP.

Almost all cameras that are not mass storage support it these days, including but not limited to all Nikon, Canon, Fuji, Sony, Panasonic, HP and more.

PTP camera unknown to libgphoto2 will be detected as a generic PTP camera and will work as-is without any changes.

MTP (Microsoft Transfer Protocol) capable devices will also be accessible, since MTP is based on PTP.


libgphoto2 should compile and run on pretty much all Unix-like platforms. libgphoto2 has not (yet?) been ported to any operating system from MicroSoft.


How to set up libgphoto2

For information on how to set up libgphoto2 and its frontends, see The gphoto2 Manual.

It is available at the following places:

The gphoto2 Manual includes information about setting up USB hotplugging.

If you run into problems, you may also consult the FAQ (also included in The gphoto2 Manual).


gphoto2 is a command line frontend which is quite powerful, especially in combination with scripts. See The gphoto2 Manual for a short description.

For the GUI lovers, there are for example digikam (KDE), gthumb (GNOME), f-spot (GNOME / Mono) and more. We also have a GTK2 reference GUI called gtkam, which is unmaintained, its only special features are capture ability. Additionally, there are plugins for other programs available like kio_camera (KDE - Konqueror) and a fuse plugin, gphotofs.

Reporting Bugs

Every piece of software contains errors and flaws. So does libgphoto2. When you encounter something that does not work, please do the following:

  1. Find out whether this is a known problem.

  2. Reproduce the problem with debug output enabled and the language set to English, so that the development team will understand the messages. You can do this by running:

     env LC_ALL=C gtkam

    if you're using the gtkam frontend or running:

     env LC_ALL=C gphoto2 --debug-logfile=logfile.log --debug <options>

    using the gphoto2 command line interface.

  3. Report the problem on the mailing list with the corresponding debug output if it is small. If it is more than a few kilobytes, please don't post the complete debug output on the list.