Skip to Main Content

Hack Your Canon PowerShot to Add Superpowers

Enhance your Canon camera—and awaken your inner photo geek—with the ultimate hack, adding RAW support, motion detection, time-lapse photography, and much more.

September 4, 2008

The Canon PowerShot family is the most popular line of digital cameras on the market. If you check Flickr's Camera Finder, for example, you'll find that more than 420 million PowerShot photos have been posted to the site, versus 230 million Sony Cyber-shot images, and even less for Nikon, Kodak, and the rest.

The distinction is well deserved. The feature-rich, well-built PowerShots tend to be very reliable and take excellent photos for their class, earning Canon frequent Editors' Choice awards and top scores on our .

But as good as PowerShots are, many people want more from them. For example, with the exception of the PowerShot G9, none of the current models can produce RAW images—the lossless output format that gives the most data possible about an image so the photographer can produce the best possible output. And knowledgeable shooters often like to bracket their shots, taking multiple versions at different settings to increase the odds of capturing the scene right.

Fortunately, an enterprising programmer named Andrei Gratchev figured out how to get under the cameras' hoods and extend their capabilities. Thus the Canon Hacking Development Kit, or CHDK, was born.

CHDK is a firmware extension for many PowerShot models that adds RAW support, auto-bracketing, motion detection, time-lapse photography, and much more. The open-source project is now maintained by a community of developers and enthusiasts. Rather than actually replacing your firmware, which would undoubtedly void your warranty, CHDK is a firmware extension that runs off an SD memory card. Insert a card with the CHDK software and your camera has a bunch of great new features. Remove the card and your camera is just as it always was.

The installation procedure is well documented in the CHDK for Dummies section of the CHDK wiki, but here's an overview of what you need to do. —

Check That Your Camera Is Supported

CHDK works on most PowerShots that use Canon's DIGIC II and DIGIC III processors, but the first thing you need to do is go to the CHDK wiki's home page and check whether your camera is supported. If it's not, there will almost certainly be a page in the wiki about your camera explaining how far along the community is in porting the software to that model.

If your camera is supported, you'll also need to check its firmware version. To do this, insert an SD memory card into your computer's card reader. Open the card in Windows Explorer, right-click and select New | Text Document.

Name the document ver.req.

Put the card into your camera. Turn the camera off and move the mode selector switch or dial to Play mode. Turn the camera back on. Then, while holding down the FUNC SET button, press the DISP button. Note the version displayed.

Installing CHDK

A CHDK contributor known as whim created a tool called CardTricks, which has a fairly simple graphical user interface for installing CHDK onto an SD memory card. Unfortunately CardTricks is hosted from a download site full of pop-ups, so make sure your security software is up to date when you visit.

Follow the instructions on the CHDK wiki's CardTricks page to format the memory card, make it bootable, and download the proper version of CHDK. Also note that if your card's capacity is greater than 4GB, you'll have to create partitions. The wiki explains this as well.

Once the memory card is ready, take it out of the card reader, slide the card's write-protect tab to On to enable CHDK, and pop it into your camera. (Don't worry, you'll still be able to write to the card when it's in the camera.) Set the camera to its picture-taking mode and turn it on. Below, you can see what appeared on my PowerShot A570 IS, one of Canon's basic point-and-shoot cameras. (If the card is not write protected, the CHDK tools will be ignored and the camera will work without enhancements.)

I also tested CHDK on PowerShot SD630 and SD700 ultracompact cameras. There are actually multiple versions of CHDK, including the original; a more feature-rich version called AllBest, which seems to be the one pushed the most by the community these days and which I used for testing; and one called StereoData Maker (SDM), which is primarily for taking stereo images with two cameras but can also be used for normal shooting with a single camera. (If you've ever used a GAF Viewmaster, you'll understand SDM.)

After the initial splash screen, you'll notice that the LCD doesn't look very different except for a few new indicators at the top of the screen. From left to right, these are a numerical display of the memory card's free space, a battery meter, and a graphical display of the card's free space.

Using CHDK

If you did nothing at this point, your camera would work exactly as it had in the past. But what fun would that be? So let's get started using CHDK. To access the tools, press the CHDK Alt button, which is the Print button on the A570, but the assignment varies by model. Now press the Menu button. Voilà: Camera options galore. You'll want to explore all of these on your own, but here's a quick summary:

• Extra camera operations
Here you can override the camera's shutter speed, pushing it to speeds faster and slower than Canon allows out of the box. For instance, the A570 offers shutter speeds from 15 seconds to 1/2,000th of a second. With CHDK, you can choose from 64 seconds to 1/32,000th! You can override aperture settings, focus, and ISO values (wanna try ISO 5000?), and even customize how the camera's auto-exposure mode varies ISO. Cameras increase ISO when shutter speeds get too slow to hold the camera by hand. If you feel steadier than the average Joe, you can set the minimum shutter speed down to 1/8th of a second.

• OSD parameters
OSD refers to the camera's on-screen display. CHDK adds tremendous control over what information is displayed when shooting and reviewing images. You can download a wide variety of grids and other overlays from the CHDK site. These are just little text files that you paste into a text editor such as Notepad and save to the memory card's Grids folder.

