Saturday, March 22, 2008

Hacking a cheap Canon camera

My cheap Canon IXUS 950 (Powershot SD800 IS in other countries) is a good little camera. Sure, I'd prefer a serious SLR with better lenses and more sophisticated light metering, but digicam quality is good enough for what I do, i.e. mostly family pictures and tourist shots. It's also extremely light (150g!) which makes it ideal to carry around in my pocket, unlike a SLR weighing one kilo and more. However, the manual controls are extremely limited: ISO, exposure, white balance, image size and some (largely useless) color tweaking. There's no way to override autofocus, shutter speed or aperture. Also, there's no battery gauge except the one that starts flashing 2 minutes or so before the battery is finished, which is completely stupid... except for Canon, who probably sells more backup batteries that way.

Now it turns that some very clever folks have developed a firmware enhancement called CHDK (Wiki pages and download area) (I guess it stands for Canon Hack Development Kit) that adds interesting features to several cheap Canon digicams, including RAW file support, battery indicator, ISO control, shutter speed control, focus control (didn't work for me though), histogram (RGB/luminance), zebra mode (areas of over-/underexposure), DOF calculator, scripts (in BASIC!), focus bracketing, exposure bracketing and more. Exposure bracketing is particularly interesting for creating high-dynamic range images, both as 8-bit images for display (see image below) or 32-bit true HDR images for use as environment textures in 3D computer graphics.

HDR image created with exposure bracketingThe CHDK wiki describes the firmware in detail and provide links to download pages and utilities (like RAW conversion and processing software). Installation is simple, just copy a couple of files in the root directory of the SD card and load the firmware according to the instructions. The firmware is not stored in the camera itself, so it's always possible to revert to the original firmware. Whether using CHKD voids the warranty isn't clear from a legal point of view, but then wiping the SD card should work ;)

This kind of hack is also a clear demonstration that these cameras are actually crippled for pure marketing reasons. There's absolutely no technical rationale for selling them without a proper battery indicator and the ability to override automatic settings. These practices are common for software, but it's a little unsettling to see them in hardware too.

Labels: