Java USB Camera Tools

 About jPhoto
 Command Line
 Hot Syncing

 About PTP
 Java USB (jUSB)
 PTP Testing
 License (GPL)

SourceForge Services
 Project Page

SourceForge Logo

About jPhoto

This project produces and supports GPL'd camera software such as:

  • Command Line camera access tools (follow link at left) using JITted classfiles or conventional GCJ executables;
  • Protocol libraries, initially PTP over USB (see Javadoc and PTP links at left), usable from Java or, with GCJ/CNI, from C/C++
  • ... more as contributed. User Interface support is on the wishlist, preferably using Free Java.

The software runs on recent USB-enabled GNU/Linux OS distributions, such as RedHat 7. For more information, see the "Requirements" link from the jUSB Project link at the left. Distributions dated before mid-year 2000 need updates for at least kernel and modutils; and possibly the C runtime threading support for distributions before early 2000.

This software works with a variety of cameras, including:

  • Kodak ... DC-4800, MC3; "the whole DX line" including: DX-3215, DX-3500, DX-3600, DX-3700, DX-3900
  • Sony ... DSC-P5 and DSC-F707 (turn the switch to "PTP" mode, otherwise you'll need to use the usb-storage kernel driver and mount a filesystem; and there see to be some camera firmware bugs preventing all PTP commands from working)
  • Hewlett-Packard ... PhotoSmart 318
  • Canon ... Powershot A70

PTP cameras from other vendors are in the works. If you need "capture" capability, taking pictures under program control, the DC-4800 has good support for this, but not all other cameras do. In particular, not all of the DX line does.

If you use a camera without a CF card (internal memory only) you'll want the CVS version of this software.

If you want to see the picture metadata from EXIF headers (time picture was taken, f/2.8 at 1/250 second, etc) look at the jhead program in the links section.

News, 4 August: The GCJ distribution in the SuSE 7.2 release has a different version of GCJ and "" (GCJ 2.95.2 and than RedHat 7.x (GCJ 2.96rh and So the RPM won't work on SuSE, since it uses that version of GCJ. Neither will it build there using that old version of GCJ, since that it doesn't support basics like inner classes. Get the "jphoto-0.3.6.tgz" tar file and use a JDK.

Also, the HotSync instructions can't work out of the box on SuSE. Until SuSE provides hotplugging RPMs, you will need to get the Linux Hotplug package (see the link from the HotSync page) and probably disable the "usbmgr" software bundled with SuSE.

This binary portability problem should vanish when the RPM can rely on GCJ 3.x installation everywhere. If you try building with GCJ 3.0, you'll notice that the name mangling has changed, so if you're using the latest GCC distribution with the Source RPM you will need to modify the Makefile's linking instructions appropriately.

News, 21 May: Kodak has two more PTP cameras out, the DX-3500 and DX-3600. CVS has MC3 related updates to let you download the QuickTime videos like other images, and work with storage that's not present (like a DX-3500 without an add-on CF card).

Note that kernels 2.4.3 and 2.4.4 don't handle usbdevfs "mount" options (which help when running without root privileges, like devmode=0666) correctly, but this is fixed in the 2.4.5 kernel.

News, 13 February: The new Kodak MC3 camera seems to work with jPhoto 0.3.6; no updates needed for photo support, though MP3 and video formats need them.

News, 22 November: If you're running RedHat 7, you may be interested in a conventional executable for jPhoto, build with the GNU "libgcj" JVM. It's available as an RPM; you'll need the "libgcj" RPM (from the second distribution CD).

News, 20 November: New release: jPhoto 0.3.5 has the "capture" command, and matches jUSB 0.4.2 API updates.