Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cameras inconsistently get stuck on "Capturing frame #..." when tethered and triggerred using sigkill #688

Open
bkapadia01 opened this issue Jul 23, 2021 · 28 comments
Assignees
Labels
Canon tagging canon reports

Comments

@bkapadia01
Copy link

Describe the bug

We have 2 cameras that are tethered and we're using KILL SIGUSR PID# to trigger the of capture image and download the image.
We have recently noticed that either one or both cameras get stuck on "Capturing frame #.." for period of time after which the camera begins accepting trigger signals again but eventually get stuck again.

We had this working before without any issues but now we are consistently seeing the issue and easily reproducible.

Name the camera
x2 Canon EOS 5DS R

libgphoto2 and gphoto2 version
This version of gphoto2 is using the following software versions and options:
gphoto2 2.5.27
libgphoto2 2.5.27
libgphoto2_port 0.12.0
Using MacOS 11.5

To Reproduce
Steps to reproduce the behavior:
Setup tethering to both cameras and retrieve the PIDs of each of the cameras.
Every few seconds send a sigkill signal to both of the cameras.

see below for after Capturing frame #47...

New file is in location /capt0041.cr2 on the camera
Saving file as 042-BOT_2021-07-22_21-59-59.cr2
Deleting file /capt0041.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #46...
New file is in location /capt0042.cr2 on the camera
Saving file as 043-BOT_2021-07-22_22-00-14.cr2
Deleting file /capt0042.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #47...
ERROR: Could not capture image.
ERROR: Could not capture.
Awakened by SIGUSR1...
Capturing frame #48...
New file is in location /capt0043.cr2 on the camera
Saving file as 044-BOT_2021-07-22_22-01-59.cr2```
@vepicurean
Copy link

Some additional info. It's easy to reproduce this strange behaviour. If people are trying to reproduce this behaviour, please make sure to use a non-Canon prime lens (35mm or 50mm) first. The strange behaviour with the Capturing Frame # will show up within the first 10 captures 80% of the time. Then use a Canon lens and see if it happens the same.

I don't have any Canon lenses as the Sigma ART prime lens picture quality is far better than Canon's expensive prime lenses. Picture quality is the most important thing for me.

@msmeissn msmeissn added the Canon tagging canon reports label Jul 23, 2021
@msmeissn
Copy link
Contributor

i currently just have canon kit lenses for my EOS. perhaps someone else has?

would be nice to have a debuglogfile, not sure if it will help though

@vepicurean
Copy link

i currently just have canon kit lenses for my EOS. perhaps someone else has?

would be nice to have a debuglogfile, not sure if it will help though

If you can try to duplicate with the Canon lens, it would be appreciated. I'll get you my debuglogfile from my experiments with the Sigma lens. Will send later today. Thanks.

@vepicurean
Copy link

vepicurean commented Jul 24, 2021

More info. I borrowed some old Canon zoom lenses and ran experiments today. Using the best long (15ft) USB3 cables (with boosters) that money can buy, I was able to get the same strange "Capturing frame #" stalling behavior on the two Canon 5DS R camera bodies. Same as with the Sigma ART lenses. Make sure you focus the lenses and run the camera and the lenses both on manual mode once you have the lenses in focus. We're using a mirror lockup setting of 1/8secs on the capture. And we're running the camera without SD cards, so we capture, rename and download the renamed image RAW file, the delete the current image RAW capture file from the camera memory, then wait for the next SIGKILL command.

Same behaviour....... Within the first ten captures, it's intermittent, but both camera bodies stalled/paused on the "Capturing Frame #". Then a minute (random amount of time) later it releases, and then you may be good for another 10 or so captures, but eventually the "Capturing Frame #" stall comes back.

IMG_20210723_212911

IMG_20210723_213428

This never happened before the last two days, with this exact same equipment (though before I had seen the stalls with Sigma 50mm prime lenses, and that's why I was forced to only use Sigma 35mm prime lens which were stable up til two days ago).

Something seems to impact the camera body on the SIGKILL as I notice sometimes the mirror will stay up. I hear the mirror come back down several seconds after you expect it to. Maybe it's the mirror staying up too long that causes this intermittent behaviour.

Tomorrow we'll run these same experiments with both the SIGMA and Canon lenses with the ghoto2 debug logfile on and send the logs. But I wanted to share this Canon experiment results. Very frustrating as I was sure it was the Sigma lens vs Canon camera body issue happening, which causes other failures, but I know how to get around that issue. This failure with gphoto2 and the capture image and download tether, the intermittent behaviour is tough to understand..... It should be a very stable, repeatable process that can run for hours without a hiccup.

I have seen it run in a stable repeatable manner with no problems up until two days ago. That's why I wanted to use a tether as I thought it would be easier on the Canon camera body in terms of the processing requirements. But now that I see it behave exactly the same with the intermittent stalling behaviour the same regardless of whether using the Sigma vs Canon lenses, it's back to seeing if we have an efficiency situation or code logic issue with gphoto.

I noticed that others have had similar issues with the --capture image and download parameter? For example gphoto/gphoto2#143 that no one seemed to resolve. And this speed issue #367 that was raised regarding capture image and download also might be onto something, though we are using a very powerful Mac computer to run gphoto. Computing power is not an issue in our setup, other than the Canon 5DS Rs themselves, the fact we're dealing with RAW files, and the cable length (15 to 30 feet using high performance USB3 cables with boosters. Transmission power and speed via the USB3 cables does not appear to an issue.... other processes over these USB3 cables over work near instantaneously.)

Note: When I time the camera shutter click/trigger to the time the RAW file is fully downloaded to the storage disk on the Mac, it's less than 2 to 2.5 seconds. That trigger shutter, capture image and download to computer process, provided it's working as it should, is extremely quick.

@vepicurean
Copy link

vepicurean commented Jul 26, 2021

Hi:

Here's a debug logfiile that we put together. Let us know if we should put anything else together to see if we can figure out why this is happening on both of the Canon 5DS Rs with the capture and download tether and SIGKILL method. I've seen this setup work flawlessly previously for hours before, so it's got to be a specific variable that is applicable to both of these 5DS R cameras causing the "capturing frame" instability and freezing.

(Debug session 1) https://drive.google.com/file/d/1NqF6jHxtFZJMNii3biEGt_F6hEusBi9G/view?usp=sharing

(Debug session 2) https://drive.google.com/file/d/1aAiSlwYdkgWRt3USzBQ-vlDx8isK8Qef/view?usp=sharing

Thanks for the help. Appreciated.

@vepicurean
Copy link

Still no change on this. gphoto and the cameras continue to behave the some way with the tether and we get the "Capturing Frame" failure intermittently every few captures.

Thanks for any suggestions on this.

@vepicurean
Copy link

vepicurean commented Aug 17, 2021

I figured out that using the gphoto2 --capture-image-and-download -interval 1 causes the freezing behavior on the cameras. I can recreate this anytime on our Canon EOS RDS R cameras.

It seems to have something to do with the deleting of the files and needing to be awakened by the -SIGUSR1 command.

--capture-tethered works perfectly. But the issue is I have to walk over to the cameras to trigger them with this --capture-tethered way of doing things.... As stable as it is, it's of no practical use to us (maybe I'm missing how to trigger the capture via a command when using --capture-tethered).

What is an alternative way to set up a stable tether similar to --capture-tethered and be able to trigger the camera, then download the captured image right away to the attached computer from a gphoto or Unix/Linux command using command line like the -SIGUSR1 process?

Capture-image-and-download is not available to us as it freezes all our Canon EOS RDS R cameras. Seems others have had issues with the --capture-image-and-download as well not being able to capture images in a stable manner (freezing the Canon camera in some way so that it can't function).

Thanks for your help and time.

Note: We are very familiar with the -capture-tethered parameter and know how stable it is. We used it for years with the EOS RDS R camera via a remote trigger/capture cable running to the cameras and programmatically controlled by relay switches. I had thought the --capture image and download parameter had finally enabled us to do away with the dedicated remote trigger cables controlled by the relay switches. I had no idea that the cameras were having issues with the --capture-image-and-download process in gphoto.

Hopefully there is a way to use the proven, stable --capture-tethered parameter process and programmatically trigger a remote capture and image download via gphoto (from the computer using gphoto, similar to the remote trigger purpose the SIGUSR1 signal serves if the --capture-image-and-download was working without freezing the cameras)

@vepicurean
Copy link

Would it make sense to go back to the previous version of gphoto2 ( libgphoto2 2.5.26 and gphoto2 2.5.26) to solve/fix this issue with the --capture-image-and-download ??

It was working before using capture-image-and-download, so I'm hoping going back to the previous version will solve the issue?

@msmeissn msmeissn self-assigned this Aug 18, 2021
@msmeissn
Copy link
Contributor

One thing to try:

Can you go to library.c and add for your EOS R line
{"Canon:EOS R", 0x04a9, 0x32da, PTP_CAP|PTP_CAP_PREVIEW|PTP_DONT_CLOSE_SESSION},

The additional flag PTPBUG_DELETE_SENDS_EVENT, like this:

    {"Canon:EOS R",                         0x04a9, 0x32da, PTP_CAP|PTP_CAP_PREVIEW|PTP_DONT_CLOSE_SESSION|PTPBUG_DELETE_SENDS_EVENT},

(if you have R5 or R6, adjust that line)

@vepicurean
Copy link

Thanks. We will edit the it on the test environment and see how that helps.

We have Canon 5DS R camera bodies. Not the mirrorless cameras (R5, R6). How do we write the syntax that line of code in library.c for the 5DS R camera body?

Thanks for your help and time.

@msmeissn
Copy link
Contributor

just append this flag to the respective line of your camera
|PTPBUG_DELETE_SENDS_EVENT

@vepicurean
Copy link

vepicurean commented Aug 19, 2021

I see. Thanks.

Is this additional code targeted at fixing the freezing we are seeing when using --capture-image-and-download parameter?

Were you able to test this new code for the 5DS R on your test setup already with the --capture-image-and-download interval -1 parameter? If just want to understand if we're testing this code setup for --capture-image-and-download internval -1 parameter for the first time on a 5DS R or not.

Also, I just want to be clear on what code and what process you are asking us to edit and do (so we don't completely mess things up).

  1. We need to clone the gphoto2 repository on GitHub.

  2. Edit/amend the appropriate line for the EOS RDS R camera in the library.c file in the camlibs/ptp2/ folder with |PTPBUG_DELETE_SENDS_EVENT

https://github.com/gphoto/libgphoto2/blob/1d99c323d31caec93424078b44fc8a7d07a7421f/camlibs/ptp2/library.c

image

  1. Then compile for MacOS from the edited source code?

Thanks for your help and time.

@vepicurean
Copy link

vepicurean commented Aug 21, 2021

Before I mess with they gphoto code... I've noticed that Terminal and MacOS 11.XX may not be stable (even scrolling through the previous gphoto2 commands in Terminal there is this strange delay within Terminal all of a sudden, like it's looking for something. Usually scrolling through previous commands is lightning quick). Especially for gphoto related commands and bash scripts that utilize gphoto commands, which we use bash scripts extensively for our gphoto related apps (these apps using the bash scripts used to work perfectly, now they are almost unusable).

Has anyone else noticed that Terminal behaves in an unstable manner on MacOS 11.XX?

I have also seen some people complaining about about Terminal not working on MacOS 11.XX. Maybe Apple did not fix Terminal on MacOS 11 (Big Sur). I would not be surprised if this is the case. Apple has some issues these days.

@vepicurean
Copy link

vepicurean commented Aug 21, 2021

Something is not right (maybe it's something we've done wrong) with either Terminal on the MacOS platform, or it's gphoto2 and Terminal on the MacOS platform.

To see if the issue was isolated to the iMac and MacOS 11 or not, I got out the Mac laptop that has MacOS 10.15.7 running on it. I know this Mac laptop runs perfectly.

Installed gphoto2 using Homebrew which is at gphoto2 version 2.5.27

Manually set up a --capture-image-and download --interval -1 session. Right away I knew it would fail as you can see just from the first capture that --capture-image-and-download --interval -1 acts very differently on the Macs as we're seeing these days (vs the Linux computer where gPhoto2 remains stable when using --capture-image-and-download --interval -1 ).

I'm at a loss. Gphoto was working just fine on the Macs up until about a month ago when everything associated with gphoto2 based on --capture-image-and-download on the Macs became unstable.

You can see here just a couple shots in, and the whole "capture image and download" session fails.

Screen Shot 2021-08-21 at 5 30 46 PM

Note: A tip I saw from someone else experiencing the same issue with --capture-image-and-download a while back said run --capture-image-and-download using sudo - which I tested out. Using sudo is more or less the same.... after a few captures, the Terminal prompt becomes brutally slow, and it's clear the camera and the Mac are not communicating... eventually the "Could not capture image" message shows up in the Terminal window.

I'm wondering is gPhoto2 on MacOS is stable or not? On Linux gphoto2 behaves very differently (very stable @ v2.5.16 on Linux) with these same Canon EOS 5DS R cameras vs what I see on MacOS right now. Up until a month ago, the Linux gphoto2 performance and the MacOS gphoto2 performance were essentially equal.

@vepicurean
Copy link

vepicurean commented Aug 23, 2021

I got out another of the Macs with MacOS 11.5 on it.

Installed everything from scratch.

Made the edits to the code for the 5DS R camera, and executed the build from source procedure for libgphoto2 which seems to install as it should, but it's hard to check if it installed properly.

Got to the gphoto2 build from source, but that generates the following errors.

Making check in gphoto-m4
make[1]: Nothing to be done for `check'.
Making check in contrib
make[1]: Nothing to be done for `check'.
Making check in doc
make[1]: Nothing to be done for `check'.
Making check in gphoto2
gcc -DHAVE_CONFIG_H -I. -I..  -DLOCALEDIR=\"/Users/t2tresearch/.local/share/locale\" -D_GPHOTO2_INTERNAL_CODE  -I.. -I../gphoto2 -I/usr/local/include/gphoto2 -I/usr/local/Cellar/libexif/0.6.22/include -I/usr/local/include/gphoto2 -DLOCALEDIR=\"/Users/t2tresearch/.local/share/locale\" -D_GPHOTO2_INTERNAL_CODE    -I/usr/local/Cellar/libexif/0.6.22/include  -I/usr/local/Cellar/popt/1.18/include -g -O2 -Wall -Wmissing-declarations -Wmissing-prototypes -g -MT gphoto2-shell.o -MD -MP -MF .deps/gphoto2-shell.Tpo -c -o gphoto2-shell.o `test -f 'shell.c' || echo './'`shell.c
shell.c:422:21: error: implicit declaration of function 'rl_copy_text' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
                current = strdup (rl_copy_text (0, end));
                                  ^
