Skip to Main Content

Unlock the Secret "Pro" Features of Your Canon Point-and-Shoot with CHDK


You don't need to spend thousands of dollars on a camera just for features like motion sensing, time lapse, RAW images, and control over exposure and shutter speeds. If you have a simple Canon point-and-shoot, you can customize it with these features and a whole lot more using the CHDK enhancement.

CHDK stands for the Canon Hacker's Development Kit, and it's a firmware enhancement that adds a ton of new features—particularly those available on more expensive, professional DSLRs—to Canon point-and-shoot cameras. It's incredibly simple to install and doesn't modify anything on your camera, so you have very little to lose by trying it out. Plus, it supports a ton of different cameras, and only takes a few minutes to set up. Here's how it works.

What You'll Get with CHDK

Point-and-shoot cameras have more than enough features for the average user, but if you've learned the basics of photography and are looking to do some cooler stuff with your photos, CHDK will give you a ton of enhancements to experiment with. CHDK includes things like:

  • More On-Screen Information: CHDK adds a wealth of new information to your on-screen display, including current battery life, remaining space on your SD card, a color histogram, depth of focus, and more. You can completely customize the display so you only fill it with the things you need.

  • RAW Image Formats: When you take a picture, your camera usually does a bit of automatic post-processing like contrast and other level adjustments. Shooting in RAW disables this, so you can make these decisions yourself when you edit the photo. It's better for professional-level, high-quality shooting, but most point-and-shoots don't support it. CHDK gives you the option.

  • Manual Controls: Many situations—like taking low-light concert photos or super-fast action shots—require you to make manual adjustments to your camera's aperture, shutter speed, exposure time, and other settings. CHDK gives you a ton more room to play with these settings that you have by default, letting you get better photos at concerts, sporting events, and other things that may have been more difficult before.

Time Lapse, Motion Sensing, and More: CHDK can run small scripts, many of which come bundled with the software, that emulate features of more expensive cameras. For example, you can take time lapse photos (see the video to the right), snap a picture when your camera detects motion (which is cool for things like lightning strikes), support for gorgeous high dynamic range (HDR) photos, and more. You can check out some examples of these below, or see the full list of available scripts at the CHDK Wiki.

  • Better Video: If you occasionally need to shoot video but don't want to shell out for another video-centric camera, CHDK can beef up your point-and-shoot's video features. You can avoid file size limits with a "continuous video mode" (via a script), and enable optical zoom to magnify far-off subjects without the quality loss that comes with digital zoom.

The bottom line: if you're looking for DSLR features at a point-and-shoot price, CHDK will help you make it happen.

Installing CHDK on Your Camera

Getting CHDK up and running is dead simple, and only takes about 5 to 10 minutes. Check out the video above to see the process in action, or follow the simple steps below.

