Skip to content

libgphoto2 based FUSE filesystem

Merry Christmas, Happy New Year, etc, etc.

I’m currently in Singapore visiting my family for the holidays and I finally caved in and bought myself a digital camera, which happens to be a Canon Ixus 55. It’s all nice and shiny but it doesn’t support the USB Mass Storage class, which means I need to use libgphoto2 based tools to interact with it. So, I thought to myself that there ought to be a FUSE filesystem based on libgphoto2 that handles this. And, in fact, Christopher Lester wrote one. But it doesn’t use libgphoto2 directly, and instead interacts with the gphoto2 command line tool which makes it a bit clunky. As Christopher has no plans to change this, I decided to write a filesystem that did use the library, and I now have a happy 0.0 release here.

As you might imagine, it’s very basic at the moment, but allows you to retrieve and delete files which is the majority of most people’s interactions with a camera. Deletion is very slow for reasons I don’t currently understand, but it does work.

The implementation is rather interesting because the libgphoto2 (cameras in general?) model doesn’t map to filesystem operations terribly well, particularly in the separation of file and directory iteration and the all-or-nothing approach to file access, which should make implementing writing files to a camera rather interesting. As a result, anyone looking at this code will probably be entertained.

And yes, if you read hub’s announcement of the latest libgphoto2 release, you may have noticed that it now exposes mounted Mass Storage class devices. While you could then turn around and mount those using gphoto-fuse, I probably wouldn’t recommend it. :-)

{ 7 } Comments