[geklärt] LibUSB für PTP

Welche Kameras werden unterstützt, Einrichtung der SD-Karte mit CHDK.

LibUSB für PTP

Beitragvon Belichter » 15.01.2011, 20:05

Hallo zusammen,

die eigentliche Frage ist,

kann ich erreichen, dass ich wahlweise ptpCamGui.exe mittels LibUSB , oder z.B. Canon CameraWindow, starten kann?


Im Moment kann ich über LibUSB INF Wizard eine INF-Datei erzeugen und installieren lassen.
Dann funktioniert PTP und ich habe einen Eintrag im Gerätemanager unter LibUSR-Win32 Devices, wenn ich die Kamera einschalte.

ODER

über den Filter Wizard installiere ich einen Filter für meine Kamera, dann taucht die (eingeschaltete) Kamera unter Tragbare Geräte im Gerätemanager auf.
PTP geht.

In beiden Fällen starten die Canon Tools nicht mehr (Kamera nicht gefunden)
Das kann ich nur erreichen, wenn ich bei (eingeschalteter) Kamera den entsprechenden LibUSB-Eintrag aus dem Gerätemanager lösche.
(und später für PTP wieder installiere)

Ist der Aufwand nötig?
Was mache ich falsch?

Win Vista
bis dann
IXUS 970 IS 100b
Belichter
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 170
Bilder: 11
Registriert: 21.05.2009, 09:21
Wohnort: Solingen
Kamera(s): ixus 970 IS 100b

Re: LibUSB für PTP

Beitragvon msl » 16.01.2011, 23:14

Hallo,

du machst nichts falsch. Es ist nicht möglich, beides (ptpcam und CameraWindow) mit einem Treiber zum Laufen zu bringen. Das haben wir in erster Linie M$ zu verdanken. Das ist aber wieder eine andere Geschichte.

Es ist also nicht möglich, 2 unterschiedliche Treiber gleichzeitig zu benutzen.

Ich vermute, du möchtest per CameraWindow die Fotos von der Kamera herunterladen. Prinzipiell geht das auch schon mit ptpcam. Das ganze wird aber erst mit einer Benutzeroberfläche richtig nutzbar. Wenn wir die "Kinderkrankheiten" am PTP-Interface geklärt haben, sollte es dafür bald eine Lösung geben.

Zwischenzeitlich bleibt dann entweder der Wechsel der Treiber oder das Auslesen der Karte im Karten-Lesegerät, wenn man LibUSB nutzen möchte.

Gruß msl
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4567
Bilder: 271
Registriert: 22.02.2008, 11:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Re: LibUSB für PTP

Beitragvon fe50 » 17.01.2011, 00:10

Belichter hat geschrieben:In beiden Fällen starten die Canon Tools nicht mehr (Kamera nicht gefunden)
Das kann ich nur erreichen, wenn ich bei (eingeschalteter) Kamera den entsprechenden LibUSB-Eintrag aus dem Gerätemanager lösche.
(und später für PTP wieder installiere)
Hast Du schon mal ausprobiert, of einfaches deaktivieren im Gerätemanager auch ausreicht ?
◄"The grass was greener, The light was brighter"►  ◄fe50 home►  ◄TRAIL-Magazin►  ◄RTFM !►
Benutzeravatar
fe50
CHDK-Legende
CHDK-Legende
 
Beiträge: 1106
Registriert: 25.04.2008, 14:28
Wohnort: B'Württemberg
Kamera(s): Ixus50 101b, Ixus860 100c, SX10 101a

Re: LibUSB für PTP

Beitragvon Belichter » 17.01.2011, 19:42

Guten Tag zusammen,
danke für eure Antworten, die sind schon deshalb hilfreich, dass ich jetzt weiss, dass ich nichts übersehen habe.

fe50 hat geschrieben:deaktivieren im Gerätemanager

... das reicht nicht, ich muß den Eintrag löschen.
Und zusätzlich die Kamera neu anstöpseln.
Ich erwähne das extra, weil ich ja vorher im Gerätemanager sehen kann, dass die USB-Devices (bei jedem Event) neu abgeklappert werden.

msl hat geschrieben:Ich vermute, du möchtest per CameraWindow die Fotos von der Kamera herunterladen

Ja, dass finde ich sehr praktisch, aber mal sehen was mit PTP so alles gehen wird.

