HowTo: Opensource Canon Firmware
Contents
Intro
Just a few notes from Bob on what you need to do to make a nice intervalometer camera using the CHDK open source firmware.
Background
Unhappy with the optics of the CC640s and the really wide angle lens Moultrie animal cameras and such use I've always though the CHDK project might have some potential. Didn't get around to tinkering until winter 2011 though.
Camera Selection Strategy
- Choose a camera from the supported cameras list on the front page of the chkd site
- should have DC input port
- should have a remote trigger (the one I bought... I thought it did but it didn't)
- check to see what kind of memory it takes.. this can be difficult. Powershot S2is uses FAT16 file system so should be able to handle up to 4GB memory card. However... there are two types of SD cards (at least) SD and SDHC. I have yet to find a 4GB card that isn't actually SDHC. In addition, even if you format a 4GB SDHC card as FAT16 there is still something different low-level that prevents the camera from communicating with the card. I found very little information reading the canon camera manual online before purchase and searching the web for what precisely
- Look for it online (some cameras are easier to find than others) in terms of shopping sites. I thought something more than the tiny canon Point and shoot would have the best optics. I also went with a 5 megapixel sensor, that seemed plenty to me but that also meant the camera is older than it could be (which seems to have driven the price up). So, there is probably a balance to be found on new vs. old price-wise, feature-wise etc.
Camera Setup Workflow
I bounced back and forth between ubuntu and Mac OSx for the setup. The Mac tools get you there nicely for the most part but I still found myself tinkering with file system using GParted and dd. In the end, I think the mac tools are plenty good but almost anything would work. The gist is:
- download the firmware for your camera off the chdk website
- use their tutorial or the mac program to load the firmware & set up the initial directories on the memory card / make sure it's formatted correctly etc.
- Download an intervalometer script from the chdk website and modify it. I went with the ultra intervalometer (best script) from the user contributed scripts page.
- I modified the scripts so it takes 60,000 pictures and set the interval to 1/15 minutes.
- Then, save this to the /CHDK/SCRIPTS/ directory.
- I haven't experimented yet but I think the zoom level can be set programmatically, too. Otherwise, you can set the zoom before you trigger the script.
A couple of branches you can go from here:
- Standalone mode --> just let it run with a normal memory card
- Put CHDK files on an eye.fi WiFi SD card and have the images transmitted after they're saved to the card over the local WLAN network to a computer.
- Remote trigger
Firing it up on the camera
To run in auto mode (where the CHDK firmware is loaded on camera boot):
- slide the read only tab to read only position before inserting the memory card into the camera
To use the eye.fi card CHDK will need to be started manually:
- stick the card into the camera
- start the camera in Playback mode
- Press Menu to bring up the the canon menu. Then press Up on the directional pad once to bring up the Firmware update option. Then press Right on teh directional pad. Select OK to update the firmware (Right on the direction pad followed by pressing the Set button)
- the camera will reboot. Use the power button to put the camera in Camera mode.
From here, the steps are the same again.
- Point the camera to the appropriate spot, set to the desired zoom level.
- Press S which is the shortcut button. On my camera a message in the lower left corner appears: Ultra Intervalometer <ALT>
- Finally, press the photo trigger button to start the script.
==Possible Improvements and other notes.
- With a newer camera that can take the SDHC memory, there is another type of eye.fi card that can do an autodelete of images after they've been uploaded. That would be a worthy upgrade, with the right camera.
- Immediately upon getting the eye.fi card I used dd to make an image of the disk in case I messed something up along the way:
sudo dd if=/dev/sdb1 conv=sync,noerror bs=64k > ./eyfi.img [sudo] password for bob: 30631+1 records in 30632+0 records out 2007498752 bytes (2.0 GB) copied, 349.504 s, 5.7 MB/s
- Initial setup unfortunately seems to require AC power as the camera monitor seems to always be on. I will look into tweaking that but that will certainly suck the memory. I'm hoping that USB trigger will allow the camera to power down somehow and significantly reduce energy usage.
- Kind of a shotgun blast of information on the CHDK wiki. I think for next time:
- More research on the right camera
- SD/SDHC memory
- remote trigger (DIY or something else)
- More research on the right camera