====== Canon Powershot S2 IS ======
{{http://images-eu.amazon.com/images/P/B0009JQQDW.03.LZZZZZZZ.jpg?200 }} The PowerShot S2 is not a //mass storage// device so you can't just mount it to get the pictures. Instead it uses the //Picture Transfer Protocol// (PTP). A userspace tool which speaks this protocol is [[http://www.gphoto.org|gphoto2]]. The PowerShot S2 is supported since version 2.1.6.
===== gphoto2 Setup on Debian =====
==== with hotplug ====
The 2.1.6 release is only available in the unstable branch:
#> apt-get -t unstable install gphoto2
or under Gentoo (the rest of the directions here work just fine under gentoo (thanks to original poster)).
{~} $ emerge gphoto2
To make it work for non-root users do the following to let hotplug set up the correct permissions for you:
#> /usr/lib/libgphoto2/print-usb-usermap |sed -e 's/^usbcam/libgphoto2/' > /etc/hotplug/usb/libgphoto2.usermap
The above step makes sure all cams supported by libgphoto2 are known to the hotplug daemon. Debian uses a different script than the default install thus the [[man>sed]]. The rest needed should be set up by the debian package already. If not refer to the [[http://www.gphoto.org/doc/manual/permissions-usb.html|gphoto2 manual]]. The only thing left is to add the users which are allowed to access the cam to the group ''camera''.
Connecting the camera should print the following in the syslog:
Jul 30 16:47:09 rumpel kernel: usb 1-4: new high speed USB device using address 12
Jul 30 16:47:09 rumpel usb.agent[23381]: libgphoto2: loaded successfully
Try your luck with the autodetection and you should see this:
$> gphoto2 --auto-detect
Model Port
----------------------------------------------------------
Canon PowerShot S2 IS (PTP mode) usb:
Canon PowerShot S2 IS (PTP mode) usb:001,012
==== with udev 084 ====
The hotplug method mentioned above doesn't work anymore with a recent kernel and a matching udev version (udev replaces hotplug). I had to use the following rule placed in ''/etc/udev/rules.d/10-local.rules'':
BUS="usb", SYSFS{idVendor}="04a9", SYSFS{idProduct}="30f0", GROUP="camera", MODE="0660", \
PROGRAM="/bin/sh -c 'K=%k; K=$${K#usbdev}; printf bus/usb/%%03i/%%03i $${K%%%%.*} $${K#*.}'", \
NAME="%c", RUN="/bin/sh -c 'chgrp camera /proc/%c && chmod 0660 /proc/%c'"
The rest is the same, add your user to the ''camera'' group and use ''gphoto2 --auto-detect --list-files'' to test.
===== Getting images from the Camera =====
You could of course use some GUI like the gtkam utility but I prefer a little script to do what I want. It fetches all available images to the current directory, autorotates them lossless using [[man>exiftran]] and deletes all images from the camera.
#!/bin/sh
#The cameras image folder. use '--list-files' to get the name of the image folder
FOLDER='/store_00010001/'
echo "fetching all files..."
gphoto2 --auto-detect --get-all-files --folder $FOLDER
echo "Autorotating images..."
exiftran -ai *.JPG
echo
echo "Deleting images from camera (Abort now if not wanted)"
echo -n "Hit enter to continue "
read foo
gphoto2 --auto-detect --delete-all-files --recurse --folder $FOLDER
===== lsusb -v Output =====
Bus 001 Device 007: ID 04a9:30f0 Canon, Inc.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x04a9 Canon, Inc.
idProduct 0x30f0
bcdDevice 0.02
iManufacturer 1 Canon Inc.
iProduct 2 Canon Digital Camera
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 39
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xc0
Self Powered
MaxPower 2mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 3
bInterfaceClass 6 Imaging
bInterfaceSubClass 1 Still Image Capture
bInterfaceProtocol 1 Picture Transfer Protocol (PIMA 15470)
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0008 1x 8 bytes
bInterval 10
Device Qualifier (for other device speed):
bLength 10
bDescriptorType 6
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
bNumConfigurations 1