• Video parameters
CHDK isn't just for still photography. Two key elements of video recording that CHDK lets you change are video quality and optical zooming. PowerShot cameras record in the Motion JPEG (MJPEG) format. It's an easily editable format that doesn't require a great deal of processing power (compared with H.264, for example), but it's not very efficient. CHDK's compression settings let you store a lot more video on the card, albeit at the expense of quality. Like many point-and-shooters, several of the PowerShots don't let you zoom while recording. This is done typically because the lens zoom motor is loud and close to the camera's microphone, so the zooming would be heard on the video. CHDK lets you override this restriction and use the zoom. You can even choose to mute the microphone while you're zooming in and out.

• RAW parameters
Of Canon's current PowerShot models, only the G9 lets you create RAW files. CHDK gives this capability to all the supported cameras. Note that these are not standard Canon RAW files, but the wiki lists several applications that work with the files, including ones that will resave them in Adobe's DNG format.

• Histogram parameters
If you like reading histograms to see how the various brightness levels in your image will be exposed, you'll love CHDK. You can display histograms for red, green, and blue at once, and choose when the histogram appears.

• Zebra parameters
Want to know which details are going to get lost because they're too bright or too dark? Turn on the zebra settings and they'll flash in the LCD.

The complete list of options is too numerous to detail here, but there's very little you can dream of that can't be done. You can even play Reversi on the camera if you're bored.

Once you've customized your settings, press the camera's Alt button again to exit Alt mode. Otherwise, when you press the shutter button to take a shot, nothing will appear to happen, because the button has been reassigned for running scripts. Which leads us to… —

Scripts

In addition to all the other cool features you can set in CHDK's Alt mode, you can run scripts on the camera to do even more. Many are posted on the wiki. To use a script, copy the text from the wiki page to Notepad. Save the file to the memory card's SCRIPTS folder (created by CHDK) with a .bas extension and put the card back in the camera.

On the camera, press the Alt button and then press the FUNC SET button. Follow the on-screen prompts to load a script. Once loaded, you can customize the script's settings.

Here are some of my favorite scripts:

Multipurpose motion detector
This script looks for changes in the scene that the camera is monitoring. Once there's a significant-enough change, the camera takes a picture. Among the Motion Detector's many options, you can set the camera's sensitivity, controlling whether it focuses when it sees a change or simply shoots without focusing to avoid delay. To test this, I focused the camera on an outdoor scene and tossed my dog a Frisbee. When he came into the frame to catch the disc, the camera took a picture. (I should have prefocused and used manual metering to really catch this scene properly, but you get the idea.)

A popular application of CHDK is to capture photos of lightning by combining motion detection with extra-long shutter speeds. There are several good examples of this on Flickr.

Time-lapse photography
When my kids were young, I always wondered how they went from being neatly tucked in bed to waking completely turned around without blankets. Fortunately my old film-based SLR had an intervalometer, and I set it up over their crib so that it automatically took a photo every 15 minutes for 8 hours. The time-lapse sequence was fascinating.

Even without CHDK, most PowerShots can do basic time-lapse photography natively. Go into self-timer mode and choose the custom self-timer. You can configure the camera to shoot up to ten photos at intervals from zero to 30 seconds apart. But this is no match for what you can do with CHDK. Using Ultra Intervalometer gives you complete control over how many shots are taken, at what interval, and with how much delay (in case you don't want the camera to start shooting as soon as you set the script). Also, unlike the built-in self-timer, Ultra Intervalometer takes a new meter reading before each shot, which can be critical as lighting changes throughout the day. The video below is a series of 28 photos taken every 5 seconds with the A570, which was fastened to my bicycle. The video is compressed to 4 frames per second.

High-dynamic-range photography
Most digital cameras have a very limited dynamic range, meaning that they cannot capture all the highlight details and all the shadow details in a single exposure. For instance, if you're shooting an interior scene of a room with a window, as in the example below, you can't take a photo that will simultaneously capture the room's detail and the landscape outside the window.

To get around this limitation, there are software tools that will stack multiple exposures of the same scene to increase the dynamic range. CHDK makes this process much easier. Technically you don't even need a script to do this, though you can use HDR time lapse if you find it easier. I shot the following linked images just using CHDK's custom bracketing tools and PowerShot's custom self-timer. I metered the at 1/320 second at f/4.5 at ISO 80. The looked best at 4/5 second at the same aperture and ISO. I set the initial exposure for the outdoor scene in the PowerShot's manual mode and then configured CHDK to take each succeeding image with an exposure twice as long (i.e., 1/160, 1/80, and so on). I set the custom self-timer to with no interval in between images. A few moments later, I had my images. I brought them into Photomatix Pro, a popular HDR tool, and with a few clicks I had my . —

Odd and Ends

Since CHDK with its scripts and other files reside on the memory card, they will be available only when that memory card is in your camera. Erase the card and you'll have to start over. That's why there's the clever write-protection trick, which makes the card writable in your camera (so you can take photos and videos) but not in the PC. If you use multiple cards, you'll have to copy your settings to each one.

If you like the idea of CHDK but aren't quite sure how you'll use it, look to the Flickr CHDK pool for inspiration. There's also an excellent CHDK bulletin board forum where you can see what others are doing as well as get help using CHDK or even contributing to the product's development.

Currently there are no tools like CHDK for cameras other than PowerShots, but if you own a PowerShot, CHDK will awaken your inner photo geek. It's bound to make your DSLR-toting friends jealous of your little point-and-shooter.