Linux Canon Ixus I USB HOWTO

Stefan Bauer (duke at splatterworld dot de)

05. November 2004


Canon Ixus I Digitalkamera in Verbindung mit Linux zur Übertragung und Aufbereitung der Bilder


Einleitung:

Wir besitzen einen selbstgebauten Linux Kernel der Sparte 2.6 und eine Canon Ixus I mit USB – Digital Kabel zur Übertragung der Daten


Vorbereitung:

Wir stellen sicher, dass USB Unterstützung im Bios aktiviert ist und unter Linux die USB Ports auch erkannt werden. Anbei die Ausgabe meines Systems mit 4 aktiven Ports.

lspci -v | grep USB

0000:00:1d.0 USB Controller: Intel Corp. 82801EB/ER (ICH5/ICH5R) USB UHCI #1 (rev 02)

0000:00:1d.1 USB Controller: Intel Corp. 82801EB/ER (ICH5/ICH5R) USB UHCI #2 (rev 02)

0000:00:1d.2 USB Controller: Intel Corp. 82801EB/ER (ICH5/ICH5R) USB UHCI #3 (rev 02)

0000:00:1d.3 USB Controller: Intel Corp. 82801EB/ER (ICH5/ICH5R) USB UHCI #4 (rev 02)


Nach dieser Kontrolle machen wir uns an die Arbeit, unserem System USB Unterstützung beizubringen.




Ablauf:

Wir gehen davon aus, dass sich auf unserem System bereits ein selbstgebauter Kernel befindet, den wir nun anpassen. In meinem Fall befinden sich die Kernel Quellen unter „/usr/src/linux-2.6.9“ Dieser Pfad, kann bei eurem System abweichen.

cd /usr/src/linux-2.6.9

Nun befinden wir uns im Verzeichniss unseres Kernels und wir beginnen mit der Anpassung des Kernels. (Achtung hierzu benötigen wir die Ncurses Bibliotheken)

make menuconfig

Folgende Änderungen sind nun im Konfigurationsmenü vorzunehmen, um den Kernel für USB tauglich zu machen. (jeweils im genannten Untermenü)

Device Drivers ---> USB support --->

<*> Support for Host-side USB

[*] USB device filesystem

<Modul> EHCI HCD (USB 2.0) support

<Modul> OHCI HCD support

<Modul> UHCI HCD (most Intel and VIA) support

<*> USB Mass Storage support

Nun beenden wir die Konfiguration und speichern die Änderungen ab. Jetzt erstellen wir unseren Kernel auf alt bekannte Weise unter Verwendung von Lilo als Linux Bootmanager (Bei Abweichungen zur individuellen Kernel Generierung und Bootloader Einstellung bitte anpassen)


make bzImage && make modules && make modules_install


Nun rattert unser Compiler den Kernel durch und wir gönnen uns eine Tasse Kaffee.


Sollte unser Kernel ohne Fehler erstellt worden sein, koppieren wir in unserem Fall das erstellte Kernel Image in den Boot Ordner und verlinken auf die neue Quelle und lassen anschliesend Lilo erneut darüber laufen.


cp arch/i386/boot/bzImage /boot/bzImage-2.6.9


mv /vmlinuz /vmlinuz.old


ln -s /boot/bzImage-2.6.9 /vmlinuz


Wenn jetzt alles geklappt hat, ist es an der Zeit unserem Boot Loader mitzuteilen, dass eine neues Kernel Boot Image vorliegt.


lilo


Nach dem positiven Einbinden des neuen Kernels in unser System sollte die Ausgabe in etwa so lauten.


Added Linux *

Added Linux-old

Added Windows-XP


Nun starten wir unser System neu


shutdown -r now