Dabei fällt mir ein, dass es das gleiche Ärgernis bei Atmel AVR-Studio mit den Jungo-Treibern gibt.

Es wäre eigentlich nicht schlecht, wenn man das ganze Gehampel per Script / Autoit erledigen könnte.

bis dann
IXUS 970 IS 100b
Belichter
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 170
Bilder: 11
Registriert: 21.05.2009, 09:21
Wohnort: Solingen
Kamera(s): ixus 970 IS 100b

Re: LibUSB für PTP

Beitragvon TaiJiGong » 17.01.2011, 23:17

Hallo Belichter,

msl hat geschrieben:
Ich vermute, du möchtest per CameraWindow die Fotos von der Kamera herunterladen
Ja, dass finde ich sehr praktisch, aber mal sehen was mit PTP so alles gehen wird.


Das geht mit PTP, wenn du ptpcam ohne die Option "--chdk" aufrufst.

USAGE: ptpcam [OPTION]

Options:
--bus=BUS-NUMBER USB bus number
--dev=DEV-NUMBER USB assigned device number
-r, --reset Reset the device
-l, --list-devices List all PTP devices
-i, --info Show device info
-o, --list-operations List supported operations
-p, --list-properties List all PTP device properties
(e.g. focus mode, focus distance, etc.)
-s, --show-property=NUMBER Display property details (or set its value,
if used in conjunction with --val)
--set-property=NUMBER Set property value (--val required)
--set=PROP-NAME Set property by name (abbreviations allowed)
--val=VALUE Property value (numeric for --set-property and
string or numeric for --set)
--show-all-properties Show all properties values
--show-unknown-properties Show unknown properties values
-L, --list-files List all files
-g, --get-file=HANDLE Get file by given handler
-G, --get-all-files Get all files
--overwrite Force file overwrite while savingto disk
-d, --delete-object=HANDLE Delete object (file) by given handle
-D, --delete-all-files Delete all files form camera
-c, --capture Initiate capture
--nikon-ic, --nic Initiate Nikon Direct Capture (no download!)
--nikon-dc, --ndc Initiate Nikon Direct Capture and download
--loop-capture=N Perform N times capture/get/delete
-f, --force Talk to non PTP devices
-v, --verbose Be verbose (print more debug)
-h, --help Print this help message
--chdk[=command] CHDK mode. Interactive shell unless optional
command is given. Run interactive shell and
press 'h' for a list of commands.


>ptpcam -G

Download aller Bilder (JPG) von der Kammera. Geht zumindest mit LINUX.

Viele Grüße,
TaiJiGong
Canon IXUS 100 (SD780) Firmware: 1.00C, sonst nur rein mechanische Kameras wie Pentax-MX
TaiJiGong
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 320
Registriert: 08.04.2010, 20:10
Wohnort: München
Kamera(s): IXUS100is, 100c
IXUS IIs (etwas defekt ohne CHDK)

Re: LibUSB für PTP

Beitragvon Belichter » 18.01.2011, 19:08

Hallo,
TaiJiGong hat geschrieben:>ptpcam -G

Download aller Bilder (JPG) von der Kammera. Geht zumindest mit LINUX.


unter Windows erhalte ich eine Liste
Listing files...
Camera: Canon DIGITAL IXUS 970 IS
Handler: Size: Captured: name:
0x04b49061: 5340552 2010-12-13 10:32 IMG_2310.JPG
0x04b49071: 3477713 2010-12-13 10:32 IMG_2311.JPG
0x04b49081: 3863291 2010-12-13 10:33 IMG_2312.JPG
0x04b49091: 4357547 2010-12-13 10:34 IMG_2313.JPG
...

Download geht nicht,
aber das ist ja schon mal ein Anfang.
weiss jemand was der Handler bedeutet? wofür wird der kameraintern verwendet? wie ein handle?

das was ich am Original Tool gut finde:
1. es werden nur die neu hinzugekommenen runtergeladen.
2. es wird datumsmäßig in eine Struktur einsortiert
IXUS 970 IS 100b
Belichter
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 170
Bilder: 11
Registriert: 21.05.2009, 09:21
Wohnort: Solingen
Kamera(s): ixus 970 IS 100b

Re: LibUSB für PTP

Beitragvon TaiJiGong » 19.01.2011, 09:45

