WizFi250 - Weird Serial Port Problem

I have the Seeed Fi250 WiFi shield (http://www.seeedstudio.com/wiki/Wifi_Shield_(Fi250)) and am experiencing a very peculiar problem with the Arduino serial port.

I have the shield using the software serial port on D2 and D3 of the Arduino. That works fine. My issue is with the otherwise unused hardware serial port of the Arduino.

I used the proper library and was able to develop and test my application successfully. Using the Serial Monitor, I was able to watch the shield successfully join my WiFi network and communicate with my WiFi connected PC application.

My problem is that if I don't connect a functioning USB port, it fails to join. I created a copy of the WizFi250 library with all of the debug code removed. It is still a problem. My application does not use the hardware serial port - it was only ever used by the debugging software in the WizFi250 library.

I have tried pulling D0 high to simulate a passive connected device. I have inserted a 100ms delay between commands to the shield to slow down the data transmission to compensate for any inherent delay in the debugging output. If I power the device through a stand-alone USB power supply or via an external 9V supply, it also fails. Even if I plug it into a USB port on the PC without doing something via the serial port, it fails. Nothing works. Even if I upload the software to the Arduino, that is enough to make it work properly even though I am not using the hardware serial port for anything.

I cannot afford to have a PC physically plugged into my device just to make it work, so I need to find a way of coaxing the shield to join a WiFi network without anything connected to D0/D1.

Does it work ok if you press and release the reset button after it powers up?

It does work if I just reset. If I unplug it and plug it in, it fails.

I should also mention that the final hardware does not have anything connected to D0/D1. The behaviour there is exactly the same as on my Arduino board with the USB connector (a Freetronics Eleven, 100% Arduino Uno compatible).

Okay, I have fixed it.

The fix for the hardware serial port problem is to insert a 1 sec delay after setting the speed on the software serial port during the initialisation phase. No, I haven't been drinking :-D

Anyway, thanks for those who have taken the time to look at this.