Firmware upgrade for SIM900 GSM/GPRS modem

In this post we will learn how to update the firmware.


You can use AT Command “AT+GSV” to check the current version of the Firmware.


How to

Application note AN_SIM900_Update Tool_UGD_V1.01 from simcom explains the process.

RECOMMENDED READ  Raspberry Pi 2 Model B


Download Simcom – sim900 Customer flash loader V1.01; Unzip the Simcom – sim900 Customer flash loader V1.01.


Connect your SIM900 board to your PC;


Open the executable file “Simcom – sim900 Customer flash loader V1.01″, it will show  window like the one below


Step 3


Select the right COM port(in my case is COM12), and the default value of Speed is 460800(baudrate), and 460800 is OK from my experience.


Click the Browse to select the downloaded firmware(in my case is 1137B03SIM900M64_ST_MMS ). You can see  window like the one below


Step 5


Click the START button to download, you will see  window like the one below


Step 6


RECOMMENDED READ  Chocometer :an open source near infrared sensor aiming glucose measurements without pain.

Now Switch Off and then Switch ON GPRS Board .


Step 7


When the tool is erasing the flash, you will see the window like the one below:(Step9 may last a few minutes)

If fail, you can try another Speed(baudrate),and do it all again.


Step 8


The whole download process needs about 4 minutes; After the download, you will see window like this


Step 9

When you see Download done, congratulations that you have upgrade the firmware successfully.


Dost Muhammad Shah

Dost Muhammad specializing in Embedded Design, Firmware development, PCB designing , testing and prototyping. He enjoys sharing his experience with others .Get in touch with Dost on Twitter or via Contact form


