Sim 900A module problem

I bought a sim900 module from eBay primarily because it was the smallest one I could find. See attached photos.

Sadly its not connecting to the network at all. I can sent AT commands to the device and read out some data (using the GSMSHIELD library) but the status light just blinks every second.

The sim is a Vodafone UK sim, I know theres a 900mhz transmitter about 200meters away. I tested the sim in a normal phone and it worked fine. I have also tried just powering up the module from a 2A 5V supply but it didn't make a difference. From what I understand the module will try to connect automatically when given power regardless of a serial connection being present.

Have not been able to get the magical 3 second blink!

Has anyone used this particular module before? I'm just using the default example sketch from the library. See below.

#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 communicate with SIM900 through AT commands.

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

int numdata;
char inSerial[40];
int i=0;


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(9600))
    Serial.println("\nstatus=READY");
  else Serial.println("\nstatus=IDLE");
};

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]='\0';
    if(!strcmp(inSerial,"/END")){
      Serial.println("_");
      inSerial[0]=0x1a;
      inSerial[1]='\0';
      gsm.SimpleWriteln(inSerial);
    }
    //Send a saved AT command using serial port.
    if(!strcmp(inSerial,"TEST")){
      Serial.println("SIGNAL QUALITY");
      gsm.SimpleWriteln("AT+CSQ");
    } 
    else{
      Serial.println(inSerial);
      gsm.SimpleWriteln(inSerial);
    }    
    inSerial[0]='\0';
  }
}

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

Solved..

For anyone who finds this and has the same problem. The issue is this is a Sim900A module designed for china. You need to re-flash the module with the correct firmware. This blog has a good guide for doing that.

I used an Arduino nano connected D0 & D1 to the serial of the module and held reset while it wrote the firmware. Note this takes quite a while to do so be patient don't let go of the reset button!

how can we fixed the problem in africa pleaaase :frowning:

@ArduiBen - The SIM900A probably won't work in Africa. It is intended for the SE Asia market.