Hallo Belichter,
weiss jemand was der Handler bedeutet? wofür wird der kameraintern verwendet? wie ein handle?

Ich habe hierzu ein Beispiel erstellt.
Viele Grüße,
TaiJiGong
Canon IXUS 100 (SD780) Firmware: 1.00C, sonst nur rein mechanische Kameras wie Pentax-MX
TaiJiGong
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 320
Registriert: 08.04.2010, 20:10
Wohnort: München
Kamera(s): IXUS100is, 100c
IXUS IIs (etwas defekt ohne CHDK)

Re: LibUSB für PTP

Beitragvon Belichter » 30.01.2011, 16:42

Hallo zusammen,

wie bekomme ich LibUSB für PTP und die Standard-USB-Installation für die Kamera unter einen Hut.

Von Microsoft gibts devcon.exe, ein vollständiger Ersatz für den Gerätemanager, aber batchfähig.
Damit geht das grundsätzlich.
Es gibt aber noch Klärungsbedarf.

Zunächst:
Die Devcon-Kommandos habe ich auch unter AutoIT ausprobiert.
Die funktionieren aber nur, wenn man #RequireAdmin verwendet, wobei man dann auch immer die UAC abnicken muß.
Geht das auch anders?

Im Weiteren mal die Abläufe / Vorgehensweisen mit (knappen) Erläuterungen.
Über weitere Hinweise würde ich mich freuen.

einmalig nötig:
LibUSB-Treiber mit INF-Wizard installieren ...
IXUS auswählen...
speichern...
install now...
UAC ... zulassen ...
Treiber trotzdem installieren...
installing... dauert länger
Gerätemanager (falls sichtbar) flackert mehrfach, dann ist der Standard-Eintrag unter 'Tragbare Geräte' weg und unter 'LibUSB-Windows32 Devices'
neu dazugekommen.
PTPCamGUI startet, findet die Kamera - successfull - aber der KameraBildschirm bleibt dunkel!
Code: Alles auswählen
** init() start ...
>> version << ptpcam: 0.2
camera: 0.2 (Length: 24)
>> script-support << script-support:1 (Length: 16)
>> luar get_buildinfo().platform << ixus970_sd890 (Length: 13)
>> luar get_buildinfo().version << CHDK-DE (Length: 7)
DE=True
>> luar get_buildinfo().build_number << 1.1.0-563 (Length: 9)
** init() successful

; ein shoot geht in eine Endlosschleife.
>> luar get_mode() << false (Length: 5)

oder wie folgt...
Code: Alles auswählen
** init() start ...
>> version << ptpcam: 0.2
camera: 0.2 (Length: 24)>> lua shoot() << error: couldn't connect to camera. (Length: 34)
>> luar get_mode() << false (Length: 5)
>> mode 1 <<  (Length: 0)
>> luar get_mode() << false (Length: 5)
>> luar get_mode() << false (Length: 5)
>> luar get_mode() << false (Length: 5)
>> luar get_mode() << false (Length: 5)
>> luar get_mode() << false (Length: 5)
>> luar get_mode() << false (Length: 5)
>> luar get_mode() << false (Length: 5)
>> luar get_mode() << error: couldn't connect to camera. (Length: 34)

>> script-support << script-support:1 (Length: 16)
>> luar get_buildinfo().platform << ixus970_sd890 (Length: 13)
>> luar get_buildinfo().version << CHDK-DE (Length: 7)
DE=True
>> luar get_buildinfo().build_number << 1.1.0-563 (Length: 9)
** init() successful

ist aber dann nicht betriebsbereit.

es hilft nur noch "Akku raus"
Kamera neu einschalten;GUI starten;
geht wie Schmitt's Katze.

Also: nur das ERSTE Starten der GUI (nach Treiberinstallation) darf(muss) nach KameraNEUStart erfolgen.
danach gehts immer.

Devcon Anzeige:
C:\Users\rl\Desktop\DPInstTest\AIDevCon>devcon status *3173
USB\VID_04A9&PID_3173\188188DA16A6450683341C473EA4E001
Name: Canon DIGITAL IXUS 970 IS
Driver is running.
1 matching device(s) found.

