I'm developing a data aquisition module, that amongst other things, it have to comunicate through GSM/GPRS module, since it will be a mobile application.

I can connect to the module and send sms's with not much effort. Since I have to comunicate frequently and with amounts of data "difficult" to manage through sms, what I'm trying to figure out is, can I establish a data call using gprs? In this case I got two modules interfaced to a microcontroller and I want to "call" to the other device, pass the data and hang up.

I'm not sure if this notion of data call between two gprs devices is meant to happen as I expect, but that's why I would grealty appreciate your help!



2 Answers 2


GPRS is essentially routed over the Internet using TCP/IP, so one thing you should check before proceeding is that you can find a local cell phone carrier that will provide the devices with an externally routable IP address that can accept incoming traffic. Most will sit behind a NAT system and not allow that to occur. Some carriers can provide that service but there may be additional costs and they may limit the service to corporate customers.

Are both your devices remote or are you using a pair of GPRS modems just because you'd previously used one to receive SMS messages? If that's the case it would certainly be easier to have a machine with a permanently on Internet connection with a static IP address to transer the data to/from.

The MC35 devices don't have an in-built TCP/IP stack so you'll need to use PPP to talk to them. Another answer gives some good ideas on how to proceed on that side of things. Once on a resource limited PIC I managed to take the code from Microchip AN724 and add UDP support although it was quite a bit of effort so an existing TCP/IP stack will certainly make it much easier if you have the RAM and FLASH available for it.

Another thing you could consider would be a GSM data call. It's been so long since I've used that I don't know if many / most carriers still support it but that just consists of using an ATD command followed by the other device's normal voice number to initiate the call. On the other depending on the settings you may seem something like RING to which you can type ATA to answer the call. Then the data should be transparently send between them so it's certainly as easy thing to try.

  • \$\begingroup\$ Thank you for the answer. First, I thought of sending the data by sms. It's not that much data, just some data collection from a few sensors and gps. The problem isn't the amount of data that goes each time, but the frequency that this data must be sent from the mobile data aquisition to the "fixed" device. I just learn that my madule deosn't have gprs after, but as you suggest, I think the GSM Data Call might be the solution I'm looking for. I just can't understand by reading the manual, how to acomplish such call. It would be a special command or just initiate a normal call between them? \$\endgroup\$
    – Sergio
    Jul 14, 2014 at 8:44
  • \$\begingroup\$ @Sergio, good point voice call will be the default try AT+CBST=7,0,1 and AT+FCLASS=0 before the ATD commands etc as above and let me know how it goes. It'd be a few days before I had a chance to look at it but if you don't have any luck I'm pretty sure I've still got a TC35. \$\endgroup\$
    – PeterJ
    Jul 14, 2014 at 9:14
  • \$\begingroup\$ One of my modems doesn't seem to be working... I'm waiting for another TC35, so I can test the commands between them. I'll let you know the result as soon as I get the modem. \$\endgroup\$
    – Sergio
    Jul 15, 2014 at 8:32
  • 1
    \$\begingroup\$ I'm getting to the conclusion that given the frequency that I'll need to communicate with the mobile modules, and the amount of data that will produce, GPRS will be the way to go. I forgot to mention on the first question, but this one-to-one communication is just for the prototyping, the real application will consist on several mobile units communicating with a "fixed" one. So, I think the best is to make the mobile units GPRS enabled, so I can communicate through IP network. Anyway, when I get the modem, I'll try to make the GSM Data Call and post the results. \$\endgroup\$
    – Sergio
    Jul 16, 2014 at 9:57
  • \$\begingroup\$ If anyone is reading this in 2023: your devices will be able to get individual IPv6 addresses, but the chance of getting individual IPv4 addresses for 10 different devices is precisely zero. So you must use IPv6 or you are limiting your devices' ability to communicate properly. \$\endgroup\$
    – user253751
    Feb 9 at 14:09

The usual way is to dial "ATD*99#" and start a PPP link. Some modems have "PAD" commands to simlplify trivial data interchange, but for higher data rates you should use a PPP connection. There are some example PPP implementations on the Internet, but then you will need an IP stack. I don't know your programming environment, but if you are doing an embedded project in C language I'd use something like uIP for the TCP stack. If you are using a linux board, it's even simpler; you can Google around and get many examples of that.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.