Timeout Error on GSM/GPRS Module

Hi,

Im working on the SIM900 module with the library at Github from MarcoMartines.

I'm having problems retrieving the data. This is what I get (the sketch is at the end of the post):

GSM Shield testing.
ATT: OK

DB:ELSE
ATT: OK

DB:CORRECT BR
ATT: OK

RIC: ATE0

ATT: +CPMS:
+CPMS: 28,190,28,190,28,190

ATT: OK
RIC: 
OK

ATT: SHUT OK
RIC: 
SHUT OK

status=READY
ATT: ERROR
RIC: 
ERROR

DB:STARTING NEW CONNECTION
ATT: SHUT OK
RIC: 
SHUT OK

DB:SHUTTED OK
ATT: OK
RIC: 
OK

DB:APN OK
ATT: OK
RIC: 
OK

DB:CONNECTION OK
ATT: ERROR
RIC: 
10.124.39.139

DB:ASSIGNED AN IP
status=ATTACHED

10.124.39.139
ATT: OK
RIC: 
OK

DB:RECVD CMD
ATT: CONNECT OK
RIC: 
OK

DB:NOT CONN
ATT: OK
RIC: AT+CIPSTART="TCP","www.google.com",80

ERROR

DB:NOT CONN
ATT: OK
RIC: AT+CIPSTART="TCP","www.google.com",80

ERROR

DB:NOT CONN

Number of data received:
0

Data received:

I'm positive my chip has internet data access because I've put it into a phone and browsed with it. The SIM doesn't have a lock and I can see the module LED go from 0.8 second blink to 3 second blink which should mean it recognizes the network. I have successfully called, received calls and sent SMS using the same SIM.

The only thing I have not tried is reading the serial while using the 9v battery because Im not sure what will happen if I leave the USB-Serial cable connected and turn on the 9v battery pack switch ON as well.

Can I use the battery pack and the USB-Serial simultaneously?

Here is my sketch (its the sample Client Example from the SIM900 library):

#include "SIM900.h"
#include <SoftwareSerial.h>
#include "inetGSM.h"
//#include "sms.h"
//#include "call.h"

//To change pins for Software Serial, use the two lines in GSM.cpp.

//GSM Shield for Arduino
//www.open-electronics.org
//this code is based on the example of Arduino Labs.

//Simple sketch to start a connection as client.

InetGSM inet;
//CallGSM call;
//SMSGSM sms;

char msg[50];
int numdata;
char inSerial[50];
int i=0;
boolean started=false;

void setup() 
{
  //Serial connection.
  Serial.begin(9600);
  Serial.println("GSM Shield testing.");
  //Start configuration of shield with baudrate.
  //For http uses is raccomanded to use 4800 or slower.
  if (gsm.begin(2400)){
    Serial.println("nstatus=READY");
    started=true;  
  }
  else Serial.println("nstatus=IDLE");
  
  if(started){
    //GPRS attach, put in order APN, username and password.
    //If no needed auth let them blank.
    if (inet.attachGPRS("internet.tigo.hn", "", "")) //internet.
      Serial.println("status=ATTACHED");
    else Serial.println("status=ERROR");
    delay(1000);
    
    //Read IP address.
    gsm.SimpleWriteln("AT+CIFSR");
    delay(5000);
    //Read until serial buffer is empty.
    gsm.WhileSimpleRead();
  
    //TCP Client GET, send a GET request to the server and
    //save the reply.
    numdata=inet.httpGET("www.google.com", 80, "/", msg, 50);
    //Print the results.
    Serial.println("nNumber of data received:");
    Serial.println(numdata);  
    Serial.println("nData received:"); 
    Serial.println(msg); 
  }
};

void loop() 
{
  //Read for new byte on serial hardware,
  //and write them on NewSoftSerial.
  serialhwread();
  //Read for new byte on NewSoftSerial.
  serialswread();
};

void serialhwread(){
  i=0;
  if (Serial.available() > 0){            
    while (Serial.available() > 0) {
      inSerial[i]=(Serial.read());
      delay(10);
      i++;      
    }
    
    inSerial[i]='�';
    if(!strcmp(inSerial,"/END")){
      Serial.println("_");
      inSerial[0]=0x1a;
      inSerial[1]='�';
      gsm.SimpleWriteln(inSerial);
    }
    //Send a saved AT command using serial port.
    if(!strcmp(inSerial,"TEST")){
      Serial.println("SIGNAL QUALITY");
      gsm.SimpleWriteln("AT+CSQ");
    }
    //Read last message saved.
    if(!strcmp(inSerial,"MSG")){
      Serial.println(msg);
    }
    else{
      Serial.println(inSerial);
      gsm.SimpleWriteln(inSerial);
    }    
    inSerial[0]='�';
  }
}

void serialswread(){
  gsm.SimpleRead();
}