Make sure you have a camera that's compatible with CHDK. If you already have a camera, you can just search for its model number on the CHDK wiki, e.g. the "Canon PowerShot SD890 IS". It will let you know if CHDK works with your camera and on what firmware versions (see step 2). If you don't have a camera, check out the CHDK Wiki home page for a list of supported devices before you go out and buy one.

  1. Now that you've found a compatible camera, you'll need to make sure its firmware is also compatible. To do this, just put your SD card into your computer and create two files, named ver.req and vers.req, in the root directory. In Windows, this is as simple as right-clicking in the folder, choosing "New > New Text Document", and renaming it to ver.req. (Make sure you've enabled the showing of file extensions, otherwise it'll be named ver.req.txt which won't work.)

Eject your SD card and put it into your camera. Start it up in play mode by pressing the Play button (not by pressing the On/Off button). Once it's on, press and hold the FUNC. SET button, then press the DISP button. Your camera should show you a bunch of information, including the firmware version which looks like this:

Firmware Ver GM1.00C

The "1.00C" is what you want. Make sure that firmware is compatible with CHDK (as shown on the wiki page for your camera's model), and continue. If it isn't, check Canon's web site for an update to make it compatible..

  1. If your camera and firmware are compatible, it's time to download CHDK. You can grab the CHDK build for your camera on CHDK's Download page—just choose the stable version, then press Ctrl+F (or Cmd+F on a Mac) and search for your camera's model number. Be sure to grab the right build for your firmware.

  2. Plug your SD card back into your computer, and unzip the contents of the CHDK download to the root directory of your SD card. Eject your SD card and put it back in your camera.

Start up your camera, again using the Play button and not the On/Off button, and press your camera's Menu button. Search through the menu for an option called "Firm Update." Choose this and confirm that you want to update the firmware (don't worry, it isn't actually updating the firmware—CHDK is just tricking it into thinking its a permanent firmware update, when it's really a temporary modification).

If all goes well, you should see the CHDK boot log for a second. From there, you can press the shutter button to go into camera mode and you should see a few new UI elements—like a battery life indicator, an icon that tells you how much space is on your SD card, and more. Congratulations! You have CHDK up and running on your camera. Check out the section below to see some examples of what you can do with it.

Note: This is the easiest installation method for CHDK, but it requires you to "launch" it using the Firm Update button every time you turn on your camera. If you'd like CHDK to run automatically every time you boot up, you can use the more complicated "Bootable SD Card" method described here after you've given it a good test run.

How to Use CHDK

Once you have CHDK up and running, using your camera isn't that different from before: the shutter takes pictures, the menu button takes you to your camera's regular menu, and so on. The only button that's different is your Print button, which takes you into CHDK's "ALT" mode (in some cases, this is replaced with the SHORTCUT button). ALT mode gives you access to all of CHDK's features by changing what the other buttons do on your device. For example, on most cameras:

  • Open Main Menu: MENU while in ALT mode

  • Go to the Previous Menu: DISP while in a menu in ALT mode

  • Open Script Menu: FUNC.SET while in ALT mode

  • Toggle Histogram: Half-press shutter + Up while in ALT mode

  • Toggle CHDK On-Screen Display: Half-press shutter + Right while in ALT mode

  • Execute the Current Script: Full press shutter while in ALT mode. By default, this will just take a picture, but if you've selected another script—as described below—then it will run that script instead.

Note that some cameras assign these functions to different buttons. For a full list of shortcuts on your specific camera, check out the CHDK Wiki entry on the subject. Take some time now to explore the CHDK menu (ALT, then MENU) and see what options are available to you. There, you'll find all your manual tweaks, display customizations, and other options. Here are some of the things you can do with CHDK.

Simple Options that Help You Shoot Better

Now it's time to take some pictures! Here are a few options you'll definitely want to check out in CHDK's menus.

Manual ISO, Shutter Speed, and Aperture Adjustments: To tweak these settings like you would on a DSLR, go into ALT mode, press MENU, and head to Extra Photo Operations. Fro here, you can override all your camera's default settings, from the shutter speed to the aperture, subject distance, ISO value, and image quality. If you want to disable your overrides and go back to your camera's default state, just check the "Disable Overrides" box at the top of this menu. We aren't going to go into what each of these features do, suffice to say they can be very useful when you're shooting. Check out our Basics of Photography lesson on manual settings for more info on each feature.

Video Customizations: To tweak your video options, go into ALT mode, press MENU, and head to Video Parameters. From here you can tweak the Bitrate and Quality values to get the best looking video possible, as well as enable optical zoom in your videos. This will give you better quality video when zoomed in, since by default Canon only lets you use the quality-degrading digital zoom in video mode. If you want continuous video that overrides the 4GB file limit, you'll need to grab a script like one of these and apply it as described in the next section.

RAW images: To save images in RAW instead of JPEG, go to ALT mode, press MENU, and choose RAW Parameters. Check the Save RAW box, and tweak any other settings you want. Remember that RAW isn't always better, but it can be handy in certain situations—so only shoot in RAW when you know you want to do the extra work editing later.

Histogram and Zebra: If you want a bit more on-screen information about the color and exposure of your photo, you'll want to enable the histogram and/or zebra mode. You can find both of these in the ALT menu under Histogram Parameters and Zebra Parameters. Both features will help you make sure your photo isn't over- or under-exposed. You can learn a bit more about how to use them here, and learn more about the menu options in CHDK here.

Grid: A grid can help you compose your photos perfectly, and CHDK has a few different grid overlays built in. To use them, go to the ALT menu and scroll down to OSD Parameters. Here, you can adjust many different aspects of the on-screen display, but heading down to Grid will let you choose what overlay you want to use. Just check Show Grid Lines and load your desired grid from the SD card.

USB Remote: CHDK also lets you control your camera with a USB remote. You can access options for this by pressing ALT, going to the scripts menu as described below, and choosing Remote Parameters. Note, of course, that you'll need a USB remote for this to work. Check out the CHDK Wiki to see what remotes are compatible, or how to build one yourself.

For more info on all of these features and more, check out the CHDK User Manual over at the wiki.

Useful Scripts

CHDK's most powerful feature is the ability to run scripts and automate complex actions. It sounds scary, but it isn't—in fact, you don't need to know any code to make use of the scripts feature. A lot of scripts come built-in to CHDK, and you can download a ton more on the CHDK wiki.

To use scripts, just press FUNC. SET while in ALT mode. You can then load a script from your SD card, tweak any parameters you want to tweak, then exit the menu and press the shutter, while still in ALT mode. Pressing the shutter again interrupts the script, while exiting ALT mode pauses it. In general, you have two types of scripts: Lua and UBASIC, designated by the LUA and BAS file extensions. Just know that Lua scripts will use more memory, but run faster. If you have problems with a certain script, try the other version and see if it works instead (where applicable). Here are a few examples of scripts that come with CHDK.

Time Lapse: The time lapse script, titled INTERVAL.BAS or INTERVAL.LUA, takes pictures on a certain interval. So, you can take a picture every 15 seconds by choosing this script and setting the Intervalometer to 15. It's simple, but can produce some pretty cool time lapse videos.

Motion Detection: The MOTION.BAS and MOTION.LUA scripts each take a picture whenever motion is detected in front of your camera. These are great for catching lightning strikes, fireworks, or other quick events. You can read more about the motion detection functions on this CHDK Wiki page.

HDR: High Dynamic Range, or HDR, is a feature that takes multiple images with different parameters, so you can put them together and get fantastic looking photos. The HDR script in CHDK takes three photos: a normal one, a light one, and a dark one. You can then use Photoshop or other software to combine the three images into a high dynamic range shot.

These are just a few examples, but you can grab a ton of others here and put them in the scripts folder on your SD card to add them to your collection. You can also, of course, write your own scripts in Lua, which is a great programming language to learn since it's applicable on so many other platforms (like the iPhone and Android). With scripts, there's no limit to what CHDK can do, so we definitely recommend exploring what the community has to offer and experimenting with different automations.


CHDK has more features than we could possibly go into in just one article—heck, you can even play games with it—but this should help get you started. Again, be sure to browse the CHDK Wiki and the User Manual to learn more about what CHDK can do, and you'll be on your way to taking better photos in no time.