SMS Terminal

Usage no npm install needed!

<script type="module">
  import ntlabSmsTerminal from 'https://cdn.skypack.dev/@ntlab/sms-terminal';


Node SMS Terminal


Node SMS Terminal is designed to handle GSM communication such as sending or receiving short message (SMS), querying USSD data from network provider. It utilizes modem dongle usually used to connect to data network from provider, so it doesn't need special or expensive hardware.

Node SMS Terminal doesn't provide direct method to handle its functionality, but it uses socket communication to provide those functionality to other party.

Currently, there is Node SMS Gateway other party implementation for this terminal.

Hardware support

Node SMS Terminal uses generic AT commands to support wide range of dongle hardwares. Here are supported dongles:

  • Sony Ericsson mobile phone
  • Siemens C-55
  • Huawai modem (tested on E173, E3372, EC1260-2)
  • ZTE modem (tested on MF190)
  • Prolink modem (tested on PHS301, still need testing)
  • Wavecom modem

Support for new modem is easily achieved by providing the commands in the Drivers.ini configuration.


Installation is available via GIT.

$ cd ~
$ git clone https://github.com/tohenk/node-sms-terminal.git
$ cd node-sms-terminal
$ npm install

To run application (On some Linux distribution replace node with nodejs)

$ node app.js --auto


Node SMS Terminal uses JSON configuration named config.json in the working directory, but it can be told to use configuration elsewhere.


Set Sequelize database connection parameter.

    "database": {
        "host": "localhost",


Set socket connection secret. Each socket client must send auth with secret and will be checked against this value. If it matches, connection accepted, otherwise connection will be closed.

    "secret": "CHANGEME"


Set web interface username and password. Default username and password is both admin. To secure your instance, it is advised to change default password.

    "security": {
        "username": "admin",
        "password": "admin"

Command line options

$ node app.js --help
  node app.js [options]

--config=config-file  Read app configuration from file
--driver=driver-file  Read driver from file
--port=port, -p=port  Set web server port to listen
--logdir=directory    Set the log file location
--auto, -a            Automatically open all available ports
--read-new-message    Once the terminal opened, try to read new messages
--log-ussd, -u        Add ussd command to activity

Web interface

Node SMS Terminal web interface can be accessed via port 8000 (default) or as specified by the command line options above.


  • Text SMS mode currently not supported
  • STK functionality still missing
  • Socket and web interface currently doesn't support https