shell.c:422:21: note: did you mean 'rl_kill_text'?
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/readline/history.h:210:7: note: 'rl_kill_text' declared here
int              rl_kill_text(int, int);
                 ^
shell.c:422:21: warning: incompatible integer to pointer conversion passing 'int' to parameter of type 'const char *' [-Wint-conversion]
                current = strdup (rl_copy_text (0, end));
                                  ^~~~~~~~~~~~~~~~~~~~~
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/string.h:117:26: note: passing argument to parameter '__s1' here
char    *strdup(const char *__s1);
                            ^
1 warning and 1 error generated.
make[1]: *** [gphoto2-shell.o] Error 1
make: *** [check-recursive] Error 1

Not sure what to do at this point with the errors for "make" during the build of gphoto2 command line interface. Any suggestions to fix this are welcome. Thanks for your help and time.

@msmeissn
Copy link
Contributor

this is readline-devel not the right version... or something is too new? hmm.

@msmeissn
Copy link
Contributor

i do not have such an EOS camera, i have some "lower end" EOS ones...

It is something I would like to try out, as we saw it earlier that Canon cameras got stuck due to interrupt delivery issues and this flag helped.

as for stability on MacOS, so far it seems on-par with Linux... Have not heard complaints lately.

@vepicurean
Copy link

vepicurean commented Aug 23, 2021

this is readline-devel not the right version... or something is too new? hmm.

I'm not sure what you mean on the "readline-devel" not the right version?? Sorry for not understanding. But there is obviously something wrong related to the readline program which was installed by the brew package manager on this new Mac. As you know, readline is needed to as a dependency for gphoto2.

I followed these instructions here for building gphoto2

Screen Shot 2021-08-23 at 4 01 56 PM

There is no popt-devel, etc for the brew package manager on MacOS (just install for popt library on brew package manager). But from reading the messages during the gphoto2 build process, popt seems OK.

How do you tell if libgphoto2 is install OK?

Here's what I'm getting from the ./configure output

