I found that my build using nafraf's svn version 777 had the wrong addresss for apexus (I think). I just commented it out in stubs_entry_2.S, and sigfinder did the rest. Comparing with ixus150 it looks correct. I also uncommented in capt_seq.c
" BL shooting_expo_param_override\n" // added
I tried to manipulate exposure times, and it seems that as long as I am in LONG SHUTTER mode (for night pictures), CHDK is able to set the shutter speed both short and long...it's not clear that this always works. Seems like you need a particular order of doing things.
I also looked for additional modes by modifying shooting.c
It seems that you can set AV, TV and M modes (at least as long as the camera is in LONG SHUTTER mode first).
{ MODE_AUTO, 32768 },
{ MODE_M, 32769 },
{ MODE_AV, 32770 },
{ MODE_TV, 32771 },
{ MODE_P, 32772 },
{ MODE_LONG_SHUTTER, 32774 },
Here are some extracts using exiftool:
Shooting Mode : Long Shutter
Shutter Speed : 30
Shooting Mode : Long Shutter
Shutter Speed : 1/2000
Shooting Mode : Manual
Shutter Speed : 2
Shooting Mode : Shutter speed priority AE
Shutter Speed : 2
Aperture : 3.2
Shooting Mode : Aperture-priority AE
Shutter Speed : 1
Aperture : 3.2
Shooting Mode : Long Shutter
Shutter Speed : 1/640
So it looks like you could control much more than the Canon menu allows, but you need to use chdkptp (or gui version to change mode) to enter the correct propcases etc. Is there a standard way to implement things like this? Just scripts on the camera?