Canon 5D and 350D/Rebel XT driver/library for Windows 7/8/8.1/10 64bit

Last update: 17 February 2020

I used the original Canon library (and in particular the Canon Utilities software) on my old Acer Ferrari PC witth Windows XP for nearly 10 years without any problem, and I was very happy about that. But a couple of years ago I moved to a more modern Windows 7 PC and have also in the meantime acquired a second 350D camera.

This prompted me to find a way to use both camera on the same PC at the same time.
Not having found a suitable solution I decided to write my own, and soon (well, not that soon), this library was born.
Since the kind of photography I normally do is (deep sky) astrophotography, this library has been designed and tested with that kind of use in mind. While other uses of this library are possible, these weren’t as tested as Manual mode.

Software packages

I’ve released two different software packages:

The first one (that can be downloaded here), is for users that just wants to use one or more Canon 350D/Rebel XT or 5D from the PC in WIndows 7/8/8.1/10. It contains only the WinUSB driver (and its .inf file) and my own clone of the Canon Utilities software (called ABUtilties). No installation is required for the ABUtilties software, but it requires the .NET Framework 4 you can download from here if you don’t have it already installed (quite unlikely). For the driver installation see below.

The second one (downloadable here) is for developers who wants to use the Canon 350D/Rebel XT or the 5D in their own program with Windows 7/8/8.1/10. This archive contains the DLL with the C header files, the import library, the programmer’s documentation (in PDF), a command line example program (ABUTestDLL, with C sources, compiled with Open Watcom) and the VB.NET (2010) sources for my clone of the Canon Utilities software.


ABUtilities is my clone of the Canon Utilities software that came on a CD with my Canon 350D/Rebel XT in 2005. Only some basic functions are supported: remote shooting, shutter speed/aperture/ISO/white balancing and a few other things. Only pictures taken with the camera (either with remote shooting or with the shutter button on the camera) will be downloaded. You cannot download images from the compact flash. Also not implemented are the WB Shift setting, exposure compensation, the functions to set camera Date/Time and Owner’s name, image rotation and the shooting timer, all functions available in the original Canon software but not in my clone. Images can be downloaded to a directory of your choice and optionally shown with the program associated to the JPG and CR2 extensions (see the “Destination folder” in the “File” menu).

If you have more than one camera connected to the PC, a camera selection dialog will be shown before showing the main program window. You can also force the software to connect to a specified camera by using the “/sn=<SerialNumber>” command line switch.

A screen shot of the ABUtilities program. You can click on the various icons to change the image settings, just like the original Canon Utilities. Grayed out options are not modifiable.

Note that I developed this software just to test the library and to provide a starting point for other developers who want to use my library from a modern language. It is not intended to be a completed and “production ready” software.


If you find this driver useful and you want to show your appreciation for my work you can help me with a little donation via PayPal


Driver installation

I’m sorry but all the screen shots are in Italian, because that’s what I have. I’ll try in the future to replace them with English versions.

  1. Connect the camera to the PC. Windows will search for the drivers on Windows Update but will not found any suitable driver.
  2. Open the Device Manager (in Control Panel click System and Security. You’ll find it under System). You will see the camera in “Other devices” with an exclamation mark.
  3. Right click on “Canon Digital Camera” and choose “Update Driver Software…”
  4. Select “Browse my computer for driver software”
  5. Select the “Driver” directory from the distribution archive or from some other directory of your choice (here I copied everything to my desktop).
  6. Since my install package is not digitally signed, Windows will display an alert. Continue selecting “Install this driver software anyway”. (The driver binaries are signed, though, since it’s the Microsoft generic USB driver, WinUSB).
  7. You will now find the Canon camera installed as “Canon 350D WinUSB Driver” (or “Canon 5D WinUSB Driver”) under “Imaging devices”. Driver installation is now completed.Inst6

