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

Last update: 5 January 2021

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 ABUtilties2). No installation is required for the ABUtilties software, but it requires the .NET Framework 4.5 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 (2013) sources for my clone of the Canon Utilities software.

ABUtilties2

ABUtilities2 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).
ABUtilities2 replaces ABUtilities distribuited in previous versions of this library. ABUtilities2 gains the shooting timer but loses Windows XP compatibility (because it requires .NET Framework 4.5). You can still use the old ABUtilities by copying it from older libraries if you want.

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 ABUtilities2 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. The “Timer” button in upper right corner lets you configure the shooting timer.

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.

Donate

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

Donate

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.
  • v2.03: (5 January 2021) Added a couple of new events (ABC_EVENT_BUSY – with automatic busy polling, ABC_EVENT_ALL_DONE), added few more information to the ABC_EVENT_DOWNLOADING event and moved some notification to a new thread to avoid deadlocks. The ABUtilities sample program has been now replaced by ABUtilities2, losing Windows XP compatibility but gaining hotkeys and a shooting timer.

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 (http://www.bloomingstars.com) for loaning me his Canon 5D.

Downloads

22 commenti

Vai al modulo dei commenti

    • Rory Patrick Sheridan il January 20, 2019 alle 01:06
    • Rispondi

    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 il March 3, 2019 alle 11:48
    • Rispondi

    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.
      Thanks!
      Angelo

        • Nick il December 31, 2019 alle 05:17
        • Rispondi

        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.

          Angelo

    • Chris il January 19, 2020 alle 00:01
    • Rispondi

    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 **************
    mscorlib
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4075.0 built by: NET48REL1LAST
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
    —————————————-
    ABUtilities
    Assembly Version: 1.0.0.0
    Win32 Version: 2.0.0.0
    CodeBase: file:///C:/Users/kristi/Documents/Chris_Folders/Astro_Science/ABUtility/ABUtility/ABUtilities.exe
    —————————————-
    Microsoft.VisualBasic
    Assembly Version: 10.0.0.0
    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
    —————————————-
    System.Windows.Forms
    Assembly Version: 4.0.0.0
    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
    —————————————-
    System
    Assembly Version: 4.0.0.0
    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
    —————————————-
    System.Drawing
    Assembly Version: 4.0.0.0
    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
    —————————————-
    System.Configuration
    Assembly Version: 4.0.0.0
    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
    —————————————-
    System.Core
    Assembly Version: 4.0.0.0
    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
    —————————————-
    System.Xml
    Assembly Version: 4.0.0.0
    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
    —————————————-
    Accessibility
    Assembly Version: 4.0.0.0
    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
    —————————————-
    System.Runtime.Remoting
    Assembly Version: 4.0.0.0
    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 system.windows.forms section.
    The application must also be compiled with debugging
    enabled.

    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.

  1. 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 ?

    thanks

    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.

      Ciao
      Angelo

      1. Thanks, I got the drivers to install

    • Wayne Boline il May 16, 2020 alle 06:05
    • Rispondi

    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!

  2. 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?

    • Bert Kruger il October 16, 2020 alle 04:38
    • Rispondi

    Great software on Windows 10 for the 350D. I have been looking for ages for software to control the camera from Windows 10 because the camera has (almost) become obolete and was about to be thrown in the bin.

    I would like to test the 350D with my telescope and Sharpcap software. Sharpcap (and other software) has the ability to use Camera folder input instead of communicating directly with the camera. As long as the camera can store images in the folder, Sharpcap can be used to stack the images and you can apply a display strecth on the image to improve what you can see in realtime.

    A nice feature for ABUtilities would be an option to repeat capturing without having to click on the Camera button every time to take single images. So, some sort of loop (set with either a counter – “For i = 1 to CounterValue” – or an indefinite loop that can be canceled somehow). Unfortunately I don’t know how to make the changes in the software myself but maybe somebody that knows how will do it one day.

    Much appreciated so far. I will keep you posted once I have tested it on my telescope and with Shapcap’s stacking.

    1. A nice feature for ABUtilities would be an option to repeat capturing without having to click on the Camera button every time to take single images.

      I may add it in the future. For the next release of my library I’ve planned a rewrite of the ABUtilties program to use the new features I’ll add to the library, so I may add this one too.
      Unfortunately, I don’t have a timeframe for this, since I’m pretty busy right now.

      Ciao
      Angelo

    • Bert Kruger il October 18, 2020 alle 08:30
    • Rispondi

    The 350D used to be my wife’s camera and it is my first time exploring a DSLR camera. After playing a bit with the 350D I have realised that there is a burst (or continuous shooting) mode built into the camera and when that is set, you can capture a burst of images by holding in the shutter.

    The software actually displays the camera setting correctly as the DRIVE MODE (of the camera) and as the Me.PBDriveMode.Image. It also displays the available shots of the camera as Camera.RemainingShots (AvS). However, when set in this mode (on the camera) and the camera button is clicked on ABUtilities, only one shot is activated and not a burst of shots. Anything else that I must set to activation a burst of images from the software?

    Alternatively: is there a parameter that must be sent with the Camera.Shoot() function of the software to activate the continuous shooting?

    Best regards
    Bert

    1. However, when set in this mode (continuous shooting, on the camera) and the camera button is clicked on ABUtilities, only one shot is activated and not a burst of shots.

      Well… I don’t think that continuous shooting can be activated using USB shooting. The original EOS utility software behaves exactly like mine, in the sense that triggering a shot while in continuous shooting mode, a single shot is done. So I think that the limitation comes from the camera firmware and not from the PC software.

      You may, however, trigger the shots with a remote trigger connected to the camera, though I’m pretty sure that as long as the image has to be transferred to the PC via USB, the continuous shooting will not be done. It should work, obviously, if you configure the camera to save the image to the CF only (and the remote trigger).

      Hope this helps
      Ciao
      Angelo

    • Bert Kruger il October 19, 2020 alle 12:25
    • Rispondi

    Hi Angelo

    Thanks for the reply.

    I am by no means a VB or C programmer but have done some programming of database systems about 20 years ago (but never with event driven programming).

    I have played around with your source code and with minimal changes managed to trigger continuous mode from my Win 10 PC (when the camera setting is in Continuous mode). If it is running in continuous mode, each image is downloaded to the PC’s capture folder before the next image is taken. It only triggers the next shot when the file is saved on the PC (so there may be a slight delay because of this). I’ve added a new button to stop the continuous shooting after which the user could for instance change any of the camera parameters and when changed the continuos process can be started again (without exiting the program) by clicking on the camera button. No remote trigger is required to make it work and also not necessary to save it on the CF card.

    I know a good VB programmer would be able to do what I have done much better but for my purpose and needs it is exactly what I wanted from the software and camera.

    If you want to have a look at the changes, please send me an email or dropbox detail and then I will forward it to you.

    Best regards
    Bert Kruger

  3. Hi what a life saver just got an old canon 350 again having sold mine five years ago and wanted to get another one for astrophotography as I’m starting up again but then found out it’s got no 64bit driver then found this page. I’m still trying to get win 1o to let me load the driver after putting it into test mode but no luck so far but I’m sure with a bit more trying I can sort that out and try out your version of canons software. Thought my camera was doomed and I loved my 350d did all my imaging with it after I modded it in 2010 and ran it under xp my how things have changed. Thank you so much for this will let you know when I get it up and running on my win 10 laptop http://www.astrocasto.blogspot.com

  4. Hi again, I managed to disable windows 10 from stopping me downloading the driver and once that was done had your utility up and running connected my 350d but no joy, so I replaced the cable and put in a new cf card hooray it works and I can now take a photo from my laptop with your utility. Its functions are limited but when you cant get backyard eos to connect to your 350d because your running a 64bit system then this little gem lets you take a shot and test the focus on the nice big screen. If you could do what canon refuses to do and get it working on backyard eos and other software packages I’m sure you would have many 350d owners jumping for joy. But for now, abutilitys is awesome thank you.

    1. Happy that you made your camera work!
      And you could also ask to the developers of your favorite softwares to use my DLL in their software. It’s free and the documentation is available in the developer version of the archive.
      Thanks!

  5. Cheers I did write to cannon but they just answered with the standard polite but not helpful reply as I expected them to but I have heard that the 350d works ok with a stellar mate so on a raspberry pi so might try that later on when I have upgraded my mount to go to.
    Cannons reply
    Date: 04/11/2020
    Ticket: 1-89315825190

    Dear Mr. Casto,

    Thank you for your request and for contacting Canon.

    We would like to inform you that we have never produced any drivers for the EOS 350D for 64-bit or 32-bit operating systems. That is the same for all of our cameras as there are no drivers needed for the camera to be detected by a computer.

    Yours sincerely,

    N. Bantras
    Canon Services & Support

Leave a Reply

Il tuo indirizzo email non sarà pubblicato.