Installation Guide
Get eclipseClick installed and your camera detected. When you're done here, head to the Post-Install Setup Guide for scripting, focusing, and eclipse-day workflow.
Overview
eclipseClick controls cameras through one of three connection paths, picked automatically based on your camera vendor and model:
- Vendor SDK — Canon EDSDK, Nikon MAID, Sony Camera Remote SDK. Full feature support: live view, all settings, fast burst.
- libgphoto2 fallback — bundled open-source PTP/MTP driver. Used when the vendor SDK doesn't support your specific body. Slower (about 1 frame/second on Sony), settings still work.
- DSUSB shutter — hardware shutter trigger via the Shoestring Astronomy adapter. Used alongside an SDK connection for time-critical bursts. Canon and Nikon only — Sony bodies don't expose a wired shutter port.
Find your camera in the support matrix below to see which path applies, then jump to the matching section.
Note
Camera Support Matrix
| Vendor | Connection | Windows | macOS | DSUSB |
|---|---|---|---|---|
| Canon EOS | Canon EDSDK | Yes (needs EOS Utility for drivers) | Yes (needs EOS Utility for drivers) | Yes — via 2.5mm/3.5mm remote port |
| Nikon (Windows) | Nikon MAID SDK | Yes (needs .md3 module per body) | N/A — see Nikon (macOS) | Yes — via MC-DC2 / 10-pin port |
| Nikon (macOS) | libgphoto2 | N/A — see Nikon (Windows) | Yes — no module download needed | Yes |
| Sony — native SDK list | Sony Camera Remote SDK | Yes (needs Imaging Edge driver) | Yes (needs Imaging Edge driver) | No — not supported |
| Sony — fallback bodies | libgphoto2 | Yes — needs WinUSB driver swap and Memory Integrity off | Yes — no driver swap needed | No — not supported |
Sony's native SDK supported list and fallback list are below in the Sony sections. Both lists evolve as Sony updates the Camera Remote SDK.
Windows
Tested on Windows 10 21H2+ and Windows 11 (all versions including 24H2). You need administrator rights for the initial driver installs — once drivers are installed, eclipseClick runs without elevation.
Canon — all EOS bodies (Windows)
Works with every Canon EOS body the EDSDK supports — from the EOS 7D Mark II up to current R-series mirrorless. Bundled SDK is version current as of the eclipseClick release; older bodies that rely on legacy EDSDK 13.x behavior may misbehave.
Install Canon EOS Utility 3.x
Download the latest EOS Utility from Canon's support page for your specific camera model. The installer registers the WIA USB driver that EDSDK requires.
You don't need to launch EOS Utility — the driver is what matters. If EOS Utility is running when you open eclipseClick, close it (it claims the camera and blocks SDK access).
Connect over USB
Use the manufacturer's cable. Some R-series bodies tolerate third-party USB-C cables; older M-series and DSLRs are picky about the original cable.
Set the camera to Manual (M)
Mode dial to M. eclipseClick relies on full manual control of shutter, aperture, and ISO. Bulb mode is supported via long shutter values.
Detect in eclipseClick
Equipment tab → vendor Canon → Scan. The body should appear within a second.
Tip
Nikon — F-mount and Z-mount via MAID (Windows)
Each Nikon body requires its own .md3
"MAID module" from Nikon. The modules are proprietary and we can't
bundle them with eclipseClick — you have to download them
yourself (free, registration required).
Register at Nikon SDK portal
Sign up (free) at the Nikon SDK portal. Select the SDK matching your camera generation (Type 0006 for most modern bodies, Type 0011 for newer Z-series).
Stage the .md3 files
From the SDK download, copy every
.md3
file plus any companion DLLs (NkdPTP.dll,
NkdImg.dll)
into a folder, e.g.:
C:\NikonSDK\modules\ Type0006_D7200.md3 Type0006_D850.md3 NkdPTP.dll
Set NIKON_MD3_PATH
Open Settings → About → Advanced system settings → Environment Variables. Add a User variable:
- Name:
NIKON_MD3_PATH - Value: the folder path you created (e.g.
C:\NikonSDK\modules)
Restart eclipseClick after setting the variable — the bridge reads it on startup.
Connect and scan
USB connect, camera in Manual mode, then Equipment → vendor Nikon → Scan.
Module per body
Tip
Sony — native Camera Remote SDK (Windows)
Use this path if your body is on Sony's official Camera Remote SDK supported list. Full burst rate, all settings, no driver swap.
Native SDK supported bodies (CrSDK v1.13+)
Sony updates this list periodically. If your model isn't here but is newer than what's listed, try this path first — it may be supported by a recent SDK update.
Install Sony Imaging Edge Desktop
Download Imaging Edge Desktop from Sony's site. Specifically you need the "Remote" component — it ships the driver Sony's Camera Remote SDK enumerates against.
Without this driver, the SDK reports zero cameras even with the body plugged in and powered on. You don't need to launch Imaging Edge; the install is what matters.
Set USB Connection to PC Remote and enable PC Remote
Two separate settings to configure on the camera:
1. USB Connection mode
Menu → Setup → USB → USB Connection → PC Remote. Some bodies have this under the Network submenu instead of Setup.
2. Enable PC Remote over USB
Menu → Network → PC Remote → On, then set Connection Method → USB. Without this, the camera presents as a storage device only and the SDK cannot issue remote-control commands.
Camera in Manual (M)
Mode dial to M. Required for full exposure control via SDK.
Connect over USB and scan
USB-C cable, camera on, then Equipment → vendor Sony → Scan. Should detect within 2–3 seconds.
Note
Sony — fallback path (ZV-E10, α6×00, etc., Windows)
Use this path if your Sony body isn't on the Camera Remote SDK list. eclipseClick falls back to the bundled libgphoto2 driver, which talks to the camera over PTP/MTP. To make that work on Windows, the camera's USB endpoint has to be bound to the WinUSB kernel driver instead of Windows' inbox MTP driver — eclipseClick automates the swap, but you have to disable Memory Integrity first, otherwise the driver install hangs at the Windows policy gate with no error.
Bodies that use this fallback path
Plus any other Sony body that returns zero cameras from the native SDK scan. The list above is what we've confirmed; the fallback works with any libgphoto2-recognized Sony PTP body.
Performance ceiling: about 1 frame per second
What eclipseClick is actually installing
Windows ships WinUSB — a generic, Microsoft-signed USB driver in every Win10/11 install. Userspace processes can talk directly to a USB device through it. The driver is already on your system; nothing new is being downloaded.
The "install" we're doing isn't installing WinUSB itself — it's
generating a tiny .inf
file that tells Windows "for this specific camera (vendor 0x054C,
product 0x0D97 for ZV-E10), use WinUSB instead of the inbox MTP
driver." Windows then re-binds the device. eclipseClick uses
libwdi
(LGPL-3, vendored as WinUsbInstall.exe) for this.
No camera firmware is touched. The camera sees no change. Only Windows' "this device speaks USB protocol X via driver Y" mapping is updated.
Why Memory Integrity (HVCI) blocks the install
Windows Hypervisor-protected Code Integrity (HVCI), surfaced in the Windows Security UI as "Memory Integrity," runs every driver binary through an extra signature check at install time. It requires drivers to be signed by a certificate that Microsoft has WHQL-attested.
The .inf libwdi generates is signed by libwdi's own CA-chained
certificate ("Akeo Consulting"), which is a real, valid
certificate — but not WHQL-attested. HVCI rejects it.
Worse, Windows doesn't return an error: the install hangs at
[Device Installation Restrictions Policy Check]
for the entire 5-minute install timeout, then reports a
generic failure with no mention of HVCI.
HVCI is on by default in Windows 11 22H2+ on hardware that supports it (most machines from 2018 onward). Disabling it for this one install is the only practical workaround until either Microsoft adds libwdi's cert to WHQL (unlikely) or eclipseClick ships a WHQL-signed package (multi-month process; on the roadmap).
Disable Memory Integrity (Required)
- Press Win and type Windows Security, open it.
- Left sidebar → Device security.
- Under "Core isolation," click Core isolation details.
- Toggle Memory integrity to Off.
- Windows prompts to restart. Restart now — the change doesn't take effect until reboot.
The Windows Security GUI is more reliable than
bcdedit for
HVCI on Windows 11 24H2 — some
bcdedit-driven approaches leave the registry inconsistent.
If the toggle is grayed out:
Windows blocks Memory Integrity changes when an incompatible driver is installed. Click "Review incompatible drivers" in the Memory Integrity UI — Windows lists the offenders. Common culprits: old WiFi drivers, virtualization tools (VMware Workstation Player versions before 17, VirtualBox versions before 7). Update or uninstall the listed drivers, reboot, then try the toggle again.
Verify Memory Integrity is actually off:
Open PowerShell (no need to elevate) and run:
$di = Get-CimInstance -ClassName Win32_DeviceGuard ` -Namespace root\Microsoft\Windows\DeviceGuard $di.SecurityServicesRunning
Output should be either empty or values not containing 2.
A value of 2 in
the list means HVCI is still running — the toggle didn't take or
you didn't reboot.
Set USB Connection to MTP and enable PC Remote
Two separate settings to configure on the camera:
1. USB Connection mode → MTP
This sets the camera's USB device class / product ID. It must be MTP (not PC Remote) so eclipseClick can swap the Windows driver:
- ZV-E10 / ZV-E10 II: Menu → Network → USB Connection → MTP
- α6×00 series: Menu → Setup (Toolbox) → USB Connection → MTP
- NEX-series: Menu → Setup → USB Connection → MTP (some models call it "Auto" instead)
Note: "PC Remote" as a USB Connection mode uses a different USB product ID that Sony's own Imaging Edge driver claims first — eclipseClick can't swap a device already owned by that driver. Always leave USB Connection set to MTP on this fallback path. "Auto" works too — it resolves to MTP on first attach. If you previously used the camera on a Mac, set it explicitly; some bodies remember the last mode.
2. Enable PC Remote over USB
This is a separate toggle that enables remote-control commands. Without it, the camera appears as a storage device only and libgphoto2 cannot trigger the shutter:
Menu → Network → PC Remote → On, then set Connection Method → USB.
Plug in and run the scan
Connect the camera over USB-C, turn it on, then in eclipseClick:
- Equipment tab → vendor selector → Sony
- Click Scan
What happens, in order:
- eclipseClick tries the Sony Camera Remote SDK first. Returns "0 cameras" within ~3 seconds (your body isn't on Sony's list).
- eclipseClick automatically falls back to libgphoto2 and sees the camera on USB.
- libgphoto2 fails to claim the device (it's currently bound to MTP).
- eclipseClick detects the failure pattern and pops a dialog: "Sony camera driver required — Install WinUSB driver?" with a list of detected cameras.
- Click Install driver.
- Windows shows a UAC prompt (the install needs admin to write to the driver store). Click Yes.
WinUsbInstall.exeruns for 5–15 seconds. You may briefly see a "driver installation" toast.- eclipseClick re-runs the libgphoto2 scan with 1s/2s/3s backoff. The camera should appear in the Equipment tab as Connected.
Verify in Device Manager:
Open Device Manager. Before the swap, the camera was under Portable Devices with a name like "ZV-E10". After, it's under Universal Serial Bus devices (or "WinUSB Devices" on some Windows builds) with a name like "Sony ZV-E10".
From PowerShell:
Get-PnpDevice -PresentOnly | Where-Object {
$_.HardwareID -like "*VID_054C*"
} | Select-Object FriendlyName, Service, Status | Format-List
Look for Service: WinUSB
on the camera entry. If it still says
WUDFRd or
usbccgp,
the swap didn't take — see troubleshooting below.
Manual driver install (if step 3 fails)
If eclipseClick's automatic install hangs or the in-app dialog never appears, you can run the bundled installer yourself.
Find your camera's USB IDs:
Get-PnpDevice -PresentOnly | Where-Object {
$_.HardwareID -like "*VID_054C*"
} | Select-Object FriendlyName, HardwareID
Note the four-hex-digit values after VID_
and PID_.
For the ZV-E10 in MTP mode it's VID_054C&PID_0D97.
Run the bundled installer (elevated):
& "$env:LOCALAPPDATA\Programs\eclipseClick\resources\winusb-install\WinUsbInstall.exe" ` --vid 0x054C --pid 0x0D97 --type 0 ` --inf winusb_zve10.inf --name "Sony ZV-E10" --manufacturer "Sony"
Replace 0x0D97
with your camera's PID, and the
--name /
--inf
values with your model.
The installer is the binary eclipseClick automates; running it directly produces the same outcome with full output visibility. If this hangs, the issue is HVCI — double-check Step 1's verification.
Measure FPS before generating scripts
Equipment tab → Measure FPS. The result will be around 1 frame/second on this path. The Script Wizard reads this value and budgets bracket steps accordingly — if you skip this step, the wizard assumes a much higher rate and generates scripts that can't fit on the camera at totality.
The FPS measurement fires 10 captures back-to-back. You'll hear the shutter for ~10 seconds. Photos land on the SD card; you can delete them after.
Re-enable Memory Integrity (recommended)
Once the WinUSB binding is in place, Memory Integrity can go back on without affecting the camera. The binding is stored in Windows' driver-store and survives the HVCI toggle.
- Windows Security → Device security → Core isolation details.
- Toggle Memory integrity to On.
- Restart.
- Verify the camera still works: open eclipseClick → Equipment → Scan. Should re-detect immediately, no driver prompt this time.
Adding a different Sony body later: the new body has a different USB PID and needs its own driver swap. That means disabling Memory Integrity again, doing the install, then re-enabling. Plan around that if you're outfitting multiple cameras.
Sony fallback troubleshooting
Install dialog never appears, scan just says "no cameras"
The libgphoto2 fallback didn't see the device on USB. Confirm the camera is on, USB-C cable plugged into the camera's data port (not the headphone or HDMI jack), and the body shows up in Device Manager under Portable Devices. If yes, check eclipseClick's log (Settings → Open Logs Folder) for "Sony SDK found no cameras — switching to gphoto2 fallback" — if missing, eclipseClick didn't try the fallback path. Restart eclipseClick.
Install hangs for 5 minutes, then fails
Memory Integrity is still on. Run the PowerShell verification
from Step 1 — if
SecurityServicesRunning
contains 2, HVCI is active. Toggle it off, restart, retry.
UAC dialog doesn't appear when I click Install
Some EDR / antivirus tools (CrowdStrike, SentinelOne, Sophos)
block elevated PowerShell spawned from non-system processes.
Add an exception for
eclipseClick.exe and
WinUsbInstall.exe,
or run the manual install from Step 4 above.
Driver install reported success, camera still not in eclipseClick
Verify in PowerShell that
Service: WinUSB
shows on the camera (Step 3's command). If yes, restart
eclipseClick — sometimes the post-install rescan races
Windows' device-rebind. If
Service
is still WUDFRd,
the swap didn't actually happen — unplug the camera, run
the manual install (Step 4) with the camera plugged back in.
Camera disconnects intermittently after WinUSB swap
Almost always a USB cable issue. Sony bodies are sensitive to USB-C cable quality — swap to a known-good cable (Sony's own cable or a high-quality USB 3.x data cable). Avoid USB hubs; plug directly into the computer.
Memory Integrity toggle is grayed out
An incompatible driver is blocking the change. The Memory Integrity UI has a "Review incompatible drivers" link — click it to see the offenders. Common causes: old WiFi/audio drivers, VMware Workstation Player <17, VirtualBox <7, certain Anti-Cheat services. Update or uninstall the listed drivers, reboot, then try the toggle again.
Reverting the driver
- Open Device Manager.
- Find the camera under "Universal Serial Bus devices."
- Right-click → Uninstall device → check "Delete the driver software for this device" → OK.
- Unplug and replug the camera. Windows reinstalls the inbox MTP driver automatically.
This doesn't require disabling Memory Integrity — you're going back to a Microsoft driver, not installing one. Re-doing the WinUSB swap later does require HVCI off again.
DSUSB shutter — Canon and Nikon (Windows)
The Shoestring Astronomy DSUSB enumerates as a generic HID device — no driver install. Sony bodies don't expose a wired shutter port that DSUSB targets, so the DSUSB option is only meaningful for Canon and Nikon.
Plug DSUSB into any USB port
Windows enumerates it instantly. Equipment tab → DSUSB section should show "Connected".
Connect the right shutter cable
Pick the cable that matches your camera's remote port:
- Canon EOS: 2.5mm sub-mini (Rebel/M-series) or N3 (5D/6D/7D-series)
- Nikon F-mount entry (D3xxx, D5xxx, D7xxx): MC-DC2
- Nikon Z-mount and pro F-mount (D850, D5/D6, Z6/Z7): 10-pin or MC-DC2 depending on body
Verify with the test trigger
Equipment tab → DSUSB → Trigger Test Shot. Camera should fire whatever shutter speed it's currently set to.
Tip
macOS
Tested on macOS 12 Monterey and later, both Apple Silicon and Intel. On Apple Silicon, the eclipseClick installer is a universal binary — no Rosetta needed.
Canon — all EOS bodies (macOS)
Same model coverage as Windows. Canon's macOS EDSDK build is a universal binary; works on Apple Silicon.
Install Canon EOS Utility for macOS
Download from Canon's support page. Apple Silicon Macs need the version compiled for ARM — Canon publishes both.
Quit Image Capture and Photos before scanning
macOS launches ptpcamerad when a camera is plugged in, and Image Capture / Photos can claim the camera before EDSDK gets to it. Quit both before scanning in eclipseClick. eclipseClick auto-stops ptpcamerad on capture, but it can respawn via launchd in 1–2 seconds.
Connect and scan
USB cable, camera on, Manual mode, Equipment → Canon → Scan.
Nikon — via libgphoto2 (macOS)
Nikon's MAID SDK is x86_64-only and crashes under Rosetta on Apple Silicon. eclipseClick uses libgphoto2 instead on macOS — no module download needed, no NIKON_MD3_PATH env var.
Plug in and scan
Connect, Manual mode, Equipment → Nikon → Scan. libgphoto2 detects the body via PTP and reports it.
If using DSUSB, plan around ptpcamerad
For DSUSB-triggered captures on Nikon (e.g. D7200), eclipseClick has to release the PTP session each shot so the camera's remote terminal accepts the DSUSB pulse. macOS's ptpcamerad daemon fights this; eclipseClick auto-kills it before each shot, with a 100–500ms recovery window. Live view will be flaky during DSUSB-mode scripts — expected.
Coverage
Sony — both paths (macOS)
On macOS, both the native SDK path and the libgphoto2 fallback work without driver swaps — macOS doesn't have HVCI or the MTP-vs-WinUSB binding problem.
Native SDK bodies (same list as Windows)
Install Sony Imaging Edge Desktop for macOS
Download from Sony's site. The "Remote" component installs the macOS driver Sony's SDK enumerates against.
Set USB Connection to PC Remote, enable PC Remote, then scan
Same two settings as the Windows native path:
- USB Connection: Menu → Setup → USB → PC Remote (or the Network submenu on some bodies)
- PC Remote: Menu → Network → PC Remote → On, Connection Method → USB
Mode dial to M, then Equipment → Sony → Scan.
Fallback bodies (ZV-E10, α6×00, etc.)
USB Connection → MTP (or Auto), then enable PC Remote
Two separate camera-side settings:
- USB Connection: Menu → Setup (or Network) → USB Connection → MTP (or Auto). macOS doesn't need a driver swap, but MTP mode is still required for libgphoto2 to claim the device.
- PC Remote: Menu → Network → PC Remote → On, Connection Method → USB. Without this, libgphoto2 sees the camera but cannot issue remote-control commands.
macOS's ptpcamerad will grab the camera by default; eclipseClick releases it.
Plug in and scan — no driver install
libgphoto2 talks to Sony PTP bodies directly via libusb on macOS. No WinUSB equivalent, no Memory Integrity gate.
Same per-shot ceiling as Windows
DSUSB shutter — Canon and Nikon (macOS)
Plug-and-play HID. macOS doesn't ask for permission for HID devices, so it just works.
Plug DSUSB in, attach camera cable
Same cable matrix as Windows. Equipment tab shows "Connected" immediately.
If your script uses DSUSB on Nikon
See the Nikon (macOS) section above for the ptpcamerad timing note.
Troubleshooting
Sony scan finds nothing on Windows
Check the log (Settings → Open Logs Folder). If you see "Sony SDK found no cameras — switching to gphoto2 fallback" but no driver prompt, your body uses the fallback path and Memory Integrity is still on. Toggle it off (Win Security → Device security → Core isolation), restart, retry. If you see no log line at all, Sony Imaging Edge isn't installed.
Sony WinUSB install hangs for five minutes
Memory Integrity blocks the libwdi driver INF without an error message. The install silently waits at the policy gate until the five-minute timeout. Disable Memory Integrity, reboot, retry the scan.
Nikon "module not found" on Windows
The .md3 file for your specific body isn't in your NIKON_MD3_PATH
folder. Check the file name — it usually starts with
Type00xx_
followed by the model. Also confirm the env var is set (Settings
→ About → Advanced system settings → Environment Variables) and
restart eclipseClick after changes.
Nikon module loads but camera not detected on macOS
On macOS we don't use MAID at all — libgphoto2 is the only path. If scan finds nothing, ptpcamerad has likely claimed the camera. Quit Image Capture, Photos, and any other camera app; unplug + replug the camera; rescan.
Canon SmartScreen blocks the EOS Utility installer
Click "More info" then "Run anyway". Canon's installer is properly signed but Microsoft's reputation system flags low-volume downloads.
DSUSB shows "Disconnected" after working before
Windows occasionally drops HID devices on USB hub power events. Unplug the DSUSB and plug it back in. If it happens repeatedly, move the DSUSB to a port directly on the computer rather than through a hub.
Script Wizard generates too many shots per phenomenon
The wizard uses your measured FPS to cap per-phenomenon shot counts. If you generated the script before measuring FPS, it defaulted to a high estimate (~10 fps). On Sony's gphoto2 fallback path the actual rate is ~1 fps — rerun the FPS measurement and regenerate the script.
Need more help?
Connection Troubleshooting FAQ
Camera not detected, or dropping out mid-capture? Most issues fall into a small set of patterns — work through these before opening a support ticket.
Start here
Most connection issues come down to one of four things: USB mode on the camera, the cable, another app holding the camera, or stale firmware. Walk through these in order before digging into vendor-specific fixes.
eclipseClick does not detect my camera at all
It detected the camera once, then stopped
How do I know my USB cable is good?
Should I update my camera firmware?
macOS
macOS keeps opening Photos or Image Capture when I plug in the camera
eclipseClick asks for permissions on first launch — what should I allow?
I see “Camera blocked by another macOS user session”
Camera worked yesterday, fails after a macOS update
Windows
Windows shows the camera in Device Manager but eclipseClick does not
Windows Photos app keeps stealing the camera
eclipseClick crashes on launch on Windows
Sony
Sony bodies are the strictest about USB mode. Ninety percent of Sony connection failures are fixed by the first item below.