# Canon Digital Ixus V3 + USB + KDE -> HowTo

## L0ki

Nachdem ich mir eine Ixus v3 gekauft hatte, begann erstmal die "typische" Sucherei: wie bringe ich die Kamera unter Linux zum Laufen. Leider war wie so oft keine vernünftige Dokumentation zum Einrichten von Digitalkameras vorhanden, so daß ich mich einen ganzen Nachmittag durch das Internet gegoogelt, diverse Foren und Mailinglings gelesen habe. Ich will hier kurz den Weg beschreiben, den ich mir heraus"filtriert" habe, welcher aber natürlich universal auf alle anderen Digitalkameras anwendbar ist.

Ich verwende die eingebauten Funktionen von KDE, aber genauso funktioniert es dann natürlich auch ohne den KDE-Teil nur mit gtkam und digikam.

Voraussetzungen:

- es müssen die aktuellen Versionen von libgphoto2 v2.1.1 und gphoto2 v2.1.1 installiert sein.

- hotplug muß installiert und auch der Kernel entsprechend eingerichtet sein (Hotplugfähigkeiten)

Da die Unterstützung für neuere Kameras erst mit dem aktuellsten Release zur Verfügung steht, verwenden wir dieses, auch wenn es noch masked ist:

```
cd /usr/portage/media-libs/libgphoto2
```

dann den neuesten ebuild emergen, in meinem Falle libgphoto2-2.1.1-r1.ebuild

```
emerge libgphoto2-2.1.1-r1.ebuild
```

Danach noch gphoto2:

```
cd /usr/portage/media-gfx/gphoto2
```

und

```
emerge gphoto2-2.1.1.ebuild
```

Damit auch normale User Zugriff auf die Kamera haben, gilt es nun Hotplug um die Fähigkeit zu erweitern, Geräte mit Zugriff für den normalen User anzulegen, sobald die Kamera angeschlossen wird.

Dies geschieht wie folgt:

1.

Eine Liste der von libgphoto unterstützen Kameras in Hotplug laden:

```
/usr/lib/libgphoto2/print-usb-usermap >> /etc/hotplug/usb.usermap.new
```

2.

Die alte usb.usermap sichern und durch die neue ersetzen:

```
mv /etc/hotplug/usb.usermap /etc/hotplug/usb.usermap.old

mv /etc/hotplug/usb.usermap.new /etc/hotplug/usb.usermap
```

3.

In der Datei /usr/portage/distfiles/libgphoto2-*.tar.gz befinden sich im Verzeichnis /packaging/linux-hotplug/ Startscripte für Hotplug.

Das Startscript der Wahl muß nun entsprechend der Vorlieben (die Dateien sind selbsterklärend) nach /etc/hotplug/usb/usbcam kopiert werden.

Innerhalb dieses Startscriptes werden alle notwendigen Änderungen bezüglich User/Group vorgenommen.

Wichtig sind noch:

```
chown root.root usbcam
```

 und 

```
chmod +x usbcam
```

da sie sonst nicht ausgeführt werden kann.

4.

gphoto2 testen

```
gphoto2 --list-cameras
```

gibt euch eine Liste der von gphoto2 unterstützen Kameras aus. Diese solltet Ihr aber nicht benötigen, da das Programm grundsätzlich ein Auto-Detect macht.

```
gphoto2 --list-files
```

gibt euch eine Liste der aktuell auf dem Photo vorhanden Bilder/Videos/Wavs

5.

GUI

Da "gphoto2" eine reine Konsolenanwendung ist, macht es Sinn eine hübsche Oberfläche für den Zugriff zu verwenden: z.B. die in KDE integrierte Schnittstelle, gtkam oder digikam

Ich persönlich bevorzuge den direkten Zugriff durch KDE und ebenso digikam (ein sehr gutes und schnelles Programm).

Einrichtung von KDE

1. Alle notwendige Unterstützung für gphoto2 ist in kdegraphics, so daß nur sichergestellt sein muß, daß dieses Paket mit den korrekten Optionen compiliert wurde.

In der make.conf muß zu der USE Variablen "gphoto2" hinzugefügt werden.

2.

War gphoto2 nicht in der USE Variablen als kdegraphics kompiliert wurde, muß dies nun noch geschehen:

```
emerge kdegraphics
```

3.

in KDE unter "Kontrollzentrum/Angeschlossene Geräte" die Kamera

hinzufügen und danach ganz einfach aus dem Filemanager ansprechen:

```
camera:/dein kameraname
```

4.

fertig - und sich über die totale Integration freuen

Ich hoffe geholfen zu haben....

Gruß

LokiLast edited by L0ki on Sun Apr 13, 2003 3:28 pm; edited 1 time in total

----------

## moe

Cool, klappt.   :Very Happy: 

Hätte noch 2 kleine Änderungen, damit es wirklich idiotensicher ist:

in 3)

In der Datei /usr/portage/distfiles/libgphoto2-*.tar.gz befindet sich..

vor 4)

Hotplug muss gestartet werden:

```
/etc/init.d/hotplug start
```

Gruss Maurice

----------

## spitzwegerich

ich hab auch gerade einige stunden damit verbracht meine ixus 330 zum laufen zu bekommen. deine anleitung hab ich leider erst im nachhinein entdeckt, da haette ich mir viel zeit sparen koennen.

gibts denn eigentlich auf eine andere moeglichkeit im konqueror auf die kamera zuzugreifen, als durch die eingabe von "camera://"? es waere schoen wenn die kamera irgendwo im verzeichnisbaum links auftauchen wuerde, ich habe sie aber leider nicht gefunden.

----------

## McPringle

Nehme die Adresse doch einfach in Deine Lesezeichen auf.

----------

## krtek

i just got my ixus 430 to work with gtkam, thx to your description here!

cheers Krtek

----------

## bugfriend

Seit ich KDE 3.2 (und jetzt 3.2.1) emerged habe, kann ich nicht mehr über den camera I/O-Slave auf meine Digicam (Canon PowerShot A20) zugreifen. Ich kann im Kontrollzentrum die Kamera anwählen und erfolgreich testen. Die Einstellungen lassen sich allerdings nicht speichern. Ich muß bei jedem Aufruf die Cam neu auswählen. Über Digikam kann ich auch problemlos drauf zugreifen, nur eben über camera:/ nicht mehr. Habe auch kdegraphics/gphoto2... nochmals kompiliert und gphoto2 in den USE-Flags. Es wird beim Aufruf immer nur eine leere Seite geladen. Hat ja auch schon funktioniert unter 3.1.x. jetzt aber halt nicht mehr. Kann mir da evtl. jemand helfen?

----------

## kairo

So, darf diesen Thread jetzt reanimieren.

Problem: 

Kann nur als root auf meine IXUS 430 zugreifen

Hergang: 

Habe schön brav die Anleitung von L0ki befolgt.

Hier 

```

-rwxr--r--  1 root root   893  6. Jun 13:53 usb.usermap

```

```
/etc/hotplug # cat usb.usermap

# usb module         match_flags idVendor idProduct bcdDevice_lo bcdDevice_hi bDeviceClass bDeviceSubClass bDeviceProtocol bInterfaceClass bInterfaceSubClass bInterfaceProtocol driver_info

bInterfaceClass bInterfaceSubClass bInterfaceProtocol driver_info

# Canon Canoscan 650U

canon_scanner        0x0003 0x04a9   0x2206    0x0000       0x0000       0x00         0x00            0x00            0x00            0x00            0x00            0x00000000

# Canon Digital IXUS 430 (PTP mode)

usbcam               0x0003      0x04a9   0x30ba    0x0000       0x0000      0x00         0x00            0x00            0x00            0x00               0x00               0x00000000

```

Dann habe ich  aus /usr/portage/distfiles/libgphoto2-*.tar.gz die usbcam.group nach /etc/hotplug/usb/usbcam kopiert.

```
-rwxr-xr-x  1 root root  1033  6. Jun 14:08 usbcam
```

```

/etc/hotplug/usb # cat usbcam

#!/bin/bash

# $Id: usbcam.group,v 1.3 2003/09/16 16:42:44 hun Exp $

#

# /etc/hotplug/usb/usbcam

#

# Sets up newly plugged in USB camera so that only members of the

# group

GROUP=users

# can access it from user space. (Replace camera with the name of the

# group you want to have access to the cameras.)

#

# Note that for this script to work, you'll need all of the following:

# a) a line in the file /etc/hotplug/usermap that corresponds to the

#    camera you are using. You can get the correct lines for all cameras

#    supported by libgphoto2 by running "print-usb-usermap".

# b) a group "camera" where all users allowed access to the

#    camera are listed

# c) a Linux kernel supporting hotplug and usbdevfs

# d) the hotplug package (http://linux-hotplug.sourceforge.net/)

#

# In the usermap file, the first field "usb module" should be named

# "usbcam" like this script.

#

if [ "${ACTION}" = "add" ] && [ -f "${DEVICE}" ]

then

    chmod o-rwx "${DEVICE}"

    chgrp "${GROUP}" "${DEVICE}"

    chmod g+rw "${DEVICE}"

fi

```

So jetzt darf aber nur root mitspielen

```

/etc/hotplug/usb # gphoto2 --auto-detect

Modell                         Port

----------------------------------------------------------

USB PTP Class Camera           usb:

```

Und

```

/etc/hotplug/usb # gphoto2 --list-files

Es gibt keine Datei im Verzeichnis »/«.

Es gibt keine Datei im Verzeichnis »/store_00010001«.

Es gibt keine Datei im Verzeichnis »/store_00010001/DCIM«.

Es gibt 67 Dateien im Verzeichnis »/store_00010001/DCIM/104CANON«:

#1     IMG_0434.JPG                  850 KB 2272x1704 image/jpeg

#2     IMG_0435.JPG                  821 KB 2272x1704 image/jpeg

#3     IMG_0436.JPG                  787 KB 2272x1704 image/jpeg

#4     IMG_0437.JPG                 1028 KB 2272x1704 image/jpeg

```

ABER, komischerweise kann ich als user die Kamera "erkennen"

```
~ $ gphoto2 --auto-detect

Modell                         Port

----------------------------------------------------------

USB PTP Class Camera           usb:

```

NUR nicht auslesen

```

~ $ gphoto2 --list-files

*** Fehler ***

Ein Fehler trat in der IO-Bibliothek auf (»Konnte das USB-Gerät nicht beanspruchen«): Konnte Schnittstelle 0 nicht reservieren (Die Operation ist nicht erlaubt). Stellen Sie sicher, dass kein

anderes Programm oder Kernelmodul (z.B. dc2xx oder stv680) das Gerät verwendet und Sie

Lese- und Schreibrechte für das Gerät haben.

*** Fehler (-53: »Konnte das USB-Gerät nicht beanspruchen«) ***

Für Debug-Meldungen verwenden Sie bitte die Option »--debug«.

Diese Meldungen können Ihnen helfen, eine Lösung für Ihr Problem zu

finden. Wenn Sie jedoch Fehler- oder Debug-Meldungen an die

Mailingliste <gphoto-devel@lists.sourceforge.net> schicken wollen,

so starten sie gphoto2 bitte wie folgt:

    env LANG=C gphoto2 --debug --list-files

Please make sure there is sufficient quoting around the arguments.

```

Hier noch 'n bißchen was:

```
/etc/hotplug/usb # lsusb -v

...

Bus 003 Device 013: ID 04a9:30ba Canon, Inc.

Device Descriptor:

  bLength                18

  bDescriptorType         1

  bcdUSB               1.10

  bDeviceClass            0 Interface

  bDeviceSubClass         0

  bDeviceProtocol         0

  bMaxPacketSize0        32

  idVendor           0x04a9 Canon, Inc.

  idProduct          0x30ba

  bcdDevice            0.01

  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              100mA

    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

        wMaxPacketSize         64

        bInterval               0

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x02  EP 2 OUT

        bmAttributes            2

          Transfer Type            Bulk

          Synch Type               none

        wMaxPacketSize         64

        bInterval               0

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x83  EP 3 IN

        bmAttributes            3

          Transfer Type            Interrupt

          Synch Type               none

        wMaxPacketSize          8

        bInterval              96

  Language IDs: (length=4)

     0409 English(US)

...

```

 :Question:   :Sad:   :Question: 

----------

## r3tep

Hallo,

ich hatte dasselbe Problem mit den Nutzer-Rechten und konnte es folgendermaßen lösen:

Nutzergruppe anlegen:

```
groupadd camera
```

Nutzer der Gruppe hinzufÃ¼gen:

```
nano -w /etc/group

camera:x:XXX:myusername
```

Skript kopieren welches beim Einstecken der Kamera ausgeführt werden soll:

```
cp /usr/share/doc/libgphoto2-2/linux-hotplug/usbcam.group

/etc/hotplug/usb/
```

Eine evtl. vorhandene Datei 'usbcam' sichern, das neue Skript umbenennen und ausführbar machen:

```
mv /etc/hotplug/usb/usbcam /etc/hotplug/usb/usbcam.old

cp /etc/hotplug/usb/usbcam.group /etc/hotplug/usb/usbcam

chmod +x /etc/hotplug/usb/usbcam
```

Die Nutzergruppe in der Datei 'usbcam' bearbeiten:

```
nano -w /etc/hotplug/usb/usbcam

GROUP=camera
```

Jetzt geht alles auch mit den unter camera hinzugefügten Benutzern.

Links:

http://66.249.93.104/search?q=cache:d3oiT_McocYJ:www.selflinux.org/selflinux/pdf/digicam.pdf+gphoto2+benutzer&hl=de&lr=lang_de&client=firefox#4

http://www.gphoto.org/doc/manual/permissions-usb.html

Herzliche Grüsse

r3tep

----------

## misterjack

 *moe wrote:*   

> Hotplug muss gestartet werden:
> 
> ```
> /etc/init.d/hotplug start
> ```
> ...

 

das ist nonsens, schaue dir mal das initscript an

----------

## papahuhn

Ich empfehle jedem, dessen Kamera bloß PTP unterstützt, sich einen Kartenleser zu besorgen. Das Ding wird als Massenspeicher erkannt, und lässt sich prima mounten. Meine Canon formatiert ihre SD-Karte mit FAT16.

----------