C:\Users\rl\Desktop\DPInstTest\AIDevCon>devcon driverfiles *3173
USB\VID_04A9&PID_3173\188188DA16A6450683341C473EA4E001
Name: Canon DIGITAL IXUS 970 IS
Driver installed from C:\Windows\INF\oem54.inf [LIBUSB_WIN32_DEV.NT]. 2 file(s) used by driver:
C:\Windows\system32\drivers\libusb0.sys
C:\Windows\system32\libusb0.dll
1 matching device(s) found.


Jetzt bin ich fertig mit PTP und entferne libusb-Treiber:

C:\Users\rl\Desktop\DPInstTest\AIDevCon>devcon remove *PID_3173*
USB\VID_04A9&PID_3173\188188DA16A6450683341C473EA4E001 : Removed
1 device(s) were removed.


schmeisst den libUSB Treiber wieder raus. (Die Kamera geht aus - praktisch, geht leider nicht immer aus)

Kamera einschalten.

Schwupps - gibts unter 'Tragbare Geräte' wieder meine Kamera. "Canon Utilities CameraWindow DC" startet sofort automatisch.
Camerawindow beenden.

Jetzt kann ich sofort mit:

C:\Users\rl\Desktop\DPInstTest\AIDevCon>devcon install C:\Windows\INF\oem54.inf "USB\VID_04A9&PID_3173"
Device node created. Install is complete when drivers are installed...
Updating drivers for USB\VID_04A9&PID_3173 from C:\Windows\INF\oem54.inf.
Drivers installed successfully.


den LibUSB-Treiber wieder installieren.
Kamera aus, wieder an, geht alles.

Merkwürdig! Jetzt zeigt Devcon (und der Gerätemanager) beim STATUS zwei Devices ROOT\... und USB\...
funktioniert trotzdem alles. \TODO

C:\Users\rl\Desktop\DPInstTest\AIDevCon>devcon status *3173
ROOT\LIBUSB-WIN32_DEVICES\0000
Name: Canon DIGITAL IXUS 970 IS
Driver is running.
USB\VID_04A9&PID_3173\188188DA16A6450683341C473EA4E001
Name: Canon DIGITAL IXUS 970 IS
Driver is running.
2 matching device(s) found.

C:\Users\rl\Desktop\DPInstTest\AIDevCon>devcon driverfiles *3173
ROOT\LIBUSB-WIN32_DEVICES\0000
Name: Canon DIGITAL IXUS 970 IS
Driver installed from C:\Windows\INF\oem54.inf [LIBUSB_WIN32_DEV.NT]. 2 file(s) used by driver:
C:\Windows\system32\drivers\libusb0.sys
C:\Windows\system32\libusb0.dll
1 matching device(s) found.


Das ROOT\...-Device bleibt im Gerätemanager stehen, auch wenn die Kamera aus ist.
Und läßt sich entfernen (bei Kamera aus):

C:\Users\rl\Desktop\DPInstTest\AIDevCon>devcon remove *PID_3173*
ROOT\LIBUSB-WIN32_DEVICES\0000 : Removed
1 device(s) were removed.


Schaltet man die Kamera ein ist das USB\...-Device immer noch da und funktioniert.
Ein zweites remove löscht auch dieses Device wie erwartet.


Zunächst mal gehen die Abläufe mehr oder weniger automatisch.
Im Detail werde ich das mal verfolgen.
Ich kann mir zwei Vorgehensweisen vorstellen:

1. aus der GUI wird devcon völlig transparent aufgerufen.
Beim Start libUSB-Treiber installieren, beim Beenden wieder deinstallieren.
oder
2. Vor- / Nachgeschaltete Batchaufrufe

bis dann
IXUS 970 IS 100b
Belichter
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 170
Bilder: 11
Registriert: 21.05.2009, 09:21
Wohnort: Solingen
Kamera(s): ixus 970 IS 100b

Re: LibUSB für PTP

Beitragvon msl » 30.01.2011, 22:31

Hallo Belichter,

vielen Dank für deine Analyse und dem Test mit devcon.exe.

Prinzipiell scheint es so möglich zu sein, eine Art Umschaltung der verwendeten Treiber zu organisieren. Wenn sich das Muster verallgemeinern lässt, bietet sich eine Batch- oder GUI-Lösung für alle an.

Gruß msl
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4567
Bilder: 271
Registriert: 22.02.2008, 11:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a


Zurück zu Installation (Integration)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste