Connceting a Canon IXUS with the Titanium


In general digital cameras under GNU/Linux are managed using gphoto(0.4 / 2, for serial and USB cameras. Also the IXUS is reported to work with gphoto(2), a description of installation and usage can be found under

However, depending on the specific revision version of the camera, there are slight differences. Problems are frequently reported regarding a usbdevfs bulk error / timeout:

Sep  4 15:38:03 titani kernel: hub.c: USB new device connect on bus2/1, assigned device number 6
Sep  4 15:38:03 titani kernel: usb.c: USB device 6 (vend/prod 0x4a9/0x3047) is not claimed by any active driver.
Sep  4 15:38:19 titani kernel: usbdevfs: USBDEVFS_CONTROL failed dev 6 rqt 64 rq 4 len 80 ret -32
Sep  4 15:38:22 titani kernel: usb_control/bulk_msg: timeout
Sep  4 15:38:22 titani kernel: usbdevfs: USBDEVFS_BULK failed dev 6 ep 0x81 len 156 ret -110
In consequence of this error the camera is deregistered from the USB bus.


In such cases the s10 shell ( might be a good alternative. It is based on gphoto2, but with some special adaptions.
A snippet from the readme:
s10sh started as 40 lines of C code in order to understand why gphoto's canon driver did not work with my camera, but with some additional coding it became an hack that I used to download my photos, and finally a quite-usable software. I'm planning to merge this two GPLed driver in order to obtain a canon powershot lib, that join all the features and that will implement an easy-to-use API.
So a merge of the libraries can be expected, but at the time of writing our specific camera only works with s10sh. You can find it under the above URL, compiling and installing the binary is simply following the steps in the readme. As for the gphoto-stuff, the libusb is needed.

The s10sh provides an interface to interactively navigate through the contents of the cameras memory and to copy, remove, etc images. This shell is like a plain ftp cleint.
The most usual actions are also available via command line options:

  -u                    USB mode, default is serial mode
  -g                    non-interactive mode, get all images
  -l                    non-interactive mode, list all images
  -E                    non-interactive mode, delete all images
s10sh -u  -- start the program in USB mode.
s10sh -ug  -- get all images in USB mode.

USB Permission Daemon

Both approaches are based on libusb and access USB Devices via the USBDevFS (i.e. via /proc/bus/usb/.....). Since devices do not appear there at fixed IDs permissions to access the devices either have to be set manually each time or automatically. The USB Permission Daemon can be used for the latter and can be found under the already mentioned link by James Tappin.