Cellular Shield SM5100B Troubleshooting

OK. I've had an SM5100B cellular shield for some time (over a year) and haven't got it to work yet. I haven't created an application for it yet because I haven't got out of hardware troubleshooting mode. I'm documenting what I know in the hope of soliciting any ideas from other users who've got it working.

Hardware Connection

I'm using a DFRobot Mega 2560 so I have a few extra COM ports and don't have to resort to SoftwareSerial. The Arduino is powered by its USB connection to my PC. The SM5100B is powered from a plug pack that's rated for 2.8A at 5V which is connected on GND and VIN. Ground on the Arduino is linked to ground on the SM5100B but there's no connection between the two on either 5V or 3.3V rails. Oddly, I've found the serial TX/RX for the SM5100B are not on pins 0 and 1 as marked, but on 2 (TX) and 3 (RX); I found this by accident when troubleshooting why I had no comms at all. Reset is jumpered between the two.

I have written the following "pass through" sketch and uploaded it to the Arduino.
char character = 0;
void setup()
{
  Serial.begin(115200);
  Serial1.begin(115200);
  
  Serial.println("setup()");
}

void loop()
{
  while(Serial.available())
  {
    character = Serial.read();
    Serial1.print(character);
  }
  while(Serial1.available())
  {
    character = Serial1.read();
    Serial.print(character);
  }
}


So I have all the hardware set up and have been working through Tronixstuff's tutorial. I get the "normal" startup chatter from the SM5100B on startup.


~<0><0><0><0><0þ ~~<0><0><0><0><0þ ~~<0><0><0><0><0þ ~~<0><0><0><0><0þ ~
+SIND: 1


+SIND: 10,"SM",1,"FD",1,"LD",1,"MC",1,"RC",1,"ME",1


+STIN:0


+SIND: 7


+SIND: 0


+SIND: 10,"SM",0,"FD",0,"LD",0,"MC",0,"RC",0,"ME",0


According to our mate John Boxall (Mr Tronixstuff), the ideal here is to end up with either +SIND=4 or +SIND=8. And I can't get that far.

Now I've worked through this for a few hours, but I'm going to pretend this is the first time I've looked at it and retrace my steps.

Troubleshooting

As per Tronixstuff's tutorial, I've switched to a terminal application for a little two-way communication action.
So what happens when I enter a few basic AT commands?

Command:  ATE1
Response: OK

I just turned command echo on.

Command:  ATI
Response: ATI
          +CM ERROR: 4

Oops, I guess ATI is not implemented. I return to Tronixstuff's tutorial and check what's next. John recommends setting the SBAND parameter. Luckily for me John is in Australia and recommends band 4 is correct for us. So I follow his lead while keeping an eye on the SM5100B-D AT Command manual.

Command:  AT+SBAND=4
Response: OK


So does it work now? I hit the RESET push button on the Arduino and watch the serial chatter.



+SIND: 1


+SIND: 10,"SM",1,"FD",1,"LD",1,"MC",1,"RC",1,"ME",1


+STIN:0


+SIND: 0


+SIND: 10,"SM",0,"FD",0,"LD",0,"MC",0,"RC",0,"ME",0


+SIND: 7

It's the same stuff but, interestingly, in a slightly different order. I need to check the SBAND setting has stuck. By referring to the AT Command manual, I find I can use AT+SBAND?


Command:  AT+SBAND?
Response: +SBAND: 4


OK, so the setting stuck. So I'm not losing settings when I reset. That's something. In case the SBAND recommendation from John was wrong, I've tried all the others too.

Commands

