Arduino GSM Shield returning Numbers not Text; HEX PDU not CHAR or empty message

I’m trying to receive messages from SIM900 GSM shield on an Arduino through the Serial Monitor on Linux: I can send and received messages, without a problem.

The problem I have is that the received message is outputted as PDU instead of text, although it has been set with AT+CMGF=1 , when I AT+CMGF? it returns 1.

This is the sample code from sketch:

#include <SoftwareSerial.h>
SoftwareSerial SIM900(7, 8);
char incoming_char=140;
void setup()
  Serial.begin(19200); // for serial monitor
  SIM900.begin(19200); // for GSM shield
  SIM900power();  // turn on shield
  delay(20000);  // give time to log on to network.
  SIM900.println("AT+CMGF=1");  // set SMS mode to text
  // blurt out contents of new SMS upon receipt to the GSM shield's serial out
void SIM900power()
// software equivalent of pressing the GSM shield "power" button
  digitalWrite(9, HIGH);
  digitalWrite(9, LOW);
void loop()
  // Now we simply display any text that the GSM shield sends out on the serial monitor
  if(SIM900.available() >0)
  {; //Get the character from the cellular serial port.
    Serial.println(incoming_char); //Print the incoming character to the terminal.

And this is the output from serial monitor:





When I SMS a message to the shield this appears, as the message:

+CMT: “2B38363138363435313939303330”,"",“15/01/30,13:51:27+32”

This is the decoded PDU:


TimeStamp:// ::
TP_DCS-popis:Uncompressed Text


Could it be the message is empty? How would I solve this? Any Help is appreciated.

SoftwareSerial SIM900(7, 8);

Please help us all by reading Read this before posting a programming question and following the advice about posting code.