About this project

canon-remote is a USB library for Canon digital cameras in Python with pyusb, speaking the so-called normal mode. It originally started as a Python port of gphoto2's Canon library for a PowerShot G3. Only the subset necessary for this model was ported, but it should be usable with other models from that era (not without hacking) and will almost surely not work on much newer cameras, not without serious hacking. The project was created because gphoto2 lacks support for certain remote capture features, namely locking the autofocus and setting the autofocus mode to macro.

The latest project documentation can be found at the project homepage. Or you can build it from source.

The source is hosted at bitbucket.

You can contact me at


canon-remote is licensed under GPLv3.


Canon is a registered trademark of Canon Inc. This project is an unofficial implementation of their closed USB camera protocol. I am not affiliated with Canon Inc. No information or code from them was used for this work. The protocol was reverse-engineered by the guys behind gphoto2, thanks guys!


Use this at your own risk. I haven't damaged my camera with it yet, but it's not impossible.