I finally figured out the issue. Somehow the factory setting of 19200 was reset to auto-bauding.
Autobauding requires that the first command issued be AT or At. You can then reset the baud to using AT+ITR=<rate>.
From section 22.214.171.124 of the SIM900 v1.0.3.pdf126.96.36.199 Auto-bauding
Synchronization between DTE and DCE ensure that DTE and DCE are correctly synchronized and
the baud rate used by the DTE is detected by the DCE (= ME). To allow the baud rate to be
synchronized, simply issue an "AT" string. This is necessary when you start up the module while
auto-bauding is enabled. It is recommended to wait 3 to 5 seconds before sending the first AT
character. Otherwise undefined characters might be returned.
If you want to use auto-bauding and auto-answer at the same time, you can easily enable the
DTE-DCE synchronization, when you activate auto-bauding first and then configure the
Restrictions on auto-bauding operation
The serial interface has to be operated at 8 data bits, no parity and 1 stop bit (factory
Only the strings "AT" or "At" (not "aT" or "at") can be detected when auto-bauding is
AT+IPR=0 setting to auto-bauding will take effect after module resets. If user wants to
change DTE baud rate during module is running, i.e. from 57600 to 4800, DTR shall be
used to urge auto-bauding progress. DTR shall be pulled up to invalid state at least 2
seconds by DTE and then pulled down to valid state. The step will urge auto-bauding
progress and DCE will synchronize its baud rate after it receives data from the serial port.
Unsolicited Result Codes that may be issued before the ME detects the new baud rate (by
receiving the first AT Command string) will be sent at the previously detected baud rate.
The Unsolicited Result Codes "RDY" and so on are not indicated when you start up the ME
while auto-bauding is enabled.
It is not recommended to switch to auto-bauding from a baud rate that cannot be detected
by the auto-bauding mechanism (e.g. 300 baud). Responses to +IPR=0 and any commands
on the same line might be corrupted.
Auto-bauding and baud rate after restart
The most recently detected baud rate can not be stored when module is powered down.
I havent heard from the original poster.
I'm still trying with no luck.
I have tried uninstalling and removing the UNO drivers and re-installing.
I have tried different baud rates from 300 to 115200 in the serial monitor.
I have tried going to Device Manager and setting the baud, parity and flow control there and then going through all the baud rates using serial monitor.
I do actually have a very similar problem, that I haven't found the solution yet.
I'm trying to control a SIM900 mounted on a Efcom Pro (http://www.elecfreaks.com/wiki/index.php?title=EFCom_Pro_GPRS/GSM_Module
) with my UNO. I sticked to the tutorial on said wiki and ended up with the following code (arduino 1.0.3):
SoftwareSerial mySerial(2, 3);
mySerial.begin(19200); // the GPRS baud rate
Serial.begin(19200); // the GPRS baud rate
Than hooked up the serial connection from the Efcom Pro to pins 2 and 3 and started my serial monitor and turned on the Efcom Pro. As expected the chip sent out some data upon turning on, but it looked like this: Ý Ý Ý Ý Ý Ý .
Trying to communicate with it through AT commands did nothing at all, no reply. I see from the blinking on the Efcom Pro, that it has registered with the network, but it's not reachable through the serial connection.
hello, I have the same problem. You found the solution to this problem? sorry for my English I speak Spanish.