What are these responses anyway? I'm getting SIND mainly but also one STIN response. The manual's not very clear (meaning the English isn't great).

AT+SIND

"AT+SIND: set some status of a system which sends indication automatically." I'm going to call SIND Status INDication and assume the SM5100B is going to spew out status messages whenever something changes. This might be a bad assumption. 

AT+STIN

"AT+STIN: allow the user to identify the commands sent via SIM card.(such as GET INKEY)". So STIN is something to do with SIM card commands. This might also stand for STatus INdication but only for the SIM card. 


So let's just guess they're both status messages. SIND is from the SM5100B module itself and STIN is from the SIM card. Good guess? Got a better idea? (Comment please!)

Output

OK, so I'll try to interpret the output from the SM5100B with help from the AT Command manual.


+SIND: 1
The manual calls this "SIM card inserted". OK, good.


+SIND: 10,"SM",1,"FD",1,"LD",1,"MC",1,"RC",1,"ME",1
"Show the status of each phonebook after init phrase." The status is either 0 (not loaded) or 1 (loaded from SIM). So this looks like 6 phonebooks are loaded. Good so far, yes?


+STIN:0
OK, we've switched to STIN. STIN: 0 means "Setup Menu command has been sent from the SIM" I have no idea if the SIM requires some kind of response to this "setup menu command". This requires further investigation.


+SIND: 0
"SIM card removed". Oh crap, it's going south. I haven't touched the SIM card.


+SIND: 10,"SM",0,"FD",0,"LD",0,"MC",0,"RC",0,"ME",0
Phone books have been unloaded.


+SIND: 7
"The network service is available for an emergency call."

So I guess we've been booted. We certainly didn't get to +SIND: 3 "AT module is partially ready" or +SIND: 4 "AT module is totally ready." So now I'm officially off the reservation. Tronixstuff's tutorial shows screen shots of the STIN: 0 responses even when there's a successful connection. So it seems everything is OK up until that point. The problem for me seems to start at SIND 0 - is the SIM card being rejected for some reason? Anyway, the tutorial assumes you got to the point of having +SIND: 4 and goes on from there. So I'm off the reservation.

SIM Cards

So what's up with my SIM card? The one I have in the shield at the moment is an Amaysim that I bought over the counter for this project. I power down the shield, pop the SIM into an iPhone 3GS and power on. Hmm. Last time I checked this it didn't look like this. The iPhone says SOS Only. Data over cellular? No. SMS? No. In-network calls (567)? No. OK I have to get this straight before I go on. My online account says I have 2 months worth of credit (2GB of data) available. But the SIM isn't working now where previously I have made calls, SMS and data connections from this SIM. Hmm. Maybe I haven't tested this SIM. The carrier says the phone I have is likely network locked (since it was bought on contract from Telstra, that's likely) and testing this SIM on this phone isn't going to work. Bugger. The other iPhone 3GS is not here right now.

So, on to the next SIM card. This one's from Telstra and came as part of a Wireless Broadband 3G modem. Web surfing on 3G works fine on the iPhone 3GS. So I'd say it's good to go. I switch it into the SM5100B and power it up. Same difference.


+SIND: 1


+SIND: 10,"SM",1,"FD",1,"LD",1,"MC",1,"RC",1,"ME",1

+STIN:0

+SIND: 7

+SIND: 0

+SIND: 10,"SM",0,"FD",0,"LD",0,"MC",0,"RC",0,"ME",0

I'm going to assume (and it's a bit of a stretch) that both SIM cards work fine. There's something that is common to both SIM cards that's at fault (they're both 3G when the module is an older 2G type GPRS card), or the setup is wrong, or module itself is failing.

Hardware Fault

I have in the past pursued the local distributor for help (LittleBirdElectronics.com). I have gone to the shield manufacturer for help (SparkFun.com) and they have referred me to the manufacturer of the SM5100B module (LinkSprite.com). Their official response was:

Please use 2G SIM card.
"test the SIM or run diagnostics" We don't have this test software.
You can call to ask operator.
Supported SIM card:
3V/1.8V SIM card. (auto recognise)
support GPRS 2G SIM card.

... which, like the manual is not clear at all. Having asked the telco's for a 2G SIM card, they have each asked me what I meant by that. I explained I had a "phone" that "only works with at 2G SIM card, according to the manufacturer" and they each explained there was nothing about the SIM card that made it 2G or 3G. Someone explained to me an "old phone" may not work with a later model card, but this would be due to the increased memory size in newer SIMs.
So is the hardware at fault? Is it just so old of an architecture that I can't source a suitably ancient SIM card in Australia? Or is there something wrong with the unit?

Other Investigation

I've gone through all the data I can find on this module. People's tutorials, SparkFun's product comments, the manual, that AT Command set. I've run numerous tests to see if the card can identify it's associated cell tower (it can) and can it identify other nearby cells (yes, that too). What is the signal strength (it's good) and various other things I thought might turn up a problem. I keep returning to SIM compatibility or hardware failure. Any ideas?

That is all.

Comments

  1. The baud rate was changed to 9600,the frequency band your looking for is the command "AT+SBAND=4" for Australia.
    Do you find that when your giving power from the extra power that it messes with the characters from you serial , so did I , turns out you don't need it on the newer versions.The only time you'll need that is when you push the module to power mode , but you only need that if the signal is truly aweful

    And yes the startup sequence should be
    +SIND1:Sim card is there
    +SIND10:PhoneBook
    +SIND11:registered to network
    +SIND3:module partially ready
    +SIND4:module fully ready

    If you want more help then feel free to email me
    :-)

    ReplyDelete
    Replies
    1. Hi,
      Did you figure out how to solve this problem.
      I am also getting the exact same SIND 7 issue.
      Thanks.

      Duncan

      Delete
  2. Hi, thanks for your blog. It showed me I wasn't going mad w.r.t. the tx/rx pins etc. I just wanted you to be aware of my own project write-up in case it helps. It's at http://openenergymonitor.org/emon/node/1330 . I'm trying to send data over gprs, and haven't yet succeeded. I suspect the SM5100B doesn't support http requests at all, or maybe I am going mad after all!

    ReplyDelete
  3. Try AT+SSIMT it returns info on the sim card. returns +SSIMT:X,Y where X is 0-3 being success,not ready,No Sim,Failed and Y is 0-3 being Sim Card,UM Card, Double model card, Invalid card. I too am getting the SIND 0....SIND 7 issue and SSIMT reports: +SSIMT 1,3

    ReplyDelete
    Replies
    1. Yeah, with one SIM I get +SSIMT: 1,3 (Invalid Card). The other one gives +SSIMT: 0,0. So that looks good! Still can't dial it with ATD though ...

      Delete
  4. Quick update, I examined my red demo board and noticed that there was a bridged solder joint over two of the pins on the 80 pin connector. They happened to be two pins that go to the SIM socket, I touched up the connection with a soldering iron(carefully!)breaking the bridge and now the unit functions perfectly.

    AT+CFUN=1,1
    OK
    þ ~þ ~þ ~þ ~þ ~
    +SIND: 1

    +SIND: 10,"SM",1,"FD",1,"LD",1,"MC",1,"RC",1,"ME",1

    +STIN:0

    +SIND: 11

    +SIND: 3

    +SIND: 4

    OK
    ATD=#100#
    +CUSD: 1,Bal: 20.00 * Exp 25 Dec 2012
    1. Recharge
    2. Balance
    3. My Offer
    4. PlusPacks
    5. Tones&Extras
    6. History
    7. CredMe2U
    8. Hlp
    00. Home
    *charges can take 48hrs,0
    ATH
    OK

    ReplyDelete
    Replies
    1. I've found solder bridges as you suggested. I've cleaned them away with a needle and am trying again. There's now no short between pins; I did a continuity check. So far no luck though.

      Delete
  5. Hello , i used your configuration to connect my shield with arduino (before i find your article) and it was working good for some hours...

    Vin and GND to power supply which can support 5V@>2A and pins 2-3 from shield to pins 2-3 of arduino UNO...

    I was getting +SIND: 1 , +SIND: 10 , +SIND: 8 , +SIND: 4 . So i wasnt registered to my network but i thougth it is because i dont have an antenna yet...

    After some hours , with the same configuration , the only message i get is "Starting SM5100B Communication..." and no SIND status codes... If i "talk" to the shield with a terminal program it answers as expected ! Any idea ? THANKS !

    ReplyDelete
  6. SUCCESS! Guys, thanks for the comments! I'll do a full blog post later when I can push data through this thing, but for now, it's working! Here's what I did.

    1. Followed my own blog post above and put everything back exactly where it was.
    2. Went to my pre-paid SIM provider (amaysim in Australia) and put credit on my SIM.
    3. Started up the Terminal program and connected to the SM5100B. While I played with it (and this may be the important thing) I received some messages:

    OK
    +CMTI: "SM",4
    +CMTI: "SM",5
    +CMTI: "SM",6
    +CMTI: "SM",7
    +CMTI: "SM",8
    +CMTI: "SM",9

    OK

    OK
    +CMTI: "SM",10
    +CMTI: "SM",11
    ATD12345678

    +SIND: 5,1

    NO CARRIER

    +SIND: 6,1
    +CMTI: "SM",12
    +CMTI: "SM",13
    +CMTI: "SM",14
    +CMTI: "SM",15

    ... was that carrier settings or something? Well, after that I tried the command SSIMT (see comment above) and got a successful 0,0 code back.
    4. I the dialled my home number from the SM5100B and the phone rang! W00T!
    5. I then called the SIM number and got confirmation of the incoming call on the serial monitor:

    RING

    +CLIP: "0409123456",161

    That's a start! Thanks again. Chris.

    ReplyDelete
    Replies
    1. Hi Chris,

      Just like you, I have one of these modules lying around. No luck so far, despite numerous attempts. Great that you got it working. I'm wondering: did you put the solder bridges back? Should they be there or not?

      Also, if you by any chance have a simple working sketch, that would be amazing!

      Cheers,
      Thijs

      Delete
  7. Thanks for this blog post!

    I had problems with my SM5100B too. I am in Sweden and I'm using a Comviq card.

    For me it helped to use AT+COPS. First I queried to see available networks:

    AT+COPS=?

    +COPS: (1,"TELIA",,"24001"),(1,"",,"24024"),,(0-4),(0,2)

    OK

    I selected the network manually with

    AT+COPS=1,2,24024

    A few seconds later I got this:
    +SIND: 11

    I am now able to call to my module but for some reason dialing out doesn't work yet.

    Hope this helps for somebody else.

    ReplyDelete
  8. Thanks for documenting your troubleshooting.

    I've been using the board for the last couple of days, and it was working without issue. Just today I placed the unit into an enclosure I built for it, and noticed it was not working.

    I loaded up the sketch above for troubleshooting, and noticed I was getting the exact same errors as here,

    +SIND: 0

    +SIND: 10,"SM",0,"FD",0,"LD",0,"MC",0,"RC",0,"ME",0

    As well as the +SSIMT showing 1,3 , invalid card.

    I tried playing around with the band, but band 4 didnt work [by default, band0 should work in Australia without issue]. The baud was also fine.

    Keep in mind, that the unit had been working perfectly for the last few days anyway.

    After some fiddling around, it turns out that the position of the antenna *wire* seems to be causing this issue. When in the enclosure, I had the wire loop around the SM5100 in a circle, then I attached the antenna plug to the side of the enclosure. When I unwrapped the wire and ran it under the unit, lo and behold the thing starts to work again.

    I tried a few different positions, and it seems that this error was totally dependant on the position of the wire [even without attaching an antenna, the thing still works!]

    Hopefully this helps, not saying this will be the case for everyone but just an example of how temperamental this board seems to be.

    ReplyDelete
  9. This comment has been removed by the author.

    ReplyDelete
    Replies
    1. I have a similar problem not if I you can help me. When I load the code and run the serial monitor throws me these values​​:

      +SIND:0
      +SIND:10 ...
      +SIND:0
      +SIND:3
      +SIND:4
      +SIND:7

      Do not know if you can give me an idea of ​​what the problem

      Delete

Post a Comment