52 thoughts on “Firmware upgrade for SIM900 GSM/GPRS modem

    1. 1- Check what is the current firmware and try to find an updated version of that firmware
      2- Check what is the model of your module and then use a compatible firmware

  1. Hello, I have SIM900A with firmware version 1137B08SIM900A32_ST_NENGRUI.
    But the AT+CNETSCAN is not working, and simply returning ERROR even with SIM and without SIM.
    Can you mention what’s the problem, or am I doing anything wrong?
    Or should I do something before executing that command?
    Please kindly reply,
    Thanking you.

  2. HI,

    I am trying to flash 1137B03SIM900A64_ST_ENHANCE.cla to my SIM900A module. The flashing was successful. But After rebooting the module is not getting registered with the network which was working fine before.

    Any leads.

  3. Hi,

    Following your instruction, I successfully re-flash the SIM900A with a new firmware. But the problem is after flashing successfully, I can’t seem to turn on the module, either by button (effectively shorting pin 1 & 2) or by pulse (of about 1.2 seconds).

    Anyone experiences the same? What could be the problem.

    I have tried re-flashing with different firmware, all successfully but the problem remains.

    Thanks in advance.


      1. It doesn’t switch on at all but I can still re-flash it! The button (or shorting pin 1 & 2 if there’s no button) still works when flashing, but doesn’t work when starting the module. I managed to re-flash it will many different firmware versions (32 & 64) but still can’t power on. The original firmware is 1137B13SIM900A64_ST but I can’t find the file to flash it back to original. Tried with 1137B12SIM900A64_ST (which I thought could be the predecessor) but doesn’t work. Part number is S2-1040V-Z0940 if you wanna know.

        Anyway, I contacted SIMCOM and they say that each module has a part number, which strictly goes with 1 firmware version only.

        Makes sense to me, but I managed to flash another one (part number S2-1040V-Z1K0H) whose original FW is 1137B10SIM900A32_ST with 1137B11SIM900A32_ST downloaded here and it works. So I guess the latter should be an improvement of the former so they are compatible.

    1. regarding you comment

      how to configure the SIM900 GSM module to connect to the network MOROCCO

      Do you mean internet by Network or cellular network ?

      For both the cases it must be the same as for any country. just note that you need to know the correct APN settings for your network provider to connect to internet.

      Please note that just asking this simple plain question wont help me to know what problem you are facing and so I wont be able to provide help. Please do mentioned what have you tried and where did you fail..


      1. Hi friend i’m also from morocco i tried to test my sim900a with ORANGE and IAM operators but it doesn’t work can you helpe me please.

  4. Salam Mr.Shah, I have Revision:1137B05SIM900M64_ST_ENHANCE and get only ‘most suitable network’ and the empty list for other suitable network.

    ------MOST SUITABLE CELL------
    Operator:"T-Mobile D",MCC:262,MNC:1,Rxlev:40,Cellid:4309,Arfcn:0016
    Operator:"T-Mobile D",MCC:262,MNC:1,Rxlev:41,Cellid:b035,Arfcn:0014
    Operator:"T-Mobile D",MCC:262,MNC:1,Rxlev:35,Cellid:eec2,Arfcn:0037
    Operator:"T-Mobile D",MCC:262,MNC:1,Rxlev:34,Cellid:ffff,Arfcn:0039
    Operator:"T-Mobile D",MCC:262,MNC:1,Rxlev:31,Cellid:ffff,Arfcn:0027
    Operator:"T-Mobile D",MCC:262,MNC:1,Rxlev:30,Cellid:b155,Arfcn:0099
    Operator:"T-Mobile D",MCC:262,MNC:1,Rxlev:27,Cellid:ffff,Arfcn:0101
    Operator:"T-Mobile D",MCC:262,MNC:1,Rxlev:26,Cellid:3648,Arfcn:0088
    Operator:"T-Mobile D",MCC:262,MNC:1,Rxlev:26,Cellid:0ffa,Arfcn:0090
    Operator:"T-Mobile D",MCC:262,MNC:1,Rxlev:22,Cellid:41c4,Arfcn:0123
    Operator:"T-Mobile D",MCC:262,MNC:1,Rxlev:22,Cellid:1ff5,Arfcn:0024
    ------OTHER SUITABLE CELL------

    Is there anything missing. please shed some light.

    Best Regards

    1. seems its not formatted. To be precise, with at+cnetscan=1 and at+cnetscan provides only ‘most suitable network’ list and ‘other suitable network’ is always empty.

      1. AT+CNETSCAN. It lists all visible cell towers(BTS) from all network operators.

        ------MOST SUITABLE CELL------
        ------OTHER SUITABLE CELL------
        Operator:"Orange PL",MCC:260,MNC:3,Rxlev:25,Cellid:2239,Arfcn:0112
        Operator:"Orange PL",MCC:260,MNC:3,Rxlev:26,Cellid:223a,Arfcn:0793
        Operator:"Orange PL",MCC:260,MNC:3,Rxlev:24,Cellid:ffff,Arfcn:0108
        Operator:"Orange PL",MCC:260,MNC:3,Rxlev:20,Cellid:ffff,Arfcn:0110
        Operator:"Orange PL",MCC:260,MNC:3,Rxlev:19,Cellid:204f,Arfcn:0118
        Operator:"Orange PL",MCC:260,MNC:3,Rxlev:18,Cellid:ac1d,Arfcn:0114
        Operator:"Orange PL",MCC:260,MNC:3,Rxlev:18,Cellid:ffff,Arfcn:0113

        Each line corresponds to one bts transceiver and includes:

        • Operator name
        • Mcc – Moblie country code
        • Mnc – Moblie network code
        • Rxlev– Signal strength
        • Cellid – Cell id
        • Arcfn – Absolute radio-frequency channel number

        Simcard is not required for this command.

        If module is connected to network, it only list towers belonging to that gsm operator.

        Source :

        1. I have this version 1137B05SIM900M64_ST_ENHANCE and the version you are referring from the source is using :1137B04SIM900M64_ST_MMS

          I think B05 is latest than B04. Please correct me if I am wrong. Do I need to flash the older version to get ‘other suitable network’ list ?

          1. Enhance versions are the more recent than the others. Your version is newer. The part I wanted to stress was If module is connected to network, it only list towers belonging to that gsm operator.

          2. from the response it seems that the module is connected to T-Mobile.

            Try the same command without any sim-card inserted

    2. Hello dear Kozi, I have the same problem. My rev. is 1137B06SIM900M64_ST_ENHANCE. Got some other suitable cells for a little time while playing with AT+CBAND (they appear and then disappear again). Do you have any news for the trouble? I plan to flash mr. Shah’s rev. B04 when’ll get ft232 com2ttl dongle (now my Arduino Nano’s software serial gets stuck on high speeds 🙂

      1. I have the same problem . I have tried everything from changing the baud rate to change hte firmware still no luck .
        I’d really appreciate the help .
        thank you.

  5. My current firmware version : 1137B04SIM900M64_ST_MMS
    with At+cnetscan=1 , i am able to find Cell-ID but not lac. How should I find both Cell id and Lac .
    What command to use and what firmware..

    1. Ya i tried AT+CNETSCAN=1… Still could not find LAC..pls look into this..


      ------MOST SUITABLE CELL------
      Operator:"IN UNITECH",MCC:405,MNC:819,Rxlev:57,Cellid:2b91,Arfcn:0563
      Operator:"IN UNITECH",MCC:405,MNC:819,Rxlev:49,Cellid:2b90,Arfcn:0565
      Operator:"IN UNITECH",MCC:405,MNC:819,Rxlev:26,Cellid:016a,Arfcn:0561
      Operator:"IN UNITECH",MCC:405,MNC:819,Rxlev:33,Cellid:2b8f,Arfcn:0569
      Operator:"IN UNITECH",MCC:405,MNC:819,Rxlev:32,Cellid:ffff,Arfcn:0568
      Operator:"IN UNITECH",MCC:405,MNC:819,Rxlev:30,Cellid:27d0,Arfcn:0567
      Operator:"IN UNITECH",MCC:405,MNC:819,Rxlev:23,Cellid:026e,Arfcn:0558
      ------OTHER SUITABLE CELL------
      Operator:"Vodafone IN",MCC:404,MNC:13,Rxlev:47,Cellid:161d,Arfcn:0855
      Operator:"Vodafone IN",MCC:404,MNC:13,Rxlev:44,Cellid:4f2b,Arfcn:0865
      Operator:"Vodafone IN",MCC:404,MNC:13,Rxlev:39,Cellid:4f2c,Arfcn:0863
      Operator:"Vodafone IN",MCC:404,MNC:13,Rxlev:32,Cellid:161e,Arfcn:0861
      1. It seems you are using some library functions to get these details printed… Can you share the response you get from the modem it self?

        1. I am using software called COOLterm . Baud rate = 9600

          AT gives OK. I AM not using any library to get these printed. Just pressing Enter after command and fetches these results. Did you ever get both cellid’s and LAC’s of all the networks


          ——MOST SUITABLE CELL——
          Operator:”IN UNITECH”,MCC:405,MNC:819,Rxlev:57,Cellid:2b91,Arfcn:0563
          Operator:”IN UNITECH”,MCC:405,MNC:819,Rxlev:49,Cellid:2b90,Arfcn:0565
          Operator:”IN UNITECH”,MCC:405,MNC:819,Rxlev:26,Cellid:016a,Arfcn:0561
          Operator:”IN UNITECH”,MCC:405,MNC:819,Rxlev:33,Cellid:2b8f,Arfcn:0569
          Operator:”IN UNITECH”,MCC:405,MNC:819,Rxlev:32,Cellid:ffff,Arfcn:0568
          Operator:”IN UNITECH”,MCC:405,MNC:819,Rxlev:30,Cellid:27d0,Arfcn:0567
          Operator:”IN UNITECH”,MCC:405,MNC:819,Rxlev:23,Cellid:026e,Arfcn:0558
          Operator:”Vodafone IN”,MCC:404,MNC:13,Rxlev:47,Cellid:161d,Arfcn:0855
          Operator:”Vodafone IN”,MCC:404,MNC:13,Rxlev:44,Cellid:4f2b,Arfcn:0865
          Operator:”Vodafone IN”,MCC:404,MNC:13,Rxlev:39,Cellid:4f2c,Arfcn:0863
          Operator:”Vodafone IN”,MCC:404,MNC:13,Rxlev:32,Cellid:161e,Arfcn:0861

    1. وعلیکم السلام
      I have seen people claiming they were able to change it using a tool called Service tool Adi module, but I cant find it!

  6. Sir,

    Moreover, If upgrade to any latest firmware fails, how to I backup/restore my current firmware?

    Also, since this AT+CNETSCAN is “ENHANCED” command, will I need to upgrade firmware with _ENHANCE_ support?


    1. if upgrade fails, you have to try to upgrade again or upload the previous firmware again. There is no backup and restore option. 🙂

  7. Sir,

    I am/was looking for this information only. Thanks!

    This is my AT+GSV output…


    This firmware do not support AT+CNETSCAN=1 command. (i.e. No LAC information)
    SIM900 website/doc says this feature available in AT Command API v1.11.

    Now, to which firmware version should i upgrade from your list?

    Please help.


    1. as per It should work with 1137B04SIM900M64_ST_MMS

      If command doesn’t work, make sure you have right firmware version:

      1. salam Muhammad, j’ai un probleme c’est que j’ai un module GSM SIM900, et j’ai pas encore commance la programmation de ce module avec ARDUINO et je sais pas comment configurer ce module avec le reseau GSM au MAROC pour s’assurer la bonne communication avec l’arduino!! Merci d’avance 🙂

Leave a Reply to sir i can not updtae my sim900a gsm module it will respond till flash errased but after this step it will give error during load command and error during flash loader and also say for check target setting.. Cancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.