AT command script processor for GSM modem debugging

Last week we wrote some software for a GSM (cellular) modem module.  The GSM modem is controlled by AT commands, like an old landline modem. Debugging is usually done by typing AT commands into Hyperterminal or the Bus Pirate.

We got tired of tapping out tons of AT commands by hand, so we created an AT Command Script Processor in C# (Visual C# 2010 Express Edition). We’re releasing it so people can share AT command scripts that demonstrate how various devices are configured.

Download it here, the current version as of this writing is 00.08.01 Alpha Release. We also added a page to the documentation wiki.

Use examples after the break.

There are two files included in the download: the application and a sample script file.

AT Command| Get Response (bool)| Delay|  Comment

The script file formatting is like this. The AT command is first, followed by a Boolean (TRUE/FALSE) value that tells the program if it needs to get a response. Finally, tell it how long to delay before retrieving data from the modem. The last field is an optional comment that is ignored.


AT|TRUE|1000|Send  AT then delay for 1 sec then get data

This example waits 1 second and then gets a reply from the GSM modem.


AT|FALSE| 1000|Send AT then delay for 1 sec

This example doesn’t get a reply from the GSM modem

This utility helped us test a series of AT commands during development. We’re releasing it so people can share AT command scripts that demonstrate how various devices are configured.

Join the Conversation


  1. There is a new version: 00.08.02

    – Added Option to adjust RX Buffer Size
    – Special Command for sending ascii from any hex range: __@HEX Usage: __@HEX=AA|TRUE|100|None — example: for creating SMS, Ctrl+Z is needed at the end of the message creation.

  2. Speaking about AT commands, is there a specification about timeouts? Or is it up to client to decide when he has waited enough?

  3. it seem doesn’t compatible with command AT+STGI=0 / AT+STGR= ; for GSM SIM TOOL KIT , because can not Read Reply from Provider.

  4. HERU

    if it can be done on hyperterminal, it can also be done using this tool. maybe you just need to add some delays.

  5. Hi, I’m using this software and first of all I’d like to say thanks for writing it, because its pretty great.

    Secondly I have a question. When I use the AT command AT#SD to activate a remote socket connection directly through a terminal program (in my case secureCRT) I get the response “AT#SD = 1,0,80,”” but with my script using your software, the resonsei get is “AT#SD = 1,0,80,””.

    Can anyone tell me why this difference is appearing?

  6. Currently, I am using this to send and receive AT commands in batches with my ESP8266. I will later try if I can inject Lua scripts to ESP8266 as well.

    Hi Jonathan, thanks for using the software. This project was born because I am tool lazy to retype things over and over again. :) By the way. I open-sourced this project as well.

    On the problem you mentioned and based on your post, I can’t find the difference of the results and seems to me that they are posting the same thing?
    response1: “AT#SD = 1,0,80,””
    response2: “AT#SD = 1,0,80,””

Leave a comment

Your email address will not be published. Required fields are marked *

Notify me of followup comments via e-mail. You can also subscribe without commenting.