Sim900 Issue - "+CME ERROR: SIM not inserted"

I am using a Arduino Uno and a SIM900

Whilst i do have a bit of code running on the Uno it does the same as what i was doing in the serial monitor.

I have tested this with both a Uno and a Due and the 2 SIM cards i have access to, which work fine in a phone. I have an O2 and Three sim, O2 is the PAYG sim for this project and the Three is my phone's main one.

On Baud 9600 i used the below commands and got the results, am i doing something wrong here?

O2 Sim

AT
OK

AT+CMEE=2
OK

AT+CPIN?
+CME ERROR: SIM not inserted

AT+COPS=?
+COPS: (1,"T-Mobile UK","TMO UK","23430"),(2,"O2 - UK","O2 - UK ","23410"),(1,"vodafone UK","voda UK","23415"),,(0,1,4),(0,1,2)

Three

AT
OK

AT+CMEE=2
OK

AT+CPIN?
+CME ERROR: SIM not inserted

AT+COPS=?
+COPS: (1,"T-Mobile UK","TMO UK","23430"),,(0,1,4),(0,1,2)

I couldn't paste the code in the original post as it took me over the limit

Code i'm using is below.

#include <SoftwareSerial.h>
//Create software serial object to communicate with SIM900
SoftwareSerial mySerial(7, 8); //SIM900 Tx & Rx is connected to Arduino #7 & #8
void setup()
{
//Begin serial communication with Arduino and Arduino IDE (Serial Monitor)
 Serial.begin(9600);  
 //Begin serial communication with Arduino and SIM900
 mySerial.begin(9600);
    Serial.println("Initializing...");
 delay(2000);
 mySerial.println("AT"); //Handshaking with SIM900
 updateSerial();
 mySerial.println("AT+CSQ"); //Signal quality test, value range is 0-31 , 31 is the best
 updateSerial();
 mySerial.println("AT+CCID"); //Read SIM information to confirm whether the SIM is plugged
 updateSerial();
 mySerial.println("AT+CREG?"); //Check whether it has registered in the network
 updateSerial();
 mySerial.println("AT+CPIN?"); //Check whether it has registered in the network
 updateSerial();
}
void loop()
{
 updateSerial();
}
void updateSerial()
{
 delay(500);
 while (Serial.available()) 
 {
   mySerial.write(Serial.read());//Forward what Serial received to Software Serial Port
 }
 while(mySerial.available()) 
 {
   Serial.write(mySerial.read());//Forward what Software Serial received to Serial Port
 }
}