Configuration (gphoto2 2.5.27.1):

  Build
    Source code location:          .
    Compiler:                      gcc

  Features
    Use translations:              yes
    pthread support:               yes (-lpthread)
    Interactive config support:    no (http://dickey.his.com/cdk/cdk.html)
    JPEG support:                  no
    Text preview support:          no (http://www.sourceforge.net/projects/aa-project)
    **Readline support:              yes (doesn't require explicit -lncurses)**

You may run "make" and "make install" now.

Here's what I'm getting from the "make check". There is one error that people have seen before when building gphoto2. Something to do with the readline.

T2T-M3s-Mac-Pro:gphoto2 t2tresearch$ make check
Making check in gphoto-m4
make[1]: Nothing to be done for `check'.
Making check in contrib
make[1]: Nothing to be done for `check'.
Making check in doc
make[1]: Nothing to be done for `check'.
Making check in gphoto2
gcc -DHAVE_CONFIG_H -I. -I..  -DLOCALEDIR=\"/Users/t2tresearch/.local/share/locale\" -D_GPHOTO2_INTERNAL_CODE  -I.. -I../gphoto2 -I/usr/local/include/gphoto2 -I/usr/local/Cellar/libexif/0.6.22/include -I/usr/local/include/gphoto2 -DLOCALEDIR=\"/Users/t2tresearch/.local/share/locale\" -D_GPHOTO2_INTERNAL_CODE    -I/usr/local/Cellar/libexif/0.6.22/include  -I/usr/local/Cellar/popt/1.18/include -g -O2 -Wall -Wmissing-declarations -Wmissing-prototypes -g -MT gphoto2-shell.o -MD -MP -MF .deps/gphoto2-shell.Tpo -c -o gphoto2-shell.o `test -f 'shell.c' || echo './'`shell.c
shell.c:422:21: **error: implicit declaration of function 'rl_copy_text' is invalid in C99 [-Werror,-Wimplicit-function-declaration]**
                current = strdup (rl_copy_text (0, end));
                                  ^
shell.c:422:21: note: did you mean 'rl_kill_text'?
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/readline/history.h:210:7: note: 'rl_kill_text' declared here
int              rl_kill_text(int, int);
                 ^
shell.c:422:21: warning: incompatible integer to pointer conversion passing 'int' to parameter of type 'const char *' [-Wint-conversion]
                current = strdup (rl_copy_text (0, end));
                                  ^~~~~~~~~~~~~~~~~~~~~
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/string.h:117:26: note: passing argument to parameter '__s1' here
char    *strdup(const char *__s1);
                            ^
1 warning and 1 error generated.
make[1]: *** [gphoto2-shell.o] Error 1
make: *** [check-recursive] Error 1

If we can fix this error about the "implicit declaration of function "rl_copy_text" is invalid in C99" then I believe we can get gphoto2 to build properly, and get this new code in libgphoto2 linked to gphoto2. Then it's a quick test to see if this new code in libgphoto2 fixes the issue with --capture-image-and-download parameter

Here's the config.log

config.log

Thanks for your help and time.

Question: Do you think it will just be easier to go back to an old version of gphoto2 managed on the Macs via the brew package manager such as gphoto2 2.5.16, etc? Building gphoto2 and libghoto2 from the source code in GitHub (GitHub clone method) is time consuming with the issues and lack of up-to-date documentation on how build and compile successfully.

@vepicurean
Copy link

vepicurean commented Aug 23, 2021

i do not have such an EOS camera, i have some "lower end" EOS ones...

It is something I would like to try out, as we saw it earlier that Canon cameras got stuck due to interrupt delivery issues and this flag helped.

as for stability on MacOS, so far it seems on-par with Linux... Have not heard complaints lately.

I have used --capture-image-and-download on the newer EOS 5DS R and also the much older (mid 2000s) Canon EOS 5D Mark II (Mark 2). A month ago capture-image-and-download was working the same on both the newer EOS 5DS Rs and older 5D Mark II cameras. No difference. All the cameras were very stable when we moved to --capture-image-and-download vs --capture-tethered which I know the SIGMA lenses cause remote shutter and camera body instability issues (which is completely separate issue from this --capture-image-and-download issue). The Canon prime lenses work just fine (no instability based issue with the Canon lenses that I have ever observed.... the SIGMA vs Canon lenses and remote triggering based instability is a separate and very long story, I will explain to you under a different topic one day. I have more recent info on that situation that people should know about. Note that it's really not a remote triggering issue when using the SIGMA lenses, it's related to the proprietary interface between the lens and the camera body. But one of the symptoms is it can make remote triggering via the N3 connector unstable and erratic, and that shows in the PTP messaging in a way that makes you think something else is wrong. Cause and effect at work ).

Triggering the shutter remotely via capture-image-and-download using the -SIGUSR1 to trigger the cameras via USB3 was working just fine. I was actually very surprised and impressed how stable it was.

I don't know whether or not the MacOS brew package manager last month updated the version to the current 2.5.27 (from a previous version of gphoto2) which is/was the cause of the issues we're now seeing with --capture-image-and-download on all the Macs. It has nothing to do with MacOS 11 vs MacOS 10.15.7. gphoto2 is currently behaving erratically when using --capture-image-and-download parameter on multiple Macs that I have running gphoto2 2.5.27 which are managed via the brew package manager for MacOS.

Good to hear that you are seeing the same overall gphoto2 stability on MacOS as with Linux. I would expect that to be the case with Unix based open source programs.

I'm thinking somehow, something changed on gphoto2 that is impacting specifically capture-image-and-download on the Macs. But I'm at a loss what changed. And when I saw the same erratic behaviour when using --capture-image-and-download --interval -1 and the -SIGUSR1 signal when installing a fresh version of gphoto2 2.5.27 from the brew package manager on a completely different MacOS laptop running 10.15.7, I realized is was not something we had done to the Mac desktop.

@vepicurean
Copy link

vepicurean commented Aug 26, 2021

Update....

The situation with the 1 gphoto2 build error related to the readline program is the same. This issue looks like it's been around for a while, but none of the suggested previous work arounds are working for me.

Any useful (hopefully someone that has actually built gphoto2 from GitHub source successfully recently for their project) up-to-date info is welcome on how to get around this build error for gphoto2 related to the readline dependency.

Once I get by the gphoto2 build error, I can test the suggested bug fix for libgphoto2 for the --capture-image-and-download --interval -1 function. That will be quick to determine and I can share the results of the testing with everyone.

Also, I want to make clear that gphoto2 started acting strange on both our older 5D Mark 2 and our new 5DS Rs about a month ago on the Macs. We have multiple Macs that gphoto2 (libgphoto2) if I install 2.5.27 from the brew package manager on the Mac, and just connect the Mac to a Canon EOS camera via USB3 and use --capture-image-and-download --interval -1 with -SIGUSR -1, the capture process will fail almost immediately with this same strange "capturing frame" freezing behaviour. See above.

Thanks for your help and time.

@vepicurean
Copy link

vepicurean commented Aug 26, 2021

I used a third Mac to do this test. To make sure to rule out any individual Mac being the issue.

T2T-M3s-Mac-Pro:~ t2tresearch$ gphoto2 --version
gphoto2 2.5.26

Copyright (c) 2000-2020 Marcus Meissner and others

gphoto2 comes with NO WARRANTY, to the extent permitted by law. You may
redistribute copies of gphoto2 under the terms of the GNU General Public
License. For more information about these matters, see the files named COPYING.

This version of gphoto2 is using the following software versions and options:

gphoto2         2.5.26         clang, popt(m), no exif, no cdk, no aa, jpeg, readline
libgphoto2      2.5.27         standard camlibs, clang, ltdl, no EXIF
libgphoto2_port 0.12.0         iolibs: disk ptpip serial usb1, clang, ltdl, no EXIF, USB, serial without locking

I was able to install the previous version of gphoto2 2.5.26 using homebrew, but, from what I can tell it's using the libghoto2 2.5.27 that I built from source (I am not sure how to verify that). Note that I had to do this using Homebrew with gphoto2 to get around the build error issue I was experiencing with building gphoto2 from source.

See the results of a capture session I just did. I don't see much different in behaviour since we started having issues with the --capture-image-and-download function

Note: I was able to duplicate this on two different Canon 5DS R cameras, just to rule out any individual camera. If it's using libgphoto2 2.5.27 built from source, then then the addition of the PTPBUG_DELETE_SENDS_EVENT did not help.

The freezing on "capturing frame" still occurs intermittently. A month ago this was as stable as could be. I was surprised how stable it was.

T2T-M3s-Mac-Pro:gphoto_test_images t2tresearch$ gphoto2 --capture-image-and-download --interval -1
Standing by waiting for SIGUSR1 to capture.                                    
Capturing frame #1...
New file is in location /capt0000.cr2 on the camera
File capt0000.cr2 exists. Overwrite? [y|n] y
Saving file as capt0000.cr2
Deleting file /capt0000.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #2...
New file is in location /capt0001.cr2 on the camera
Saving file as capt0001.cr2
Deleting file /capt0001.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #3...
New file is in location /capt0002.cr2 on the camera
Saving file as capt0002.cr2
Deleting file /capt0002.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #4...
New file is in location /capt0003.cr2 on the camera
Saving file as capt0003.cr2
Deleting file /capt0003.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #5...
New file is in location /capt0004.cr2 on the camera
Saving file as capt0004.cr2
Deleting file /capt0004.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #6...
New file is in location /capt0005.cr2 on the camera
Saving file as capt0005.cr2
Deleting file /capt0005.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #7...
New file is in location /capt0006.cr2 on the camera
Saving file as capt0006.cr2
Deleting file /capt0006.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #8...
New file is in location /capt0007.cr2 on the camera
Saving file as capt0007.cr2
Deleting file /capt0007.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #9...
ERROR: Could not capture image.
ERROR: Could not capture.
Awakened by SIGUSR1...
Capturing frame #10...
New file is in location /capt0008.cr2 on the camera
Saving file as capt0008.cr2
Deleting file /capt0008.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #11...
ERROR: Could not capture image.
ERROR: Could not capture.
Awakened by SIGUSR1...
Capturing frame #12...
^[[ANew file is in location /capt0009.cr2 on the camera
Saving file as capt0009.cr2
Deleting file /capt0009.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #13...
New file is in location /capt0010.cr2 on the camera
Saving file as capt0010.cr2
Deleting file /capt0010.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #14...
New file is in location /capt0011.cr2 on the camera
Saving file as capt0011.cr2
Deleting file /capt0011.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #15...
New file is in location /capt0012.cr2 on the camera
Saving file as capt0012.cr2
Deleting file /capt0012.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #16...
New file is in location /capt0013.cr2 on the camera
Saving file as capt0013.cr2
Deleting file /capt0013.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #17...
New file is in location /capt0014.cr2 on the camera
Saving file as capt0014.cr2
Deleting file /capt0014.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #18...
New file is in location /capt0015.cr2 on the camera
Saving file as capt0015.cr2
Deleting file /capt0015.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #19...
New file is in location /capt0016.cr2 on the camera
Saving file as capt0016.cr2
Deleting file /capt0016.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #20...
New file is in location /capt0017.cr2 on the camera
Saving file as capt0017.cr2
Deleting file /capt0017.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #21...
New file is in location /capt0018.cr2 on the camera
Saving file as capt0018.cr2
Deleting file /capt0018.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #22...
New file is in location /capt0019.cr2 on the camera
Saving file as capt0019.cr2
Deleting file /capt0019.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #23...
New file is in location /capt0020.cr2 on the camera
Saving file as capt0020.cr2
Deleting file /capt0020.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #24...
New file is in location /capt0021.cr2 on the camera
Saving file as capt0021.cr2
Deleting file /capt0021.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #25...
New file is in location /capt0022.cr2 on the camera
Saving file as capt0022.cr2
Deleting file /capt0022.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #26...
New file is in location /capt0023.cr2 on the camera
Saving file as capt0023.cr2
Deleting file /capt0023.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #27...
New file is in location /capt0024.cr2 on the camera
Saving file as capt0024.cr2
Deleting file /capt0024.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #28...
New file is in location /capt0025.cr2 on the camera
Saving file as capt0025.cr2
Deleting file /capt0025.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #29...
New file is in location /capt0026.cr2 on the camera
Saving file as capt0026.cr2
Deleting file /capt0026.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #30...
New file is in location /capt0027.cr2 on the camera
Saving file as capt0027.cr2
Deleting file /capt0027.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #31...
New file is in location /capt0028.cr2 on the camera
Saving file as capt0028.cr2
Deleting file /capt0028.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #32...
New file is in location /capt0029.cr2 on the camera
Saving file as capt0029.cr2
Deleting file /capt0029.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #33...
New file is in location /capt0030.cr2 on the camera
Saving file as capt0030.cr2
Deleting file /capt0030.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #34...
New file is in location /capt0031.cr2 on the camera
Saving file as capt0031.cr2
Deleting file /capt0031.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #35...
New file is in location /capt0032.cr2 on the camera
Saving file as capt0032.cr2
Deleting file /capt0032.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #36...
New file is in location /capt0033.cr2 on the camera
Saving file as capt0033.cr2
Deleting file /capt0033.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #37...
New file is in location /capt0034.cr2 on the camera
Saving file as capt0034.cr2
Deleting file /capt0034.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #38...
New file is in location /capt0035.cr2 on the camera
Saving file as capt0035.cr2
Deleting file /capt0035.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #39...
New file is in location /capt0036.cr2 on the camera
Saving file as capt0036.cr2
Deleting file /capt0036.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #40...
New file is in location /capt0037.cr2 on the camera
Saving file as capt0037.cr2
Deleting file /capt0037.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #41...
New file is in location /capt0038.cr2 on the camera
Saving file as capt0038.cr2
Deleting file /capt0038.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #42...
New file is in location /capt0039.cr2 on the camera
Saving file as capt0039.cr2
Deleting file /capt0039.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #43...
New file is in location /capt0040.cr2 on the camera
Saving file as capt0040.cr2
Deleting file /capt0040.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #44...
New file is in location /capt0041.cr2 on the camera
Saving file as capt0041.cr2
Deleting file /capt0041.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #45...
New file is in location /capt0042.cr2 on the camera
Saving file as capt0042.cr2
Deleting file /capt0042.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #46...
New file is in location /capt0043.cr2 on the camera
Saving file as capt0043.cr2
Deleting file /capt0043.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #47...
New file is in location /capt0044.cr2 on the camera
Saving file as capt0044.cr2
Deleting file /capt0044.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #48...
New file is in location /capt0045.cr2 on the camera
Saving file as capt0045.cr2
Deleting file /capt0045.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #49...
New file is in location /capt0046.cr2 on the camera
Saving file as capt0046.cr2
Deleting file /capt0046.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #50...
New file is in location /capt0047.cr2 on the camera
Saving file as capt0047.cr2
Deleting file /capt0047.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #51...
New file is in location /capt0048.cr2 on the camera
Saving file as capt0048.cr2
Deleting file /capt0048.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #52...
New file is in location /capt0049.cr2 on the camera
Saving file as capt0049.cr2
Deleting file /capt0049.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #53...
New file is in location /capt0050.cr2 on the camera
Saving file as capt0050.cr2
Deleting file /capt0050.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #54...
New file is in location /capt0051.cr2 on the camera
Saving file as capt0051.cr2
Deleting file /capt0051.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #55...
ERROR: Could not capture image.
ERROR: Could not capture.
Awakened by SIGUSR1...
Capturing frame #56...
New file is in location /capt0052.cr2 on the camera
Saving file as capt0052.cr2
Deleting file /capt0052.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #57...
New file is in location /capt0053.cr2 on the camera
Saving file as capt0053.cr2
Deleting file /capt0053.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #58...
New file is in location /capt0054.cr2 on the camera
Saving file as capt0054.cr2
Deleting file /capt0054.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #59...
New file is in location /capt0055.cr2 on the camera
Saving file as capt0055.cr2
Deleting file /capt0055.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #60...
New file is in location /capt0056.cr2 on the camera
Saving file as capt0056.cr2
Deleting file /capt0056.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #61...
New file is in location /capt0057.cr2 on the camera
Saving file as capt0057.cr2
Deleting file /capt0057.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #62...
New file is in location /capt0058.cr2 on the camera
Saving file as capt0058.cr2
Deleting file /capt0058.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #63...
ERROR: Could not capture image.
ERROR: Could not capture.
Awakened by SIGUSR1...
Capturing frame #64...
New file is in location /capt0059.cr2 on the camera
Saving file as capt0059.cr2
Deleting file /capt0059.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #65...
New file is in location /capt0060.cr2 on the camera
Saving file as capt0060.cr2
Deleting file /capt0060.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #66...
New file is in location /capt0061.cr2 on the camera
Saving file as capt0061.cr2
Deleting file /capt0061.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #67...
New file is in location /capt0062.cr2 on the camera
Saving file as capt0062.cr2
Deleting file /capt0062.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #68...
New file is in location /capt0063.cr2 on the camera
Saving file as capt0063.cr2
Deleting file /capt0063.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #69...
New file is in location /capt0064.cr2 on the camera
Saving file as capt0064.cr2
Deleting file /capt0064.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #70...
New file is in location /capt0065.cr2 on the camera
Saving file as capt0065.cr2
Deleting file /capt0065.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #71...
New file is in location /capt0066.cr2 on the camera
Saving file as capt0066.cr2
Deleting file /capt0066.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #72...
New file is in location /capt0067.cr2 on the camera
Saving file as capt0067.cr2
Deleting file /capt0067.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #73...
New file is in location /capt0068.cr2 on the camera
Saving file as capt0068.cr2
Deleting file /capt0068.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #74...
New file is in location /capt0069.cr2 on the camera
Saving file as capt0069.cr2
Deleting file /capt0069.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #75...
New file is in location /capt0070.cr2 on the camera
Saving file as capt0070.cr2
Deleting file /capt0070.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #76...
New file is in location /capt0071.cr2 on the camera
Saving file as capt0071.cr2
Deleting file /capt0071.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #77...
New file is in location /capt0072.cr2 on the camera
Saving file as capt0072.cr2
Deleting file /capt0072.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #78...
New file is in location /capt0073.cr2 on the camera
Saving file as capt0073.cr2
Deleting file /capt0073.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #79...
New file is in location /capt0074.cr2 on the camera
Saving file as capt0074.cr2
Deleting file /capt0074.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #80...
New file is in location /capt0075.cr2 on the camera
Saving file as capt0075.cr2
Deleting file /capt0075.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #81...
New file is in location /capt0076.cr2 on the camera
Saving file as capt0076.cr2
Deleting file /capt0076.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #82...
New file is in location /capt0077.cr2 on the camera
Saving file as capt0077.cr2
Deleting file /capt0077.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #83...
ERROR: Could not capture image.
ERROR: Could not capture.

I am noticing that it may be something that is going on that is asking the camera to do something that is failing intermittently just before or during the "capturing frame #" event.

If we figure that out and why it happens on the Mac and not on Linux, then we can get things back as stable as it was before.

Anything you need me to try, please let me know. Now that I know how to get around the build error issues on gphoto2 using Homebrew, at least that part of things is not an obstacle anymore. I think I am able to edit the source code for libgphoto2 and build libghoto2 that successfully from what I've noticed. But it's hard to know if libgphoto2 is built and installed properly.

Sorry for so many notes. Also, we did a close observation today of the behaviour of the cameras themselves when receving the virtual shutter signal from Gphoto..... and it seems --capture-image-and-download does way more than --capture-tethered does. From the time I hit enter on kill -SIGUSR1 XXXX (the process ID for --capture-image-and-download) a lot seems to happen within the camera itself before it gets to attempt to "capture frame #" - We notice the time it takes for these various events to occur can vary.

We use the Canon 5DS Rs on manual mode (for the camera body) and manual mode on the lens. We don't need --capture-image-and-download to do anything other than virtually trigger the shutter. The lens is already in focus.

@vepicurean
Copy link

vepicurean commented Aug 26, 2021

I figured out what is causing the instability with --capture-image-and-download on these Canon 5DS Rs. Please correct me if I'm wrong.

The issue has to do with for some reason on the Mac's --capture-image-and-download --interval -1 only seems to be stable when I put the 5DS R camera body in automatic mode (Av) and the lens also in automatic mode.

See below. I switched the camera body to Automatic and the lens to automatic and this capture session is the result. No capture frame # freezes and no "could not capture image" events. I duplicated this on two different Macs.

T2T-M3s-Mac-Pro:gphoto_test_images t2tresearch$ gphoto2 --capture-image-and-download --interval -1
Standing by waiting for SIGUSR1 to capture.                                    
Capturing frame #1...
New file is in location /capt0000.cr2 on the camera
File capt0000.cr2 exists. Overwrite? [y|n] y
Saving file as capt0000.cr2
Deleting file /capt0000.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #2...
New file is in location /capt0001.cr2 on the camera
Saving file as capt0001.cr2
Deleting file /capt0001.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #3...
New file is in location /capt0002.cr2 on the camera
Saving file as capt0002.cr2
Deleting file /capt0002.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #4...
New file is in location /capt0003.cr2 on the camera
Saving file as capt0003.cr2
Deleting file /capt0003.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #5...
New file is in location /capt0004.cr2 on the camera
Saving file as capt0004.cr2
Deleting file /capt0004.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #6...
New file is in location /capt0005.cr2 on the camera
Saving file as capt0005.cr2
Deleting file /capt0005.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #7...
New file is in location /capt0006.cr2 on the camera
Saving file as capt0006.cr2
Deleting file /capt0006.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #8...
New file is in location /capt0007.cr2 on the camera
Saving file as capt0007.cr2
Deleting file /capt0007.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #9...
New file is in location /capt0008.cr2 on the camera
Saving file as capt0008.cr2
Deleting file /capt0008.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #10...
New file is in location /capt0009.cr2 on the camera
Saving file as capt0009.cr2
Deleting file /capt0009.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #11...
New file is in location /capt0010.cr2 on the camera
Saving file as capt0010.cr2
Deleting file /capt0010.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #12...
New file is in location /capt0011.cr2 on the camera
Saving file as capt0011.cr2
Deleting file /capt0011.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #13...
New file is in location /capt0012.cr2 on the camera
Saving file as capt0012.cr2
Deleting file /capt0012.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #14...
New file is in location /capt0013.cr2 on the camera
Saving file as capt0013.cr2
Deleting file /capt0013.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #15...
New file is in location /capt0014.cr2 on the camera
Saving file as capt0014.cr2
Deleting file /capt0014.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #16...
New file is in location /capt0015.cr2 on the camera
Saving file as capt0015.cr2
Deleting file /capt0015.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #17...
New file is in location /capt0016.cr2 on the camera
Saving file as capt0016.cr2
Deleting file /capt0016.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #18...
New file is in location /capt0017.cr2 on the camera
Saving file as capt0017.cr2
Deleting file /capt0017.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #19...
New file is in location /capt0018.cr2 on the camera
Saving file as capt0018.cr2
Deleting file /capt0018.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #20...
New file is in location /capt0019.cr2 on the camera
Saving file as capt0019.cr2
Deleting file /capt0019.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #21...
New file is in location /capt0020.cr2 on the camera
Saving file as capt0020.cr2
Deleting file /capt0020.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #22...
New file is in location /capt0021.cr2 on the camera
Saving file as capt0021.cr2
Deleting file /capt0021.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #23...
New file is in location /capt0022.cr2 on the camera
Saving file as capt0022.cr2
Deleting file /capt0022.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #24...
New file is in location /capt0023.cr2 on the camera
Saving file as capt0023.cr2
Deleting file /capt0023.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #25...
New file is in location /capt0024.cr2 on the camera
Saving file as capt0024.cr2
Deleting file /capt0024.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #26...
New file is in location /capt0025.cr2 on the camera
Saving file as capt0025.cr2
Deleting file /capt0025.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #27...
New file is in location /capt0026.cr2 on the camera
Saving file as capt0026.cr2
Deleting file /capt0026.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #28...
New file is in location /capt0027.cr2 on the camera
Saving file as capt0027.cr2
Deleting file /capt0027.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #29...
New file is in location /capt0028.cr2 on the camera
Saving file as capt0028.cr2
Deleting file /capt0028.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #30...
New file is in location /capt0029.cr2 on the camera
Saving file as capt0029.cr2
Deleting file /capt0029.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #31...
New file is in location /capt0030.cr2 on the camera
Saving file as capt0030.cr2
Deleting file /capt0030.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #32...
New file is in location /capt0031.cr2 on the camera
Saving file as capt0031.cr2
Deleting file /capt0031.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #33...
New file is in location /capt0032.cr2 on the camera
Saving file as capt0032.cr2
Deleting file /capt0032.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #34...
New file is in location /capt0033.cr2 on the camera
Saving file as capt0033.cr2
Deleting file /capt0033.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #35...
New file is in location /capt0034.cr2 on the camera
Saving file as capt0034.cr2
Deleting file /capt0034.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #36...
New file is in location /capt0035.cr2 on the camera
Saving file as capt0035.cr2
Deleting file /capt0035.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #37...
New file is in location /capt0036.cr2 on the camera
Saving file as capt0036.cr2
Deleting file /capt0036.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #38...
New file is in location /capt0037.cr2 on the camera
Saving file as capt0037.cr2
Deleting file /capt0037.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #39...
New file is in location /capt0038.cr2 on the camera
Saving file as capt0038.cr2
Deleting file /capt0038.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #40...
New file is in location /capt0039.cr2 on the camera
Saving file as capt0039.cr2
Deleting file /capt0039.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #41...
New file is in location /capt0040.cr2 on the camera
Saving file as capt0040.cr2
Deleting file /capt0040.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #42...
New file is in location /capt0041.cr2 on the camera
Saving file as capt0041.cr2
Deleting file /capt0041.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #43...
New file is in location /capt0042.cr2 on the camera
Saving file as capt0042.cr2
Deleting file /capt0042.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #44...
New file is in location /capt0043.cr2 on the camera
Saving file as capt0043.cr2
Deleting file /capt0043.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #45...
New file is in location /capt0044.cr2 on the camera
Saving file as capt0044.cr2
Deleting file /capt0044.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #46...
New file is in location /capt0045.cr2 on the camera
Saving file as capt0045.cr2
Deleting file /capt0045.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #47...
New file is in location /capt0046.cr2 on the camera
Saving file as capt0046.cr2
Deleting file /capt0046.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #48...
New file is in location /capt0047.cr2 on the camera
Saving file as capt0047.cr2
Deleting file /capt0047.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #49...
New file is in location /capt0048.cr2 on the camera
Saving file as capt0048.cr2
Deleting file /capt0048.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #50...
New file is in location /capt0049.cr2 on the camera
Saving file as capt0049.cr2
Deleting file /capt0049.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #51...
New file is in location /capt0050.cr2 on the camera
Saving file as capt0050.cr2
Deleting file /capt0050.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #52...
New file is in location /capt0051.cr2 on the camera
Saving file as capt0051.cr2
Deleting file /capt0051.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #53...
New file is in location /capt0052.cr2 on the camera
Saving file as capt0052.cr2
Deleting file /capt0052.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #54...
New file is in location /capt0053.cr2 on the camera
Saving file as capt0053.cr2
Deleting file /capt0053.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #55...
New file is in location /capt0054.cr2 on the camera
Saving file as capt0054.cr2
Deleting file /capt0054.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #56...
New file is in location /capt0055.cr2 on the camera
Saving file as capt0055.cr2
Deleting file /capt0055.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #57...
New file is in location /capt0056.cr2 on the camera
Saving file as capt0056.cr2
Deleting file /capt0056.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #58...
New file is in location /capt0057.cr2 on the camera
Saving file as capt0057.cr2
Deleting file /capt0057.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #59...
New file is in location /capt0058.cr2 on the camera
Saving file as capt0058.cr2
Deleting file /capt0058.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #60...
New file is in location /capt0059.cr2 on the camera
Saving file as capt0059.cr2
Deleting file /capt0059.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #61...
New file is in location /capt0060.cr2 on the camera
Saving file as capt0060.cr2
Deleting file /capt0060.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #62...
New file is in location /capt0061.cr2 on the camera
Saving file as capt0061.cr2
Deleting file /capt0061.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #63...
New file is in location /capt0062.cr2 on the camera
Saving file as capt0062.cr2
Deleting file /capt0062.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #64...
New file is in location /capt0063.cr2 on the camera
Saving file as capt0063.cr2
Deleting file /capt0063.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #65...
New file is in location /capt0064.cr2 on the camera
Saving file as capt0064.cr2
Deleting file /capt0064.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #66...
New file is in location /capt0065.cr2 on the camera
Saving file as capt0065.cr2
Deleting file /capt0065.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #67...
New file is in location /capt0066.cr2 on the camera
Saving file as capt0066.cr2
Deleting file /capt0066.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #68...
New file is in location /capt0067.cr2 on the camera
Saving file as capt0067.cr2
Deleting file /capt0067.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #69...
New file is in location /capt0068.cr2 on the camera
Saving file as capt0068.cr2
Deleting file /capt0068.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #70...
New file is in location /capt0069.cr2 on the camera
Saving file as capt0069.cr2
Deleting file /capt0069.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #71...
New file is in location /capt0070.cr2 on the camera
Saving file as capt0070.cr2
Deleting file /capt0070.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #72...
New file is in location /capt0071.cr2 on the camera
Saving file as capt0071.cr2
Deleting file /capt0071.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #73...
New file is in location /capt0072.cr2 on the camera
Saving file as capt0072.cr2
Deleting file /capt0072.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #74...
New file is in location /capt0073.cr2 on the camera
Saving file as capt0073.cr2
Deleting file /capt0073.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #75...
New file is in location /capt0074.cr2 on the camera
Saving file as capt0074.cr2
Deleting file /capt0074.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #76...
New file is in location /capt0075.cr2 on the camera
Saving file as capt0075.cr2
Deleting file /capt0075.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #77...
New file is in location /capt0076.cr2 on the camera
Saving file as capt0076.cr2
Deleting file /capt0076.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #78...
New file is in location /capt0077.cr2 on the camera
Saving file as capt0077.cr2
Deleting file /capt0077.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #79...
New file is in location /capt0078.cr2 on the camera
Saving file as capt0078.cr2
Deleting file /capt0078.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #80...
New file is in location /capt0079.cr2 on the camera
Saving file as capt0079.cr2
Deleting file /capt0079.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #81...
New file is in location /capt0080.cr2 on the camera
Saving file as capt0080.cr2
Deleting file /capt0080.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #82...
New file is in location /capt0081.cr2 on the camera
Saving file as capt0081.cr2
Deleting file /capt0081.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #83...
New file is in location /capt0082.cr2 on the camera
Saving file as capt0082.cr2
Deleting file /capt0082.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #84...
New file is in location /capt0083.cr2 on the camera
Saving file as capt0083.cr2
Deleting file /capt0083.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #85...
New file is in location /capt0084.cr2 on the camera
Saving file as capt0084.cr2
Deleting file /capt0084.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #86...
New file is in location /capt0085.cr2 on the camera
Saving file as capt0085.cr2
Deleting file /capt0085.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #87...
New file is in location /capt0086.cr2 on the camera
Saving file as capt0086.cr2
Deleting file /capt0086.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #88...
New file is in location /capt0087.cr2 on the camera
Saving file as capt0087.cr2
Deleting file /capt0087.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #89...
New file is in location /capt0088.cr2 on the camera
Saving file as capt0088.cr2
Deleting file /capt0088.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #90...
New file is in location /capt0089.cr2 on the camera
Saving file as capt0089.cr2
Deleting file /capt0089.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #91...
New file is in location /capt0090.cr2 on the camera
Saving file as capt0090.cr2
Deleting file /capt0090.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #92...
New file is in location /capt0091.cr2 on the camera
Saving file as capt0091.cr2
Deleting file /capt0091.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #93...
New file is in location /capt0092.cr2 on the camera
Saving file as capt0092.cr2
Deleting file /capt0092.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #94...
New file is in location /capt0093.cr2 on the camera
Saving file as capt0093.cr2
Deleting file /capt0093.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #95...
New file is in location /capt0094.cr2 on the camera
Saving file as capt0094.cr2
Deleting file /capt0094.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #96...
New file is in location /capt0095.cr2 on the camera
Saving file as capt0095.cr2
Deleting file /capt0095.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #97...
New file is in location /capt0096.cr2 on the camera
Saving file as capt0096.cr2
Deleting file /capt0096.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #98...
New file is in location /capt0097.cr2 on the camera
Saving file as capt0097.cr2
Deleting file /capt0097.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #99...
New file is in location /capt0098.cr2 on the camera
Saving file as capt0098.cr2
Deleting file /capt0098.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #100...
New file is in location /capt0099.cr2 on the camera
Saving file as capt0099.cr2
Deleting file /capt0099.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #101...
New file is in location /capt0100.cr2 on the camera
Saving file as capt0100.cr2
Deleting file /capt0100.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #102...
New file is in location /capt0101.cr2 on the camera
Saving file as capt0101.cr2
Deleting file /capt0101.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #103...
New file is in location /capt0102.cr2 on the camera
Saving file as capt0102.cr2
Deleting file /capt0102.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #104...
New file is in location /capt0103.cr2 on the camera
Saving file as capt0103.cr2
Deleting file /capt0103.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #105...
New file is in location /capt0104.cr2 on the camera
Saving file as capt0104.cr2
Deleting file /capt0104.cr2 on the camera
Awakened by SIGUSR1...
Capturing frame #106...
New file is in location /capt0105.cr2 on the camera
Saving file as capt0105.cr2
Deleting file /capt0105.cr2 on the camera

But capturing in automatic mode is really of no use to us. For some reason the coders had the cameras in automatic mode on their development and test bench environments, though I warned not to get to used to automatic mode as in the production system, we never capture in automatic mode, always manual for both the camera body and the lens operation. I'm not sure why any professional photography application would not use manual mode. I never anticipated anything in gPhoto requiring automatic mode, so I never made much of a fuss about the coders using it for development bench work.

How do we get --capture-image-and-download --interval -1 independent of the camera mode and working with the Canon camera body in manual mode and the lens in manual mode?

It's obvious having the EOS 5DS R camera body in Manual (M) and the lens in manual (M) does not work with --capture-image-and-download --interval -1 as the camera body becomes unstable quite quickly.

If someone can suggest what mode to have the camera body in (preferably M) so I can set the aperture, ISO, and shutter speed to the standard 1/200 and lock those settings while using gphoto. I want to set the aperture to say f13, IS0 to 100, and shutter speed is always 1/200s for Canon. The odd time I change the aperture. But IS0 is always 100 and shutter speed is always 1/200s.

Then I usually focus the lens at the start of a capture session once using Canon's Utility program and Liveview. I put the lens on AF (auto focus), focus the lens within Liveview on EOS Utility, and then move the lens to MF (manual focus) to lock the lens focus so it does not change. Then I remove the Canon Utility and don't have to touch the lens focusing again. Then I connect the camera to the Mac computer via USB3. With --capture-tethered this works just fine, but I need two cables, the USB3 to download the images from the camera to the computer, and a remote trigger cable controlled by relay switches via the N3 connector on the camera, which is silly in this day and age.

I want to programmatically use --capture-image-and-download --interval -1 (or some other way to achieve a capture and download the RAW image file immediately to the Mac computer), and use the kill -SIGUSR1 as a virtual remote shutter press via USB3. But I want the autofocus part of --capture-image-and-download disabled, and I need to be able to take a capture and download very quickly, every 2 to 3 seconds (I do not need the lens to focus with every capture as it's already focused. The mirror can also stay up as it never made sense to have the mirror constantly going up and down with each capture at such a short interval).

I notice people here discussing something similar about disabling the autofocus on --capture-image-and-download, but it's not the same as what we need to do.

Please let me know if any further testing is needed to get this working with the cameras and lens in manual mode. Happy to test anything.

@ndim
Copy link
Member

ndim commented Aug 27, 2021

this is readline-devel not the right version... or something is too new? hmm.

I'm not sure what you mean on the "readline-devel" not the right version?? Sorry for not understanding. But there is obviously something wrong related to the readline program which was installed by the brew package manager on this new Mac. As you know, readline is needed to as a dependency for gphoto2.

If you are not using the interactive gphoto2 shell (gphoto2 --shell), you should be able to configure --without-readline and build without any readline related compilation.

Unfortunately, I do not have (access to) a Mac to run builds on MacOS.

There is no popt-devel, etc for the brew package manager on MacOS (just install for popt library on brew package manager). But from reading the messages during the gphoto2 build process, popt seems OK.

The specific package names differ from system to system, whether that is popt-dev or popt-devel or popt - you need the package containing the popt development files like popt.h, that is all.

T2T-M3s-Mac-Pro:gphoto2 t2tresearch$ make check
Making check in gphoto-m4
make[1]: Nothing to be done for `check'.
Making check in contrib
make[1]: Nothing to be done for `check'.
Making check in doc
make[1]: Nothing to be done for `check'.
Making check in gphoto2
gcc -DHAVE_CONFIG_H -I. -I..  -DLOCALEDIR=\"/Users/t2tresearch/.local/share/locale\" -D_GPHOTO2_INTERNAL_CODE  -I.. -I../gphoto2 -I/usr/local/include/gphoto2 -I/usr/local/Cellar/libexif/0.6.22/include -I/usr/local/include/gphoto2 -DLOCALEDIR=\"/Users/t2tresearch/.local/share/locale\" -D_GPHOTO2_INTERNAL_CODE    -I/usr/local/Cellar/libexif/0.6.22/include  -I/usr/local/Cellar/popt/1.18/include -g -O2 -Wall -Wmissing-declarations -Wmissing-prototypes -g -MT gphoto2-shell.o -MD -MP -MF .deps/gphoto2-shell.Tpo -c -o gphoto2-shell.o `test -f 'shell.c' || echo './'`shell.c
shell.c:422:21: **error: implicit declaration of function 'rl_copy_text' is invalid in C99 [-Werror,-Wimplicit-function-declaration]**
                current = strdup (rl_copy_text (0, end));
                                  ^
shell.c:422:21: note: did you mean 'rl_kill_text'?
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/readline/history.h:210:7: note: 'rl_kill_text' declared here
int              rl_kill_text(int, int);
                 ^
shell.c:422:21: warning: incompatible integer to pointer conversion passing 'int' to parameter of type 'const char *' [-Wint-conversion]
                current = strdup (rl_copy_text (0, end));
                                  ^~~~~~~~~~~~~~~~~~~~~
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/string.h:117:26: note: passing argument to parameter '__s1' here
char    *strdup(const char *__s1);
                            ^
1 warning and 1 error generated.
make[1]: *** [gphoto2-shell.o] Error 1
make: *** [check-recursive] Error 1

If we can fix this error about the "implicit declaration of function "rl_copy_text" is invalid in C99" then I believe we can get gphoto2 to build properly, and get this new code in libgphoto2 linked to gphoto2. Then it's a quick test to see if this new code in libgphoto2 fixes the issue with --capture-image-and-download parameter

Try compiling after configure --without-readline.

@vepicurean
Copy link

this is readline-devel not the right version... or something is too new? hmm.

I'm not sure what you mean on the "readline-devel" not the right version?? Sorry for not understanding. But there is obviously something wrong related to the readline program which was installed by the brew package manager on this new Mac. As you know, readline is needed to as a dependency for gphoto2.

If you are not using the interactive gphoto2 shell (gphoto2 --shell), you should be able to configure --without-readline and build without any readline related compilation.

Unfortunately, I do not have (access to) a Mac to run builds on MacOS.

There is no popt-devel, etc for the brew package manager on MacOS (just install for popt library on brew package manager). But from reading the messages during the gphoto2 build process, popt seems OK.

The specific package names differ from system to system, whether that is popt-dev or popt-devel or popt - you need the package containing the popt development files like popt.h, that is all.

T2T-M3s-Mac-Pro:gphoto2 t2tresearch$ make check
Making check in gphoto-m4
make[1]: Nothing to be done for `check'.
Making check in contrib
make[1]: Nothing to be done for `check'.
Making check in doc
make[1]: Nothing to be done for `check'.
Making check in gphoto2
gcc -DHAVE_CONFIG_H -I. -I..  -DLOCALEDIR=\"/Users/t2tresearch/.local/share/locale\" -D_GPHOTO2_INTERNAL_CODE  -I.. -I../gphoto2 -I/usr/local/include/gphoto2 -I/usr/local/Cellar/libexif/0.6.22/include -I/usr/local/include/gphoto2 -DLOCALEDIR=\"/Users/t2tresearch/.local/share/locale\" -D_GPHOTO2_INTERNAL_CODE    -I/usr/local/Cellar/libexif/0.6.22/include  -I/usr/local/Cellar/popt/1.18/include -g -O2 -Wall -Wmissing-declarations -Wmissing-prototypes -g -MT gphoto2-shell.o -MD -MP -MF .deps/gphoto2-shell.Tpo -c -o gphoto2-shell.o `test -f 'shell.c' || echo './'`shell.c
shell.c:422:21: **error: implicit declaration of function 'rl_copy_text' is invalid in C99 [-Werror,-Wimplicit-function-declaration]**
                current = strdup (rl_copy_text (0, end));
                                  ^
shell.c:422:21: note: did you mean 'rl_kill_text'?
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/readline/history.h:210:7: note: 'rl_kill_text' declared here
int              rl_kill_text(int, int);
                 ^
shell.c:422:21: warning: incompatible integer to pointer conversion passing 'int' to parameter of type 'const char *' [-Wint-conversion]
                current = strdup (rl_copy_text (0, end));
                                  ^~~~~~~~~~~~~~~~~~~~~
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/string.h:117:26: note: passing argument to parameter '__s1' here
char    *strdup(const char *__s1);
                            ^
1 warning and 1 error generated.
make[1]: *** [gphoto2-shell.o] Error 1
make: *** [check-recursive] Error 1

If we can fix this error about the "implicit declaration of function "rl_copy_text" is invalid in C99" then I believe we can get gphoto2 to build properly, and get this new code in libgphoto2 linked to gphoto2. Then it's a quick test to see if this new code in libgphoto2 fixes the issue with --capture-image-and-download parameter

Try compiling after configure --without-readline.

Some good news. I ran the regular ./configure PKG_CONFIG_PATH="$HOME/.local/lib/pkgconfig${PKG_CONFIG_PATH+":${PKG_CONFIG_PATH}"}" --prefix="$HOME/.local"

then I ran the suggested ./configure --without-readline

We are just using command line. Never even knew there was a gphoto2 --shell.

Here's the result of the "make check". A lot of warnings and it's a bit confusing as some of the warnings get reported as errors.

T2T-M3s-Mac-Pro:gphoto2 t2tresearch$ make check
Making check in gphoto-m4
make[1]: Nothing to be done for `check'.
Making check in contrib
make[1]: Nothing to be done for `check'.
Making check in doc
make[1]: Nothing to be done for `check'.
Making check in gphoto2
gcc -DHAVE_CONFIG_H -I. -I..  -DLOCALEDIR=\"/usr/local/share/locale\" -D_GPHOTO2_INTERNAL_CODE -I/usr/local/include -I.. -I../gphoto2 -I/usr/local/include/gphoto2 -I/usr/local/Cellar/libexif/0.6.22/include -I/usr/local/include/gphoto2 -DLOCALEDIR=\"/usr/local/share/locale\" -D_GPHOTO2_INTERNAL_CODE -I/usr/local/include   -I/usr/local/Cellar/libexif/0.6.22/include  -I/usr/local/Cellar/popt/1.18/include -g -O2 -Wall -Wmissing-declarations -Wmissing-prototypes -g -MT gphoto2-actions.o -MD -MP -MF .deps/gphoto2-actions.Tpo -c -o gphoto2-actions.o `test -f 'actions.c' || echo './'`actions.c
actions.c:110:18: warning: passing 'const char *' to parameter of type 'char *' discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
                fn = basename (path);
                               ^~~~
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/libgen.h:40:22: note: passing argument to parameter here
char    *basename(char *);
                        ^
actions.c:138:6: warning: assigning to 'char *' from 'const char *' discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
                fn = path+5;
                   ^ ~~~~~~
actions.c:380:45: warning: format specifies type 'int' but the argument has type 'time_t' (aka 'long') [-Wformat]
                    printf(" FILEMTIME=%d", info.file.mtime);
                                       ~~   ^~~~~~~~~~~~~~~
                                       %ld
actions.c:404:31: warning: format specifies type 'int' but the argument has type 'time_t' (aka 'long') [-Wformat]
                printf(" %d", info.file.mtime);
                         ~~   ^~~~~~~~~~~~~~~
                         %ld
actions.c:1156:13: warning: assigning to 'char *' from 'const char *' discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
                        wp.u.str = arg;
                                 ^ ~~~
5 warnings generated.
mv -f .deps/gphoto2-actions.Tpo .deps/gphoto2-actions.Po
gcc -DHAVE_CONFIG_H -I. -I..  -DLOCALEDIR=\"/usr/local/share/locale\" -D_GPHOTO2_INTERNAL_CODE -I/usr/local/include -I.. -I../gphoto2 -I/usr/local/include/gphoto2 -I/usr/local/Cellar/libexif/0.6.22/include -I/usr/local/include/gphoto2 -DLOCALEDIR=\"/usr/local/share/locale\" -D_GPHOTO2_INTERNAL_CODE -I/usr/local/include   -I/usr/local/Cellar/libexif/0.6.22/include  -I/usr/local/Cellar/popt/1.18/include -g -O2 -Wall -Wmissing-declarations -Wmissing-prototypes -g -MT gphoto2-foreach.o -MD -MP -MF .deps/gphoto2-foreach.Tpo -c -o gphoto2-foreach.o `test -f 'foreach.c' || echo './'`foreach.c
mv -f .deps/gphoto2-foreach.Tpo .deps/gphoto2-foreach.Po
gcc -DHAVE_CONFIG_H -I. -I..  -DLOCALEDIR=\"/usr/local/share/locale\" -D_GPHOTO2_INTERNAL_CODE -I/usr/local/include -I.. -I../gphoto2 -I/usr/local/include/gphoto2 -I/usr/local/Cellar/libexif/0.6.22/include -I/usr/local/include/gphoto2 -DLOCALEDIR=\"/usr/local/share/locale\" -D_GPHOTO2_INTERNAL_CODE -I/usr/local/include   -I/usr/local/Cellar/libexif/0.6.22/include  -I/usr/local/Cellar/popt/1.18/include -g -O2 -Wall -Wmissing-declarations -Wmissing-prototypes -g -MT gphoto2-gp-params.o -MD -MP -MF .deps/gphoto2-gp-params.Tpo -c -o gphoto2-gp-params.o `test -f 'gp-params.c' || echo './'`gp-params.c
mv -f .deps/gphoto2-gp-params.Tpo .deps/gphoto2-gp-params.Po
gcc -DHAVE_CONFIG_H -I. -I..  -DLOCALEDIR=\"/usr/local/share/locale\" -D_GPHOTO2_INTERNAL_CODE -I/usr/local/include -I.. -I../gphoto2 -I/usr/local/include/gphoto2 -I/usr/local/Cellar/libexif/0.6.22/include -I/usr/local/include/gphoto2 -DLOCALEDIR=\"/usr/local/share/locale\" -D_GPHOTO2_INTERNAL_CODE -I/usr/local/include   -I/usr/local/Cellar/libexif/0.6.22/include  -I/usr/local/Cellar/popt/1.18/include -g -O2 -Wall -Wmissing-declarations -Wmissing-prototypes -g -MT gphoto2-spawnve.o -MD -MP -MF .deps/gphoto2-spawnve.Tpo -c -o gphoto2-spawnve.o `test -f 'spawnve.c' || echo './'`spawnve.c
mv -f .deps/gphoto2-spawnve.Tpo .deps/gphoto2-spawnve.Po
gcc -DHAVE_CONFIG_H -I. -I..  -DLOCALEDIR=\"/usr/local/share/locale\" -D_GPHOTO2_INTERNAL_CODE -I/usr/local/include -I.. -I../gphoto2 -I/usr/local/include/gphoto2 -I/usr/local/Cellar/libexif/0.6.22/include -I/usr/local/include/gphoto2 -DLOCALEDIR=\"/usr/local/share/locale\" -D_GPHOTO2_INTERNAL_CODE -I/usr/local/include   -I/usr/local/Cellar/libexif/0.6.22/include  -I/usr/local/Cellar/popt/1.18/include -g -O2 -Wall -Wmissing-declarations -Wmissing-prototypes -g -MT gphoto2-main.o -MD -MP -MF .deps/gphoto2-main.Tpo -c -o gphoto2-main.o `test -f 'main.c' || echo './'`main.c
main.c:1217:9: warning: incompatible pointer to integer conversion returning 'pthread_t' (aka 'struct _opaque_pthread_t *') from a function with result type 'unsigned int' [-Wint-conversion]
        return (tid);
               ^~~~~
main.c:1224:12: warning: incompatible integer to pointer conversion initializing 'pthread_t' (aka 'struct _opaque_pthread_t *') with an expression of type 'unsigned int' [-Wint-conversion]
        pthread_t tid = id;
                  ^     ~~
2 warnings generated.
mv -f .deps/gphoto2-main.Tpo .deps/gphoto2-main.Po
gcc -DHAVE_CONFIG_H -I. -I..  -DLOCALEDIR=\"/usr/local/share/locale\" -D_GPHOTO2_INTERNAL_CODE -I/usr/local/include -I.. -I../gphoto2 -I/usr/local/include/gphoto2 -I/usr/local/Cellar/libexif/0.6.22/include -I/usr/local/include/gphoto2 -DLOCALEDIR=\"/usr/local/share/locale\" -D_GPHOTO2_INTERNAL_CODE -I/usr/local/include   -I/usr/local/Cellar/libexif/0.6.22/include  -I/usr/local/Cellar/popt/1.18/include -g -O2 -Wall -Wmissing-declarations -Wmissing-prototypes -g -MT gphoto2-version.o -MD -MP -MF .deps/gphoto2-version.Tpo -c -o gphoto2-version.o `test -f 'version.c' || echo './'`version.c
mv -f .deps/gphoto2-version.Tpo .deps/gphoto2-version.Po
gcc -DHAVE_CONFIG_H -I. -I..  -DLOCALEDIR=\"/usr/local/share/locale\" -D_GPHOTO2_INTERNAL_CODE -I/usr/local/include -I.. -I../gphoto2 -I/usr/local/include/gphoto2 -I/usr/local/Cellar/libexif/0.6.22/include -I/usr/local/include/gphoto2 -DLOCALEDIR=\"/usr/local/share/locale\" -D_GPHOTO2_INTERNAL_CODE -I/usr/local/include   -I/usr/local/Cellar/libexif/0.6.22/include  -I/usr/local/Cellar/popt/1.18/include -g -O2 -Wall -Wmissing-declarations -Wmissing-prototypes -g -MT gphoto2-range.o -MD -MP -MF .deps/gphoto2-range.Tpo -c -o gphoto2-range.o `test -f 'range.c' || echo './'`range.c
mv -f .deps/gphoto2-range.Tpo .deps/gphoto2-range.Po
gcc -DHAVE_CONFIG_H -I. -I..  -DLOCALEDIR=\"/usr/local/share/locale\" -D_GPHOTO2_INTERNAL_CODE -I/usr/local/include -I.. -I../gphoto2 -I/usr/local/include/gphoto2 -I/usr/local/Cellar/libexif/0.6.22/include -I/usr/local/include/gphoto2 -DLOCALEDIR=\"/usr/local/share/locale\" -D_GPHOTO2_INTERNAL_CODE -I/usr/local/include   -I/usr/local/Cellar/libexif/0.6.22/include  -I/usr/local/Cellar/popt/1.18/include -g -O2 -Wall -Wmissing-declarations -Wmissing-prototypes -g -MT gphoto2-shell.o -MD -MP -MF .deps/gphoto2-shell.Tpo -c -o gphoto2-shell.o `test -f 'shell.c' || echo './'`shell.c
mv -f .deps/gphoto2-shell.Tpo .deps/gphoto2-shell.Po
/bin/sh ../libtool  --tag=CC   --mode=link gcc -I.. -I../gphoto2 -I/usr/local/include/gphoto2 -I/usr/local/Cellar/libexif/0.6.22/include -I/usr/local/include/gphoto2 -DLOCALEDIR=\"/usr/local/share/locale\" -D_GPHOTO2_INTERNAL_CODE -I/usr/local/include   -I/usr/local/Cellar/libexif/0.6.22/include  -I/usr/local/Cellar/popt/1.18/include -g -O2 -Wall -Wmissing-declarations -Wmissing-prototypes -g  -g -o gphoto2   gphoto2-actions.o gphoto2-foreach.o gphoto2-gp-params.o gphoto2-spawnve.o gphoto2-main.o gphoto2-version.o gphoto2-range.o gphoto2-shell.o -L/usr/local/lib -lgphoto2 -lm -lgphoto2_port -lm   -ljpeg -lpthread -L/usr/local/Cellar/libexif/0.6.22/lib -lexif -L/usr/local/lib -lintl  -L/usr/local/Cellar/popt/1.18/lib -lpopt -lm 
libtool: link: gcc -I.. -I../gphoto2 -I/usr/local/include/gphoto2 -I/usr/local/Cellar/libexif/0.6.22/include -I/usr/local/include/gphoto2 -DLOCALEDIR=\"/usr/local/share/locale\" -D_GPHOTO2_INTERNAL_CODE -I/usr/local/include -I/usr/local/Cellar/libexif/0.6.22/include -I/usr/local/Cellar/popt/1.18/include -g -O2 -Wall -Wmissing-declarations -Wmissing-prototypes -g -g -o gphoto2 gphoto2-actions.o gphoto2-foreach.o gphoto2-gp-params.o gphoto2-spawnve.o gphoto2-main.o gphoto2-version.o gphoto2-range.o gphoto2-shell.o  -L/usr/local/lib /usr/local/lib/libgphoto2.dylib -L/usr/local/Cellar/libexif/0.6.22/lib /usr/local/lib/libgphoto2_port.dylib -lltdl -ljpeg -lpthread -lexif -lintl -L/usr/local/Cellar/popt/1.18/lib -lpopt -lm
/Applications/Xcode.app/Contents/Developer/usr/bin/make  spawntest
gcc -DHAVE_CONFIG_H -I. -I..  -DLOCALEDIR=\"/usr/local/share/locale\" -D_GPHOTO2_INTERNAL_CODE -I/usr/local/include  -g -O2 -Wall -Wmissing-declarations -Wmissing-prototypes -g -MT spawnve.o -MD -MP -MF .deps/spawnve.Tpo -c -o spawnve.o spawnve.c
mv -f .deps/spawnve.Tpo .deps/spawnve.Po
/bin/sh ../libtool  --tag=CC   --mode=link gcc  -g -O2 -Wall -Wmissing-declarations -Wmissing-prototypes -g  -g -o spawntest spawntest.o spawnve.o  -lm 
libtool: link: gcc -g -O2 -Wall -Wmissing-declarations -Wmissing-prototypes -g -g -o spawntest spawntest.o spawnve.o  -lm
/Applications/Xcode.app/Contents/Developer/usr/bin/make  check-TESTS
PASS: spawntest
============================================================================
Testsuite summary for gphoto2 command line interface 2.5.27.1
============================================================================
# TOTAL: 1
# PASS:  1
# SKIP:  0
# XFAIL: 0
# FAIL:  0
# XPASS: 0
# ERROR: 0
============================================================================
Making check in packaging
Making check in rpm
make[2]: Nothing to be done for `check'.
make[2]: Nothing to be done for `check-am'.
Making check in po
make[1]: Nothing to be done for `check'.
Making check in tests
Making check in data
make[2]: Nothing to be done for `check'.
Making check in staging
Making check in subdir1
make[3]: Nothing to be done for `check'.
Making check in subdir2
make[3]: Nothing to be done for `check'.
make[3]: Nothing to be done for `check-am'.
/Applications/Xcode.app/Contents/Developer/usr/bin/make  check-TESTS
FAIL: testsuite
============================================================================
Testsuite summary for gphoto2 command line interface 2.5.27.1
============================================================================
# TOTAL: 1
# PASS:  0
# SKIP:  0
# XFAIL: 0
# FAIL:  1
# XPASS: 0
# ERROR: 0
============================================================================
See tests/test-suite.log
Please report to gphoto-devel@lists.sourceforge.net
============================================================================
make[4]: *** [test-suite.log] Error 1
make[3]: *** [check-TESTS] Error 2
make[2]: *** [check-am] Error 2
make[1]: *** [check-recursive] Error 1
make: *** [check-recursive] Error 1

I did this on the test Mac. I have two versions of gphoto on it now. One 2.5.26 managed by Homebrew and then this version 2.5.27.1 that I built from the source code on GitHub. The key as mentioned is to run ./configure --without readline (if you're not using the gphoto shell).

T2T-M3s-Mac-Pro:gphoto2 t2tresearch$ gphoto2 --version
gphoto2 2.5.27.1

Copyright (c) 2000-2021 Marcus Meissner and others

gphoto2 comes with NO WARRANTY, to the extent permitted by law. You may
redistribute copies of gphoto2 under the terms of the GNU General Public
License. For more information about these matters, see the files named COPYING.

This version of gphoto2 is using the following software versions and options:
gphoto2         2.5.27.1       gcc, popt(m), exif, no cdk, no aa, jpeg, no readline
libgphoto2      2.5.27.1       standard camlibs (SKIPPING docupen), gcc, ltdl, EXIF
libgphoto2_port 0.12.0         iolibs: disk ptpip serial usb1, gcc, ltdl, EXIF, USB, serial without locking

Now, I don't see any difference in performance between this version using the libphoto2 2.5.27.1 where we edited the 5DS R code with the PTPBUG_DELETE_SENDS_EVENT vs the version installed by Homebrew.

I did some more testing with the camera and lens on manual vs auto mode this weekend. I'll have some more notes to share with everyone on that in a couple days once I'm sure of the behaviours.

@vepicurean
Copy link

vepicurean commented Aug 31, 2021

Hi:

There is a key setting to using --capture-image-and-download --interval -1, then open another terminal session and control the shutter trigger signal by issuing command kill -SIGUSR1 PID#. You can have the camera body in "M" or manual mode (that way you can set the exposure settings manually in the camera for aperture, shutter speed, and ISO). But you must ensure the physical lens switch setting for the Canon 5DS R is on automatic focus (AF). If not, --capture-image-and-download will be inconsistent/unstable..... and eventually you get the "capturing frame" freeze issue. The will camera stop triggering and eventually gphoto is useless from the instability of the camera.

I can get --capture-image-and-download --interval -1 to work with the lens switch set to AF. But the capture and download sequence is not quick (the time to capture and download an image varies noticeably, probably because of the autofocus step), and the process unnecessarily focuses the lens with each capture (for our application autofocus on every capture is not needed). For our application, we focus the lens at the start of the capture session, and that's all we need until the next time we need to focus the lens.

If anyone knows of a way to prevent the lens from focusing on each signal (SIGUSR1) trigger using --capture-image-and-download --interval -1 it would be appreciated.

If I we could configure gphoto (after we have focused the lens) to work like I can enable using Canon's EOS Utility where I can set the lens to "Remote Manual" capture (see below). Just a touch of the mouse triggers a full press of the shutter without attempting to re-focus the lens. And once I move the setting to "manual" in the Canon EOS Utility to achieve "Remote Manual" state, the shutter operates this way (full press, no auto refocus) until we take it off "Remote Manual". I can trigger the shutter remotely with just a slight touch of the mouse about every 2.5 seconds without causing any instability or waiting for the shutter to release and be available to press remotely again via EOS utility.

The below picture shows the "Remote Manual" state via Liveview

IMG_20210901_140031

Thanks for your help and time.

@vepicurean
Copy link

vepicurean commented Sep 4, 2021

Do you think this is the alternative way to achieve remote --capture-image-and download --interval -1 via the computer without autofocus each time at a capture interval of 3 to 4 seconds?

I notice the PID for this process stops after full execution of this command. We'll also need to manually increment the sequence ID of the downloaded filename, or you get the "overwrite existing" question each time. Also, no separate kill -SIGUSR1 PID needed with the below. Which makes things even simpler.

I can't tell if the autofocus step is executing every time or not when using the below, but this triggers the full press of the shutter remotely and downloads the RAW image to the computer immediately. Takes about 3 to 4 seconds for the entire process through to "CAPTURECOMPLETE". As long as it's under 5 seconds, it works for us.

gphoto2 --set-config eosremoterelease="Immediate" --set-config eosremoterelease="Release Full" --wait-event-and-download="CAPTURECOMPLETE"

Here's the messaging that outputs from the above gphoto2 command:

Waiting for 'CAPTURECOMPLETE' event from camera. Press Ctrl-C to abort.        
UNKNOWN PTP Property d105 changed
UNKNOWN PTP Property d108 changed
UNKNOWN PTP Property d106 changed
UNKNOWN PTP Property d107 changed
UNKNOWN PTP Property d109 changed
UNKNOWN PTP Property d10a changed
UNKNOWN PTP Property d10b changed
UNKNOWN PTP Property d10c changed
UNKNOWN PTP Property d10d changed
UNKNOWN PTP Property d10e changed
UNKNOWN PTP Property d10f changed
UNKNOWN PTP Property d11b changed
UNKNOWN PTP Property d114 changed
UNKNOWN PTP Property d116 changed
UNKNOWN PTP Property d119 changed
UNKNOWN PTP Property d110 changed
UNKNOWN PTP Property d101 changed
UNKNOWN PTP Property d102 changed
UNKNOWN PTP Property d103 changed
UNKNOWN PTP Property d104 changed
UNKNOWN PTP Property d11d changed
UNKNOWN PTP Property d111 changed
UNKNOWN PTP Property d112 changed
UNKNOWN PTP Property d113 changed
UNKNOWN PTP Property d17c changed
UNKNOWN PTP Property d17d changed
UNKNOWN PTP Property d17e changed
UNKNOWN PTP Property d120 changed
UNKNOWN PTP Property d121 changed
UNKNOWN PTP Property d122 changed
UNKNOWN PTP Property d15d changed
UNKNOWN PTP Property d157 changed
UNKNOWN PTP Property d158 changed
UNKNOWN PTP Property d159 changed
UNKNOWN PTP Property d15a changed
UNKNOWN PTP Property d15b changed
UNKNOWN PTP Property d15c changed
UNKNOWN PTP Property d15e changed
UNKNOWN PTP Property d163 changed
UNKNOWN PTP Property d164 changed
UNKNOWN PTP Property d165 changed
UNKNOWN PTP Property d11c changed
UNKNOWN PTP Property d1a0 changed
UNKNOWN PTP Property d1a0 changed
UNKNOWN PTP Property d1a0 changed
UNKNOWN PTP Property d1a1 changed
UNKNOWN PTP Property d1a8 changed
UNKNOWN PTP Property d1a7 changed
UNKNOWN PTP Property d1ab changed
UNKNOWN PTP Property d1b0 changed
UNKNOWN PTP Property d1b1 changed
UNKNOWN PTP Property d1b2 changed
UNKNOWN PTP Property d1b3 changed
UNKNOWN PTP Property d1b4 changed
UNKNOWN PTP Property d1b5 changed
UNKNOWN PTP Property d1b6 changed
UNKNOWN PTP Property d1a9 changed
UNKNOWN PTP Property d146 changed
UNKNOWN PTP Property d1aa changed
UNKNOWN PTP Property d11e changed
UNKNOWN PTP Property d1d9 changed
UNKNOWN PTP Property d1d5 changed
UNKNOWN PTP Property d1ba changed
UNKNOWN PTP Property d1cd changed
UNKNOWN PTP Property d1bc changed
UNKNOWN PTP Property d1b8 changed
UNKNOWN FocusInfo eosversion=8,size=8688x5792,size2=8688x5792,points={{-435,652,283,283},{-966,652,283,283},{-1425,652,283,283},{-1860,652,283,283},{-2295,652,283,283},{435,978,283,283},{0,978,283,283},{-435,978,283,283},{-1860,326,283,283},{-2295,326,283,283},{2295,652,283,283},{1860,652,283,283},{1425,652,283,283},{966,652,283,283},{435,652,283,283},{0,652,283,283},{1860,326,283,283},{1425,326,283,283},{966,326,283,283},{435,326,283,283},{0,326,283,283},{-435,326,283,283},{-966,326,283,283},{-1425,326,283,283},{435,0,283,283},{0,0,283,283},{-435,0,283,283},{-966,0,283,283},{-1425,0,283,283},{-1860,0,283,283},{-2295,0,283,283},{2295,326,283,283},{-966,-326,283,283},{-1425,-326,283,283},{-1860,-326,283,283},{-2295,-326,283,283},{2295,0,283,283},{1860,0,283,283},{1425,0,283,283},{966,0,283,283},{-2295,-652,283,283},{2295,-326,283,283},{1860,-326,283,283},{1425,-326,283,283},{966,-326,283,283},{435,-326,283,283},{0,-326,283,283},{-435,-326,283,283},{1425,-652,283,283},{966,-652,283,283},{435,-652,283,283},{0,-652,283,283},{-435,-652,283,283},{-966,-652,283,283},{-1425,-652,283,283},{-1860,-652,283,283},{435,-978,283,283},{0,-978,283,283},{-435,-978,283,283},{2295,-652,283,283},{1860,-652,283,283}},select={},unknown={00001007004000000000000000000000ffff}
UNKNOWN PTP Property d1d8 changed
UNKNOWN PTP Property d1b7 changed
UNKNOWN PTP Property d1cb changed
UNKNOWN PTP Property d1db changed
UNKNOWN PTP Property d1dc changed
UNKNOWN PTP Property d1a3 changed
UNKNOWN PTP Property d1a4 changed
UNKNOWN PTP Property d1df changed
UNKNOWN PTP Property d1bd changed
UNKNOWN PTP Property d1c1 changed
UNKNOWN PTP Property d1c0 changed
UNKNOWN PTP Property d1bf changed
UNKNOWN PTP Property d1c4 changed
UNKNOWN PTP Property d1c2 changed
UNKNOWN PTP Property d1c5 changed
UNKNOWN PTP Property d194 changed
UNKNOWN PTP Property d195 changed
UNKNOWN PTP Property d196 changed
UNKNOWN PTP Property d197 changed
UNKNOWN PTP Property d198 changed
UNKNOWN PTP Property d1dd changed
UNKNOWN PTP Property d1c7 changed
UNKNOWN PTP Property d199 changed
UNKNOWN PTP Property d138 changed
UNKNOWN PTP Property d139 changed
UNKNOWN PTP Property d13a changed
UNKNOWN PTP Property d13b changed
UNKNOWN PTP Property d13c changed
UNKNOWN PTP Property d13d changed
UNKNOWN PTP Property d14d changed
UNKNOWN PTP Property d19a changed
UNKNOWN PTP Property d19c changed
UNKNOWN PTP Property d178 changed
UNKNOWN PTP Property d179 changed
UNKNOWN PTP Property d17a changed
UNKNOWN PTP Property d17b changed
UNKNOWN PTP Property d1c9 changed
UNKNOWN PTP Property d19f changed
UNKNOWN PTP Property d175 changed
UNKNOWN PTP Property d14c changed
UNKNOWN PTP Property d14b changed
UNKNOWN PTP Property d13e changed
UNKNOWN PTP Property d1c6 changed
UNKNOWN PTP Property d177 changed
UNKNOWN PTP Property d194 changed
UNKNOWN Button 1
UNKNOWN PTP Property d102 changed
UNKNOWN PTP Property d101 changed
UNKNOWN PTP Property d103 changed
UNKNOWN OLCInfo event 0x0010 content 00000000
UNKNOWN OLCInfo event 0x0020 content 000000000100
UNKNOWN OLCInfo exposure indicator 0,0,0.0 (00000000)
UNKNOWN OLCInfo event 0x0080 content 00000000
UNKNOWN Focus Info 000000000000
UNKNOWN Focus Mask 00000000000000
UNKNOWN OLCInfo event 0x0400 content 00000000000000
UNKNOWN OLCInfo event 0x0800 content 0000000000080000
UNKNOWN OLCInfo event 0x1000 content 00
UNKNOWN OLCInfo event mask=1fff
UNKNOWN PTP Property d115 changed
UNKNOWN PTP Property d1d0 changed
UNKNOWN PTP Property d1d1 changed
UNKNOWN PTP Property d1af changed
UNKNOWN PTP Property d11b changed
UNKNOWN PTP Property d11c changed
UNKNOWN PTP Property d11b changed
UNKNOWN PTP Property d11c changed
UNKNOWN PTP Property d11b changed
UNKNOWN PTP Property d11c changed
UNKNOWN PTP Property d11b changed
UNKNOWN PTP Property d1d9 changed
UNKNOWN PTP Property d1d5 changed
UNKNOWN PTP Property d1c3 changed
UNKNOWN Button 2
UNKNOWN OLCInfo exposure indicator 1,2,-8.8 (00000000)
UNKNOWN Focus Mask 00010000000008
UNKNOWN OLCInfo event mask=241
UNKNOWN Camera Status 1
UNKNOWN PTP Property d11b changed
UNKNOWN PTP Property d1c3 changed
UNKNOWN Button 4
UNKNOWN Focus Mask 00000000000800
UNKNOWN OLCInfo event mask=201
UNKNOWN FocusInfo eosversion=8,size=8688x5792,size2=8688x5792,points={{-435,652,283,283},{-966,652,283,283},{-1425,652,283,283},{-1860,652,283,283},{-2295,652,283,283},{435,978,283,283},{0,978,283,283},{-435,978,283,283},{-1860,326,283,283},{-2295,326,283,283},{2295,652,283,283},{1860,652,283,283},{1425,652,283,283},{966,652,283,283},{435,652,283,283},{0,652,283,283},{1860,326,283,283},{1425,326,283,283},{966,326,283,283},{435,326,283,283},{0,326,283,283},{-435,326,283,283},{-966,326,283,283},{-1425,326,283,283},{435,0,283,283},{0,0,283,283},{-435,0,283,283},{-966,0,283,283},{-1425,0,283,283},{-1860,0,283,283},{-2295,0,283,283},{2295,326,283,283},{-966,-326,283,283},{-1425,-326,283,283},{-1860,-326,283,283},{-2295,-326,283,283},{2295,0,283,283},{1860,0,283,283},{1425,0,283,283},{966,0,283,283},{-2295,-652,283,283},{2295,-326,283,283},{1860,-326,283,283},{1425,-326,283,283},{966,-326,283,283},{435,-326,283,283},{0,-326,283,283},{-435,-326,283,283},{1425,-652,283,283},{966,-652,283,283},{435,-652,283,283},{0,-652,283,283},{-435,-652,283,283},{-966,-652,283,283},{-1425,-652,283,283},{-1860,-652,283,283},{435,-978,283,283},{0,-978,283,283},{-435,-978,283,283},{2295,-652,283,283},{1860,-652,283,283}},select={},unknown={00001007004000000000000000000000ffff}
UNKNOWN PTP Property d1c3 changed
UNKNOWN Button 1
UNKNOWN OLCInfo exposure indicator 1,0,0.0 (00000000)
UNKNOWN OLCInfo event mask=41
Saving file as 001-TEST_131407.cr2
CAPTURECOMPLETE
event found, stopping wait!

Again, I don't understand enough about how this command or the output messaging work to tell if the Autofocus step is bypassed or disabled during this remote trigger and download process. It just seems to take a very long time to execute vs when I do a remote trigger and download using the Canon EOS utility..... But maybe I'm not understanding how to do the direct full release using the gphoto2 eosremoterelease command.

This is not freezing the camera or the lens (lens switch is set to AF), which is great. We just write a batch script to issue this command every 5 seconds. Though we still have to test if this command is going to be fast enough to execute consistently with 5 second intervals, while also incrementing the names of the RAW files and downloading them to the disk on the computer.

Can someone that understands what is happening here, please give some expert input if the autofocus is still happening on each capture or not?

Also, if there is a way to do this command gphoto2 --set-config eosremoterelease="Immediate" --set-config eosremoterelease="Release Full" --wait-event-and-download="CAPTURECOMPLETE" to execute faster? It's taking close to 5 seconds from initiation of the capture until the end of the process where it confirms "CAPTURECOMPLETE", which is too slow for us. The faster the interval we can execute this, the better. Even if we got it down to 4 seconds it would be great.

I noticed others we experiencing a similar slow image file capture and download. They tried --wait-event-and-download="FILEADDED" and that seems to slightly faster than using "CAPTURECOMPLETE". I got it to about 4 seconds total time for the remote shutter trigger and download process using "FILEADDED". Though I don't understand if I'm bypassing the autofocus step or not.

@vepicurean
Copy link

vepicurean commented Sep 8, 2021

Update:

When we run our remote trigger using gphoto bash script at a 7 second shutter trigger interval using the gphoto2 --set-config eosremoterelease="Immediate" --set-config eosremoterelease="Release Full" --wait-event-and-download="FILEADDED" command we able to achieve stable operation of the cameras and the images are good quality. But when we reduce the interval time (increase the frequency of the remote captures) of our remote shutter trigger script to 5 seconds, this seems to cause issues (conflicts between the sequential remote triggers) as the wait time for the "FILEADDED" event is too long.

Any suggestions to be able to decrease the entire remote shutter trigger and download processing time down to 2 or 3 seconds?

I may be wrong, but from what I'm seeing it looks like we need to get the remote shutter trigger capture and download processing time down below 3 seconds to operate our 5 second interval script successfully. Thanks for your help and time.

@farhi
Copy link

farhi commented Mar 23, 2024

Hello, I have exactly the same error with a Sony Alpha 6000. gphoto 2.5.27, camera plugged via a USB cable. The camera is in "S" program (speed).

The first few shots work, then the camera gets stuck:

gphoto2 --shell --force-overwrite
gphoto2: {/home/farhi} /> capture-image                                        
New file is in location /capt0000.jpg on the camera                            
gphoto2: {/home/farhi} /> capture-image
New file is in location /capt0001.jpg on the camera                            
New file is in location /capt0002.jpg on the camera                            
gphoto2: {/home/farhi} /> capture-image
New file is in location /capt0003.jpg on the camera                            
gphoto2: {/home/farhi} /> capture-image
New file is in location /capt0004.jpg on the camera                            
gphoto2: {/home/farhi} /> capture-image
ERROR: Could not capture image.
ERROR: Could not capture.
gphoto2: {/home/farhi} /> capture-image
ERROR: Could not capture image.
ERROR: Could not capture. 

If I turn the camera off/on, the issue is still there, which shows this is purely gphoto related.

A tip on the issue:
This test was done with the lens cap on (black image), and I found out the issue somewhat resides in the focusing. Indeed, the camera can not focus, which blocks the capture command. Then all subsequent capture commands from gphoto2 fail, even when further removing the cap from the lens.
If I exit/restart gphoto2, cap lens off, then all is fine.

My conclusion is that the issue is indeed related to gphoto2 only (the camera works fine by itself), and when a focusing error/timeout occurs, gphoto2 can not grab anymore pictures.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Canon tagging canon reports
Projects
None yet
Development

No branches or pull requests

5 participants