Installation in Windows 8 or Windows 8.1 and 10 is basically the same as the installation in Windows 7, EXCEPT that unsigned packages are not normally allowed to be installed. So on step 6 you will not find the option to continue with the installation of an unsigned driver and installation will be aborted (“A digitally signed driver is required”).
So you have to disable “Driver Signature Verification” to install the custom Canon7.Inf file.

Follow one of these these procedures to disable the “Driver signature enforcement”.

You can also Google for “windows 8 unsigned driver” to find other tutorials.

Once you have this option disabled, you can install the driver as in Windows 7. Note that restarting Windows after having installed this Canon driver will enable this driver signature check again, but the WinUSB/Canon driver you have installed will remain installed.

Driver revision history

  • v1.00: Initial release
  • v1.01: Handled notification for changes in the custom options, added ABCanonGetCustomOption() function
  • v1.02: Added ABC_OPTIONS_HANDLE_THREAD_BUSY option, fixed crash if neither ABCanonSetSaveFilenameW() nor ABCanonSetSaveFilenameA() were ever called, changed return values for the ABC_EVENT_JPG_READY and ABC_EVENT_CR2_READY events. Now these events are more consistent with the return values of all the other events.
  • v2.00: Added Canon 5D support, ABCanonGetCameraType() and ABCanonGetCustomFunction() functions.
  • v2.01: (19th March 2017) WINUSB.DLL is no longer implicitly linked but it is explicitly loaded during ABCanon7 initialization. This allows a third party program to implicitly link ABCanon7.DLL and start execution even if no WINUSB.DLL is installed in the system.
  • v2.02: (17 February 2020) Fixed an issue that could cause excessive CPU usage, added the ABCanonGetPQImageCount() function, added a new download mode and fixed a problem that prevented the library to work with Windows 10. Note that the problem with Windows 10 is NOT related to the USB driver, so you don’t need to update the driver installation, just the application and the ABCANON7.DLL library.

The future

After having implemented the support for both the 5D and the 350D/Rebel XT, the only remaining camera to support with the old Digic2 processor are the Canon 20D, 30D and 400D, which I may work on in the future.

Final words

This freeware software may be freely used and distributed, but may not be modified without the author’s permission.
These programs are provided as is without any guarantees or warranty.

Although I’ve attempted to find and correct any bugs in these programs, you agree that the use of the software is done at your own discretion and risk and with agreement that you will be solely responsible for any damage to your computer system/camera or loss of data that results from such activities.

