i2c hang when on external power (not usb)

I'm using i2c (the wire library) to have two Arduinos talk to each other.
While the master is on usb power, it works fine.
However, when I put the master on 9v power instead (power adapter or battery), it gets to the endTransmission() stage and hangs when trying to send a message.

To test it was actually the end call hanging, I lit up the onboard led before the wire calls started. Then I turned it off at the end (after the endTransmission call). This caused the led to stay on forever. Then I updated the sketch to put the led off right before the end call. This causes a quick blink and then the led stays off.

I considered the possibility that the i2c wires needed power, so I've tried with a 1.8kohm pullup on the two data lines just to be safe. That didn't help either.

Am I missing something here? Any suggestions on things to try?
Thanks
zack

are your grounds securely connected?

weirdo557,
many thanks!
When I read your question I said to myself "what ground is he talking about?" as I didn't have a ground connecting the boards.

Noob mistake on my part.

I now fully understand why both devices need to be grounded for the i2c to work properly and it makes sense that with usb connecting both devices, the grounding was just happening through my computer.

I just watched both devices communicate successfully using battery power on each end!
Thanks again.