Automating Canon EOS Uploads

This short guide assumes you already run Immich and you are using an external library folder. In my case on TrueNAS, but any NAS works as long as it is reachable on the network and permissions are correct.

Canon cameras can connect to WiFi and send images to the EOS Utility running on a computer on the same local network. EOS Utility writes the incoming files to a folder you choose. If that folder is on your NAS, the VM becomes a bridge between:

Nothing is uploaded to a cloud service and files move over your LAN and land directly in your storage.

Components

Canon EOS camera with WiFi transfer support (e.g, EOS R6)

A Windows machine running EOS Utility (I used a Windows VM on Proxmox)

A network share on your NAS (SMB share is fine)

A destination folder that Immich can scan as an external library

High level setup

Create a lightweight Windows VM on Proxmox. Keep it minimal, it only needs network access and enough disk to run EOS Utility. Disable sleep and hibarnation, and make sure your firewall allows incoming connections from the camera.

Connect the VM to your NAS. Map the NAS share to a drive letter in Windows, or use a UNC path. Use a dedicated NAS user that has write access to the upload folder.

Install Canon EOS Utility in the VM. Pair the camera to the VM using Canon's WiFi pairing flow. Once paired, the camera can push files to EOS Utility when both are on the same network.

Configure EOS Utility for unattended use, so you never have to touch this VM again. Set EOS Utility to start with Windows, then enable the option to start EOS Utility automatically when the camera connects. Make sure to set the download or import destination to the NAS folder, not the VM's local disk. This can be done during the first file push.

Point Immich at that folder. If the NAS folder is already part of an Immich external library, you are done. If your Immich setup expects a different folder layout, add a simple move or copy step on the NAS or VM to place files into the folder Immich scans.

Trigger library scans. Configure Immich to scan the external library on a schedule, or run scans when you know you have imported a batch.

Drawbacks

This flow depends on EOS Utility, so it depends on Windows. Also, I had the battery die mid-upload a few times, which corrupted some of the uploaded files, but this is can be fixed by re-uploading the images later with a full battery, so no data is lost. Still, I recommend traditional SD card transfer for long videos or big batches.