R: fix capture "saving" hang via CameraConductor remote-release path - #279
R: fix capture "saving" hang via CameraConductor remote-release path#279jed2nd wants to merge 1 commit into
Conversation
On the EOS R, lens_take_picture's call("Release") issues the capture but
leaves the shooting job unfinalized, so the camera hangs on "saving..." at
power-off (the physical shutter is unaffected). Drive the CameraConductor
remote-release event instead (SetEventIrRemoteReleaseBtn -- the path a
wireless remote / the physical shutter uses), which finalizes the job
cleanly. 1 = press (SW2-on), 0 = release.
Verified on R.180 hardware: a picture is captured and the camera powers
off cleanly (no saving hang). Adds the SetEventIrRemoteReleaseBtn stub
(platform/R.180) and prototype (src/dryos.h, guarded by CONFIG_R).
|
Verified on EOS R (firmware 1.8.0) hardware after this fix — sharing the results in Capture (this PR):
Quick stability pass:
Downstream (intentionally not in this PR): with capture working, I enabled Happy to share logs or more detail. ( |
|
Interesting, I tested multiple ways to trigger the shot but all of them were leaving it in that broken state - and all of them were related to factory mode. I don't recall |
|
I've yet to have success with this for HDR/Bracketing, but it does work for intervalometer for sure. Continuing to dig. |
|
We could log the state machine during capture, which may give additional clues. We didn't have a clean good capture to work with before, so couldn't do a nice comparison. This is fairly hard code to work on (you need to do some hand-coded asm), but not crazy hard. For a fairly clean example of how to install logging hooks, see e.g. https://github.com/reticulatedpines/magiclantern_simplified/tree/b9d9a9557bb4f1345e342c55b5bb998263f98853/modules/dev_tools/adtglog2 If you're interested in that, consider joining us on Discord, we can give much more rapid advice there :) |
What
On the EOS R, ML's programmatic capture (
lens_take_picture→call("Release"))takes the picture but leaves the shooting job unfinalized, so the camera hangs on
"saving..." at power-off. The physical shutter is unaffected.
This drives the CameraConductor remote-release event (
SetEventIrRemoteReleaseBtn)instead — the same path a wireless remote / the physical shutter uses — which
finalizes the job cleanly.
1= press (SW2-on),0= release.Changes
platform/R.180/stubs.S— addSetEventIrRemoteReleaseBtn(0xE0190214)src/dryos.h— prototype, guarded byCONFIG_Rsrc/lens.c—#elif defined(CONFIG_R)branch inlens_take_pictureThis mirrors the existing per-camera release variants already in that function
(
PtpDps_remote_release_SW1_SW2_workerfor 5D2,rssReleasefor 5DC,FA_Releasefor 40D).Testing (EOS R, firmware 1.8.0, on hardware)
take_a_picpath now takes a photo and powers offcleanly — no "saving" hang.
job_state set (exposure started); theproper CC path also sets
job_state, whichcall("Release")did not.AF_DONT_CHANGE(MF / pre-focused). ML-driven AF on the R is aseparate matter (
CONFIG_IMAGE_CAPTURE_NOT_WORKING) and out of scope here.Notes
SetEventIrRemoteReleaseBtnposts the remote-release event into the normalCameraConductor SW1/SW2 pipeline (RE'd from ROM0). Builds clean for R.180.