I’d like to thank Emmanuele Sordini ( for loaning me his Canon 5D.



Skip to comment form

    • Rory Patrick Sheridan on January 20, 2019 at 01:06
    • Reply

    Ciao, Grazie per il lavoro, ma sfrotunatamente non funziona per me. Ho installaot il driver ma ABUtility dice solomante “busy” e non cambia. Anche, Canon Utility non vede la camera in PC Connection. Hai altre instruzioni che forse aiutano?

    1. Non mi viene in mente niente. Però se anche il sw originale non vede la camera, potrebbe essere un problema della camera, magari sottoforma di qualche impostazione. Ah, e tieni presente che la camera è sempre BUSY se hai fuori il menù.

    • Oliver on March 3, 2019 at 11:48
    • Reply

    Hello! I tried to use this to somehow tether my Canon 350d to my Windows 10 x64 pc but when the camera is in “PC Connection” mode, it doesn’t detect it. When it’s in “Print/PTP” it does but I cant use the ABUtilities because the camera is “buSY”. How can I fix this?

    1. Hi!
      I’ve never tested the driver on a Windows 10 PC, but it should work fine. The camera must be in “PC Connection mode”. In “Print/PTP” it behaves differently and will not be detected by my code.
      Did you install the driver as per the instructions? Can you send me an email with a “device manager” screenshot of your PC with the camera connected? It should be displayed under “Imaging devices”. I want to understand if the problem is on the driver side or it is in the application program.

        • Nick on December 31, 2019 at 05:17
        • Reply

        Have you looked into this issue since the previous comments. I’m having the same issues and followed your instructions to install the driver. I too am using windows 10

        1. Not really.
          I’d like to have a “device manager” screenshot of your PC when the camera is connected in PC mode (and powered up) to understand if the problem is from the driver or the application code, and start from there.
          Other useful informations would be the exact camera model (I’ve tried only with european Canon 350D) and camera firmware revision.


    • Chris on January 19, 2020 at 00:01
    • Reply

    I too get a “busy error” using a 350D under windows 10

    Below I’ve included the error dump from your ABUtilities program, let me know if you need more information, Thanks (sorry for the English) -Chris
    See the end of this message for details on invoking
    just-in-time (JIT) debugging instead of this dialog box.

    ************** Exception Text **************
    System.NullReferenceException: Object reference not set to an instance of an object.
    at ABUtilities.Main.ModifiableItems_Click(Object sender, EventArgs e)
    at System.Windows.Forms.Control.OnClick(EventArgs e)
    at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    at System.Windows.Forms.Control.WndProc(Message& m)
    at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
    at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
    at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

    ************** Loaded Assemblies **************
    Assembly Version:
    Win32 Version: 4.8.4075.0 built by: NET48REL1LAST
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
    Assembly Version:
    Win32 Version:
    CodeBase: file:///C:/Users/kristi/Documents/Chris_Folders/Astro_Science/ABUtility/ABUtility/ABUtilities.exe
    Assembly Version:
    Win32 Version: 14.8.3752.0 built by: NET48REL1
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualBasic/v4.0_10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
    Assembly Version:
    Win32 Version: 4.8.4042.0 built by: NET48REL1LAST_C
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
    Assembly Version:
    Win32 Version: 4.8.4001.0 built by: NET48REL1LAST_C
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
    Assembly Version:
    Win32 Version: 4.8.3752.0 built by: NET48REL1
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
    Assembly Version:
    Win32 Version: 4.8.3752.0 built by: NET48REL1
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
    Assembly Version:
    Win32 Version: 4.8.4110.0 built by: NET48REL1LAST_B
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
    Assembly Version:
    Win32 Version: 4.8.3752.0 built by: NET48REL1
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
    Assembly Version:
    Win32 Version: 4.8.3752.0 built by: NET48REL1
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Accessibility/v4.0_4.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
    Assembly Version:
    Win32 Version: 4.8.3752.0 built by: NET48REL1
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Remoting/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll

    ************** JIT Debugging **************
    To enable just-in-time (JIT) debugging, the .config file for this
    application or computer (machine.config) must have the
    jitDebugging value set in the section.
    The application must also be compiled with debugging

    For example:

    When JIT debugging is enabled, any unhandled exception
    will be sent to the JIT debugger registered on the computer
    rather than be handled by this dialog box.

    • Zach on May 6, 2020 at 20:41
    • Reply

    I’m trying to install your drivers and I keep on getting the message that Windows has determined that driver software for your device is up to date

    MTP USB device

    Any way around this ?


    1. Yes. The camera is recognised as an MTP device if the “Communication” entry in the (“yellow”) camera menu is set to “Print/PTP”. Configure it as “PC Connection” and you will be able to install the camera as a WinUsb device and use my software.


        • Zach on May 11, 2020 at 02:20
        • Reply

        Thanks, I got the drivers to install

    • Wayne Boline on May 16, 2020 at 06:05
    • Reply

    Thank you! Works. I tried to make a small donation. The Donate button brought me to PayPal, but there did not seem to be a way to pay you. Did you complete the PayPal.Me link?

    1. No, I did not. I wasn’t aware of the change in PayPal donate policy. Now I’ve updated the link! Thanks for reporting this problem!

  1. Thank you, works great on Windows 10 Home 64-bit.

    My thoughs, didn’t test yet if they exists, but please add keyboard control for optios.. Like aperture plus aperture minus, speed plus, speed minus etc?

Leave a Reply

Your email address will not be published.