[Solved] Servo.Attach - setup issue with Quad

I'm going to post this even though I solved it in case anybody else is having this problem. I solved it when I wrote the words "does there need to be some sort of current flow" - of course there does!! I hadn't grounded the other two ESCs, doh. Which of course worked in the original solution.

Hi,

If I start by explaining how I can get my Quad Copter to work, and then tell you how I would like it to work, it might be easier!

Works:
-One battery powers 4 ESCs. One of the ESCs sends power to the Arduino
-After plugging the battery in the Setup() routine attaches the 4 ESCs, and sends the minimum pulse to arm them - and they all arm properly.

What I would like to happen:
-Two batteries used. One battery powers 2 ESCs, one of which powers the Arduino
-The other battery powers the remaining ESCs

What happens when I try this:
-The two ESCs that were powered on IMMEDIATELY with the Arduino because of the BEC, they arm perfectly and work great
-During this time, all the arduino has done is attach() all 4 ESCs, and continuously (in the loop()), send the minimum signal for arming
-I then plug in the next battery, which powers up the final 2 ESCs, but they are not receiving any PWM signal from the Arduino. It's like the servo.attach() and write haven't done anything...

Do you need to have some sort of current flow in order to use Servo.attach(), or - theoretically, can you attach a servo for later use to pin 9, and then power it up later?

I'm pulling my hair out here - any help you can give would be appreciated. The other, simple option is for me to get a "2 to 1" cable for the batteries, and then split them back out into 4 cables, but I really want to understand what the Arduino is doing that's preventing this from working.

One extra thing, even putting a delay in before Attach(), so that I have connected both batteries, seems to fail. Code here:

void setup()
{
  Serial.begin(115200);
  Serial.println("Connect batteries now...");

  // using the PinChangeInt library, attach the interrupts
  // used to read the channels
  PCintPort::attachInterrupt(THROTTLE_IN_PIN, calcThrottle,CHANGE); 
  PCintPort::attachInterrupt(PITCH_IN_PIN, calcPitch,CHANGE); 
  PCintPort::attachInterrupt(ROLL_IN_PIN, calcRoll,CHANGE); 
  PCintPort::attachInterrupt(YAW_IN_PIN, calcYaw,CHANGE); 
  PCintPort::attachInterrupt(PT_IN_PIN, calcPT,CHANGE); 
  PCintPort::attachInterrupt(HT_IN_PIN, calcHT,CHANGE); 
  PCintPort::attachInterrupt(HP_IN_PIN, calcHP,CHANGE); 

  delay(5000);
  
  Serial.println("Arming motors...");

  //Prepare motors (arm)
  motorFL.attach(MOTOR_FL);
  motorFR.attach(MOTOR_FR); 
  motorBL.attach(MOTOR_BL); 
  motorBR.attach(MOTOR_BR);
  motorFL.writeMicroseconds(700);
  motorFR.writeMicroseconds(700);
  motorBL.writeMicroseconds(700);
  motorBR.writeMicroseconds(700);