18:40 Sunday, May 05 2009

Setting up CHDK on Linux

Ever since I purchased my Canon SX110IS camera over 6 months ago, I was intrigued by the ability to 'hack' it to expose new functionality using the CHDK tool. The biggest obstacle was finding the time. I finally had a few hours to play and figured out how to get it setup under Linux. As with most things, the amount of time & effort required to do it under Windows is so much greater than what was required under Linux. Here's what I needed to do (all of the commands below are run as root):
0) Create a partition on the SD card (on my system udev named the partition /dev/sde1)
1) Format the partition FAT16
2) Using hexedit ('yum -y install hexedit'), make the SD card bootable. This was, by far, the trickiest part:
\$ hexedit /dev/sde1
switch to ASCII mode by hitting 'tab' once. Move to offset (which is basically just a location) 0x40 with the right, left, down, up arrow keys (you should see offset numbers change as you move, and you should stop when you see 0x40 - if you're familiar with counting in hexadecimal this will be easier). Now on your keyboard type the word "BOOTDISK"(without the double quotes), and then hit Control-x to save and quit.
3) Now you need to download the CHDK image that is appropriate for your camera. See the CHDK website to figure that out. At the time of this writing, I needed to download
sx110is-100b-0.9.8-766-full.zip for my SX110IS.
4) Unzip it somewhere:
\$ unzip sx110is-100b-0.9.8-766-full.zip
5) One of the files that is extracted from the zip archive will be DISKBOOT.BIN. You need to copy that to the SD card (after mounting it):
\$ mount -t msdos /dev/sde1 /media/usb
(note the /media/usb is my artbitrary mount point, you can choose something else on your system if you'd prefer)
\$ cp DISKBOOT.BIN /media/usb
\$ umount /media/usb
5) Move the Lock/Write-protect tab on your SD card to the LOCK/WRITE-PROTECT position, and insert it into your camera. If everything went well, you should be able to power the camera on and immediately see a CHDK splash screen with version information.
At this point, the generic instructions from the official CHDK website apply for tweaking assorted settings on the camera.
There were several sources of information that assisted in me in putting this together:
* The flickr Canon SX110IS discussion forum
* Hacking a Canon A720IS digital camera with CHDK HOWTO
* CHDK SX110 wiki page
Have fun!