Wenn alles geklappt hat, installieren wir die restlichen Abhängigkeiten, die USB benötigt. (In unserem Fall auf einem Debian System, bitte an eure Distribution anpassen, oder alternative Quellen verwenden.


apt-get install libusb-0.1-4 libusb-dev


Alternativ unter http://libusb.sourceforge.net/


Jetzt prüfen wir nach, ob die Unterstützungen für USB korrekt geladen wurden.


dmesg | grep usb


usbcore: registered new driver usbfs

usbcore: registered new driver hub

usbcore: registered new driver usb-storage


lsmod


uhci_hcd 29072 0


cat /proc/bus/usb/devices


T: Bus=04 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2

B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0

D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1

P: Vendor=0000 ProdID=0000 Rev= 2.06

S: Manufacturer=Linux 2.6.9 uhci_hcd

S: Product=Intel Corp. 82801EB/ER (ICH5/ICH5R) USB UHCI #4

S: SerialNumber=0000:00:1d.3

C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 0mA

I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub

E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=255ms


T: Bus=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2

B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0

D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1

P: Vendor=0000 ProdID=0000 Rev= 2.06

S: Manufacturer=Linux 2.6.9 uhci_hcd

S: Product=Intel Corp. 82801EB/ER (ICH5/ICH5R) USB UHCI #3

S: SerialNumber=0000:00:1d.2

C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 0mA

I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub

E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=255ms


Sollte uns jetzt „dmesg“ die erforderlichen Ausgaben gebracht haben, „lsmod“ das Modul anzeigen, dass wir zuvor mit dem Kernel generiert haben und die „cat“ Ausgabe in etwa so wie bei meinem System erfolgen, ist unsere Kiste USB tauglich.


Nun ist es das erste mal an der Zeit unsere Kamera mit dem PC zu verbinden. Hierzu benutzen wir das mitgelieferte Kabel und stöpsel das USB Ende an unseren ersten USB Port. Anschliesend prüfend wir erneuet die Ausgabe von „dmesg“ und „cat“ und versichern uns, dass die Kamera erkannt wurde.


dmesg | grep USB


usb 2-1: new full speed USB device using address 3


cat /proc/bus/usb/devices


T: Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 3 Spd=12 MxCh= 0

D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=32 #Cfgs= 1

P: Vendor=04a9 ProdID=309b Rev= 0.01

S: Manufacturer=Canon Inc.

S: Product=Canon Digital Camera

C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=100mA

I: If#= 0 Alt= 0 #EPs= 3 Cls=06(still) Sub=01 Prot=01 Driver=(none)

E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms

E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms

E: Ad=83(I) Atr=03(Int.) MxPS= 8 Ivl=96ms


T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2

B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0

D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1

P: Vendor=0000 ProdID=0000 Rev= 2.06

S: Manufacturer=Linux 2.6.9 uhci_hcd

S: Product=Intel Corp. 82801EB/ER (ICH5/ICH5R) USB UHCI #1

S: SerialNumber=0000:00:1d.0

C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 0mA

I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub

E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=255ms


Nach diesem Aufruf machen wir uns daran, gphoto2( und gtkam, das frontend) für unsere USB Zugriffe der Kamera zu installieren.


apt-get install gtkam

apt-get install gphoto2


Alternativ unter http://sourceforge.net/projects/gphoto/


Nach der erfolgreichen Installation, steht uns gphoto2 für den ersten Feldversuch zur Verfügung. (Alternativ die GUI Oberfläche „gtkam“) Achtung! Hierzu muss die Kamera eingeschaltet sein und sich im Vorschaumodus befinden.


gphoto2 -P


Lade »IMG_0022.JPG« aus Verzeichnis »/store_00010001/DCIM/100CANON«...

Speichere Datei als IMG_0022.JPG




Viel Spass mit eurer Digital Kamera und Linux :)




Dieses HOWTO wurde mit groesster Sorgfalt erstellt. Trotzdem koennen Fehler nicht vollstaendig ausgeschlossen werden.
Ich kann fuer fehlerhafte Angaben und deren Folgen weder eine juristische Verantwortung noch irgendeine Haftung uebernehmen.
Fuer Verbesserungsvorschlaege und Hinweise auf Fehler bin ich dankbar.