If you're using a consumer grade point-and-shoot Canon digital camera, you've got hardware in hand that can support advanced features way beyond what shipped in the box. With the help of a free, open source project called CHDK, you can get features like RAW shooting mode, live RGB histograms, motion-detection, time-lapse, and even games on your existing camera. Let's transform your point-and-shoot into a super camera just by adding a little special sauce to its firmware.
What is CHDK?
The Canon Hacker's Development Kit, aka CHDK, is a firmware enhancement that supports an impressive array of Canon digital cameras. I emphasise the enhancement aspect of CHDK because the tool is non-permanent and non-destructive, meaning that you load it onto your camera whenever you want to use it; CHDK makes no changes to your camera, and turning it off is simply a matter of restarting your camera. Installing CHDK involves copying a couple of files onto your camera's memory card; permanently removing it from your camera entails deleting those files. It's simple and powerful (sort of like hacking your router firmware) but even easier.
What Can CHDK Do For Me?
Now that you're convinced that CHDK is easy to install and use, let's consider what makes it worth doing so. From the CHDK wiki: (Pictures below of CHDK in action also from the CHDK wiki, since I have only one camera and it's the one running CHDK.)
- Enhanced Image Capture: CHDK supports RAW format for pictures (in addition to JPEG), longer recording time and length for videos (up to 1 hour or 2GBs), and several new compression options.
- Additional Information On-Screen: With CHDK, you can customise your on-screen display to your heart's content, including worthwhile information like remaining battery life, histogram, depth of focus, and more.
- Additional Photographic Settings: CHDK takes many of the features already available on your camera and gives you way more options, including longer exposure times (up to 65 seconds), faster shutter speeds (1/25,000 sec or faster), automatic bracketing of your photos, and more.
- Support for Small Programs/Scripts: CHDK can run small scripts that will allow your camera to perform a set of actions based on the conditions of the script. Tonnes of scripts are available, and they provide functionality like motion-sensing photography (which reportedly works for lightning strikes) and unlimited interval time-lapse photography (see video below).
Even better, CHDK is being actively developed, which means that new features are always on the horizon. There are actually several versions of CHDK in development, but the version we're going to focus on is called the Allbest build—a build that incorporates many of the best features available in other builds (get it?).
What You'll Need
To use CHDK, all you need is a supported Canon digital camera and an SD memory card. If you've already got a supported camera then it only follows that you've got the memory card, so you're already well on your way.
Even if your camera is listed as supported, you must know your camera's firmware version before you're ready to install CHDK. Here's how.
Determine Your Firmware's Version Number:
In order to determine your camera's firmware version, you need to create an empty file on your computer called
ver.req.txt), and copy this file to the root directory of your SD card. On Windows, for example, you could right-click your desktop, select New -> Text File, and then rename the
untitled.txt file to
ver.req. (Windows Explorer should be set to show extensions.) Alternately you could create an empty text file in Notepad, click File -> Save as, name the file
ver.req, and save it as type All files.
If your digital camera supports disk mode (i.e., if it shows up on your computer with a drive letter or as a mounted drive), all you need to do is create the empty
ver.req file and copy it over to the very first level of the drive. If your camera does not support disk mode, your best bet is to stick your SD card in a reader and then copy
ver.req to the card. Finally, if your camera doesn't work in disk mode and you don't have an SD card reader, a program called the uploader is available. (Search for it on the linked page.) This program is supposed to address this problem. (I haven't tested it, but it's supposed to upload files to cameras that do not appear as a disk.)
After you've copied the
ver.req file to your camera, determining your firmware version is simple. Just turn your camera on (in review mode, not in camera mode), press and hold Function/Set (FUNC. SET on my camera), then press and hold the Display (DISP) button. Your camera should flash information on the screen, including text that looks something like this:
Firmware Ver GM1.01B
The 1.01B part is your firmware version.
Download and Install the Appropriate CHDK Files:
Now that you've got your camera's firmware version, you're ready to see if it can run CHDK and then go ahead with the installation. If you want to go with the Allbest build on your camera, head to the download page and find the build that matches both your camera and your firmware version. For example, my camera is a Canon SD1000, firmware version 1.01B, so the file zip file of Allbest I download looks like this:
You may also want to check out the firmware comparisons page to see which CHDK builds will support your camera's firmware version. If your camera is supported but your current firmware is not, you can download an official firmware update from Canon so that you're using one that is.
Once you've downloaded the proper build, you'll unzip a folder containing at least two files—one called BOOTDISK.BIN and another called PS.FIR. All you have to do now is copy those to files to the root of your camera's SD card, again either by dragging them to the top level of your camera in disk mode, through a card reader, or using a program like the uploader mentioned above (though there are special steps for Mac users).
Now that you've installed CHDK, all that's left is to fire it up and try it out. As I said, CHDK is non-destructive to your current firmware, so if you just turn on your camera you won't notice anything different. You have to run CHDK each time you want to use it. Here's how:
Run CHDK on Your Camera
Again, turn your camera on in review mode. Now hit the Menu button and head all the way to the bottom of the menu options, where you should now find a Firm Update... option (if this isn't there, either CHDK isn't correctly installed or you didn't start in review mode). Hit SET on Firm Update and you'll be asked to confirm a firmware update. Select OK and your camera will load CHDK, you'll see a splash screen telling you that you're using CHDK, and then you'll likely see a few more bits of info on your onscreen display.
You're now running CHDK.
How to Use CHDK
Before you start using CHDK's many features, you'll need to understand the new key settings and shortcuts for operating with CHDK. The important thing to know is that even with CHDK running, your camera works the same as always under normal conditions. Your buttons do the same thing as always, with the exception of one—either the direct print button or the user selectable button. This will put your camera into what the CHDK documentation refers to as ALT mode. When you're in ALT mode, your camera's keys take on new meaning. Here's a rundown of the most important (you can see more on the CHDK wiki):
- Toggle RAW: ALT mode + (+/-) key for A-series cameras; ALT mode + FUNC for S-series; ALT mode + ERASE for G-series
- Open Main Menu: ALT mode + MENU
- Toggle Histogram: ALT mode, then Half-press shutter + Up
- Toggle CHDK On-Screen Display: ALT mode, then half-press shutter + Right
I found that some of the shortcuts listed were hit-or-miss—for example, on my S-series camera ALT mode + DISP toggled RAW mode. The most important thing to know is that pressing MENU in ALT mode brings up the alternate CHDK menu rather than your camera's default menu. From there, you can adjust virtually any of CHDK's settings.
The best way to get to know CHDK is to play around with the menu to get a feel for what it has to offer. (Be sure to check out Games under Miscellaneous stuff for a quick round of Reversi.) If you've never used some of the more advanced functionality on other cameras, it may seem daunting at first, but with a little effort you'll likely learn to love your camera's new features. And don't worry, if you ever tweak CHDK to a point that you're not happy with it but you don't know how to undo what you've done, you can just reset all of the options. If CHDK ever freezes and you can't turn it off, just pop out your camera's batteries and restart. Everything will be back to normal.
Extra Scripts and Other Goodies
Now that you're running CHDK, you may want to test out its scripting capabilities. As I mentioned, CHDK runs scripts written in a shorthand version of BASIC called UBASIC. If you're interested in coding scripts, you can get started here and here. Most of us, however, just want to use scripts.
To do so, first you need to find and download a script. There are tonnes of user submitted scripts to choose from, so just find one you like—such as a motion detection, unlimited interval shooting, or high-speed shutter and flash sync script—and download it to your computer. Installing the script for CHDK to use is a simple matter of moving it to your SD card in the CHDK/SCRIPTS/ folder.
To activate a script, open the Script menu (ALT mode + FUNC on my camera), navigate to the scripts folder, and select the script. To execute the script (i.e., to run it), just press the Shutter in ALT mode.
Automatically Running CHDK
Once you've gotten comfortable with CHDK, you may want it to load automatically whenever you turn on your camera. The CHDK wiki explains how.
I'm new to CHDK, so if you've been playing around with it since we first posted about it or longer, share your experience in the comments.