GSM Module TC35, Problem with AT+CPIN command

I am using a TC35 and an UNO R3 to play a bit with the GSM network.
Now something strange is happening to me…
I use this code:

void loggon(){
    uint8_t x=0,  answer=0;
    char response[100];
    unsigned long previous;

    memset(response, '\0', 100);


    while( gsmSerial.available() > 0);    

    gsmSerial.println("AT+CPIN=****"); //**** is the PIN
        x = 0;
    previous = millis();
        if(gsmSerial.available() != 0){    
            response[x] =;
            if (strstr(response, "OK") != NULL)    
                answer = 1;
    }while((answer == 0) && ((millis() - previous) < 2000)); //the second part is the timeout condition

,where gsmSerial is a SoftwareSerial to the RX and TX pins of the module,
to “log on to the GSM network” with my PIN and get the response of the AT command.

The only response I am getting is


And the do-while loop is only left because of the time-out connection…

I am still able to read fresh SMS or even send SMS after I logged in with this command returning ERROR so where is the problem?
Why can I do things with the module even if the “login” tells me it failed?

Is it not necessary to enter the PIN to send SMS?
Or was the PIN set the first time I used this command(I did not check the response of the command in the beginning) and is now set for the rest of its lifetime and responds with ERROR cause the PIN is already set?
Or is something really strange going on on my desk?

I hope my English is understandable :wink:

Nobody has a tipp for me?