The Canon A4000 (PowerShot A4000IS) is a little $100 point-and-shoot camera that is supported by CHDK. Despite a 16MP sensor, it isn't a very impressive camera as it comes out of the box, offering very little manual control. However, with CHDK installed, it becomes a very capable little camera -- that you can even program.
Canon's PowerShot A4000 IS page provides a good overview of the camera features and links to the manual and software support. The manual (here's a local PDF copy) is longer and far more confusing than it should be because it covers 6 rather different models. The software support begins with a choice of OS; "Linux" is listed as an OS choice, but comically with no drivers, software, utilities, nor firmware available. There is also a "product advisory" -- against counterfeit power accessories, which is not a concern for us.
There are many online reviews of the A4000 -- and they all share the advantage that they are just about the A4000 (unlike Canon's manual). Photography Blog has a pretty detailed review that summarized to 4.5/5 stars. TechRadar does not agree, giving only 3/5 stars... they found the A4000 to be slow to use and disappointing in low light.
The CHDK wiki page on the A4000 is the best reference for using this camera, although I'll be adding materials here as we progress in the course. Installing CHDK does not require compiling it from scratch; just grab the autobuild version and follow instructions. Incidentally, Under no circumstances should you actually upgrade the native firmware -- CHDK uses the firmware update facility to run, but actually having a firmware update (especially one intended for a different camera) on your SD card provides a variety of opportunities to "brick" the camera.
There are lots of CHDK configuration options, but the one you need to know is that you can change which key enables the CHDK menus. By default, it uses the play (">") key -- which is an exceedingly bad choice. If you use that, you can still get into playback mode by holding the key down longer, but this camera has a help ("?") key that really serves no useful purpose, so it is the ideal choice for a CHDK menu button. I'd also recommend turning off sounds, the focus assist lamp, flash, and the fancy face-recognition modes.
The non-model-specific CHDK 1.2.0 user manual is really a pretty good manual, but it isn't easy reading. In fact, the menu system for CHDK is not very simple in general -- it's not really integrated with the native menu system, but simply superimposed over the live view (and any native icons). We'll go over this in class, but practice using it is the only way to really become familiar enough to have the camera do what you want.
Annoyingly missing features? Well, a "PASM" dial would be nice. However, what's really missing are any way to hold the camera and any way to control the aperture (aperture control commands actually just click an ND filter in/out of place). For under $100 new, the camera is a very good deal.
Canon has a large and confusing array of camera models, but the "A" series generally targets the lowest possible cost. That would make one think IQ isn't very good, but actually IQ of "A" cameras is less compromised than other aspects; lack of manual controls (which CHDK pretty much works around) and things like pivoting displays, and poor battery life, are the the primary sacrifices.
Here are three versions of a shot, taken at maximum wide angle, to give you some idea of the image quality. First, here's the JPEG file produced by the camera:
That's really not bad for such a small and cheap camera. However, thanks to CHDK, we can get more information out of the camera. In fact, we get a lot more info because Canon lied about the lens. At maximum focal length it is as advertised, but it's really a lot wider than the specs suggest -- more like a 10X than 8X zoom. So, why does Canon lie by understating the specs? Well, here's the raw image (simply converted to JPEG from this rather huge DNG file) as CHDK captured it:
See the dark upper left corner? Another one of the A4000 had an even darker corner, although it was the upper right. Not exactly a well centered lens. Beyond that, there's lots of barrel distortion. LOTS. There's a fair level of CA as well. It could also use some sharpening, and that will make a little noise reduction useful (e.g., unsharp masking followed by wavelet noise reduction). Canon fixes most of these flaws in the camera JPEG file, but we can do better. Here's a really quick fix of the DNG file done using GIMP:
Pretty nice, eh? Of course, using CHDK you can fix these flaws in camera too by simply inserting C code lifted from GIMP into CHDK. It's not trivial... for example, even the live view is cropped and corrected, so you'd even have to change how that view is created -- but it can be done.