If I press the shoot_half and then shoot _full they work fine with connected USB.
I assume you mean pressing the buttons physically. Does simulating shoot_full work via PTP?
I remember one case when simulated button presses did not work: on some early Ixus models (Ixus65) the directional buttons (which are pressure sensitive) can't be operated from CHDK.
I'm using following method
void switch_mode(int mode)
if ( mode == 0 )
_set_control_event(0x80000302); // 0x10B3 ConnectUSBCable
} else if ( mode == 1 )
_set_control_event(0x302); // 0x10B4 DisconnectUSBCable
That's similar to our method. I assume 0x302 is the correct event for this camera (it used to be a different in earlier models).
I have noticed that some (or all?) buttons on my DIGIC 4+ cam are accessible through both the old (0xc0220200+) and new (0xc022f484+ on the ixus150) aggregated GPIOs. So, it's not impossible that the button's state also appears in a variable other than physw_status...?