An possible alternate approach to synchronization using PTP:
All the cameras have a 10ms ish accuracy tick counter (get_tick_count())
You should be able to calibrate these relative to the PC system clock, then set up your scripts to shoot on each camera at a particular tick count that corresponds to the same real time. I'm not sure what sort of accuracy you could get, you'd definitely want to calibrate each camera in turn without a lot of other traffic on the USB.
There are a number of sources of uncertainty in the calibration: your program <-> ptpcam, ptp transport, scheduling variations in the PTP and script tasks, scheduling within the final script that takes the shot. Some of these could be reduced if you are willing to hack the CHDK code a bit, but you'd want to characterize them before expending any effort on that.
What sort of synchronization accuracy do you require ? Is shot latency critical (e.g someone presses a button and all the cameras fire at that instant, or could you schedule the shot 1 second in advance, as long as all the cameras shoot together)
Another option might be CHDK motion detection. You could set the threshold really high so the cameras all go off when they see a flash.
Of course long exposure + flash would be the obvious brute force way to do this.
Ideally, as accurate as possible (the ultimate would be all cameras firing within 10ms of each other) but we can schedule for a few seconds with an aligned timer over ptp usb.. as you suggest.
Shot latency is semi-critical but not as important as having all the shots at the same time. The trigger sensor is at the top of a skateboard ramp, so as the skaters come up and hit it, we're hoping to get a 360 around them.
The problem with the usb remote trigger and the eyefi cards to get the photos off are that they don't transfer until the script quits.. and if it does that, I have no way of starting it again without being physically in front of the cameras or a messy usb switching system.
Any idea why the photos wouldn't upload until the script quits? the eyefi firmware won't be using the camera CPU so it must be something filesystem/sd card related.
The photo definitely gets written to the card before you quit the script (but i wonder if the fat table's not updated)
I'd be concerned about the tuning with the synchronisation as it may be variable, but if it's going to be consistent and I only need to calculate the offset for each camera once, that might be viable.
Motion detection again might work with the eyefi cards to upload the photos, but then we have the same issue as having a long running script which we need to quit, unless controlling the cameras on PTP
Gareth