Supported Hardware
Package Content
Server Install
Client Install
Gateway Install
Tech Info
PDU format
Bugs / Todo
Related Links

Jump to Vim Home Page

Project SMSLink - Introduction

Table of Contents

Credits and Copyright

This program is being written and maintained by Philippe Andersson for Scitex Europe, S.A. (then CreoScitex Europe, S.A. and now Creo Europe, S.A.) and the public, improving on previous work by Nico Rotty (it was a standalone Delphi app. - no code has been reused).
The program is released as Open Source, under the GNU GPL v.2 license.

Most of the code is © Les Ateliers du Héron, 1998-2006, by Philippe Andersson. A small part of it was shamelessly copied on GPL code published by Riccardo Facchetti as part of his libmodem-1.0.0 package.

The contributions by Philipp Klaus are © Internet Access AG, 1999.

The PDU code is based in part on proof-of-concept code kindly contributed by Francois Baligant, and benefitted a lot from the expert technical advice of Eric Guidi and David Martinez (from Wavecom France).

The layout for the gsmdevices(5) man page was directly copied from the one for passwd(5) by Michael Haardt and Rik Faith.

Please note: I'm aware of another program called SMSLink, a component of the (soon to be) commercial SMSOffice 1.0 Beta, currently being developed by Infoscape, and providing related functionalities. My program has nothing to do with this one. I'll have to sort out the naming issue.

Description of the program

This program implements a client/server gateway to the SMS protocol. The server process listens on a specific TCP port, and forks a child for each incoming connection. Those child processes are responsible for getting the message parameters from the clients, and will then compete through a mechanism of semaphores and shared memory segments to get exclusive access to the sending hardware : a serially attached GSM module.

The dialogue with the sending hardware is echoed to the client through the socket connection, and a status message is issued, along with the message ID when sending was successfull. The client program is meant to stay connected until the end of the sending process in order for it to receive some form of acknowledgement.

The server module implements several features that make this solution highly scalable and flexible.

  • The use of TCP/IP sockets for communication between client and server means that the application is network-aware from the start and that deploying it over a WAN (or across the internet) is a piece of cake. Expanding it as well, since writing additional clients for it is possible on any platform supporting sockets. Various ports of the client to Win32 are now available.
  • The server process has a command-line interface connected to the socket, making it possible to use it interactively from a telnet session (only line mode telnet supported at the present time - see server/BUGS and server/TODO in the sources directory). This feature is of enormous help when troubleshooting or debugging.
  • The command-line interface is backed by a parser written in lex and yacc (flex/bison, actually), which makes the language relatively easy to extend.
  • The server was built from the start with the idea of multiple GSM modules in mind. Adding a line to two configuration files (and connecting the hardware, of course) is all there is to using two modules instead of one. The number of modules supported by the server is limited by the hardware only.
  • The choice to use specific hardware (the serial GSM module), although limiting the general-purpose use of this application, allows for some very usefull features, the most prominant one being the ability to receive SMS messages as well as send them. This feature is now implemented (as of version 0.41b). Once downloaded from the GSM module, those messages can either be stored in an inbox file or fed through an external program or script, or both.
  • By sitting straight on the GSM network, the use of the GSM module offers an advantage that far outweighs its cost : provider independance. The ability to send and receive SMS might be limited in some way or another by the level of your subscription, but all providers should offer a standard way of doing it. No "provider-specific driver" is required in this case. What's more, all SMS routing aspects are being taken care of by the GSM network itself. Caution is advisable when choosing the provider though, as some of them might place some restrictions on routing to and/or from outside networks (e.g. Mobistar and Itineris*) or lack the implementation of some advanced features of the SMS protocol such as "point-to-point SMS" or "SMS-back" (e.g. Proximus through the UCP interface*).
  • As of version 0.48b, initial support for PDU mode and the creation of a "driver-like" capability table for the GSM modules means that most module brands on the market could be supported with little effort. This "driver" approach also garanties that you'll be able to mix and match different brands and models of modules on the same server with no problem. Support for PDU mode also opens up a new batch of options, like setting the validity period for a message, potential support for non-standard alphabet, binary content delivery to the mobile phone (logos, tunes, etc. ?) and more.
  • A full-fledged access control mechanism allows you to specify precisely which client machine or subnet should be allowed to connect and which shouldn't. The access control is IP-based (as opposed to user-based) and defaults to "deny" for increased security. When the situation doesn't require any access control, the whole thing can be easily disabled by the administrator.

    *) To the best of my knowledge and at the time of writing.

Provided with this release is a Unix command-line client, sendsms(1), that was specially designed to be included in shell scripts (and called from the corporate database applications). Please check here for a list of supported platforms.

Also included, as of version 0.44b, is a gateway program to the SMTP protocol, sms2mailgw(1). This daemon will scan the inbox file generated by the SMS server module, and process all SMS that follow a specific format, converting them to eMails. The purpose is to provide full email connectivity straight from the GSM keyboard.
(The other way around, mail to sms, is still in project).

An SMSLink "companion site" called SMS Link Add On'S has recently been opened by an enthousiast user. Featured there are (among others) a really nifty native Win32 client, a Linux-based queue server that can be used to add queueing capabilities to pre-0.55b SMSLink installs (or used as an alternative to the native queueing capabilities in 0.55b), and the full schematics of a serial+power combo cable for handheld mobiles.

Contacting me

Please feel free to give me a feedback on any and all issues related to this product. If you're using it, just let me know : it would brighten my day (and add an incentive to push development forward).

I'm now working for Ion Beam Applications, S.A. (IBA) in Louvain-la-Neuve, Belgium.

Here is my current email address at the office:

You can also reach me at my private email address (don't expect same day response) :

Should you wish to use a secure channel to communicate with me, here is my OpenPGP key.

My personal home page is located at: Enjoy !

Additionally, please consider subscribing to the smslink-users mailing list (see below for details).

When sending mail to me, please begin your subject line with [SMS] to avoid it being overlooked (not needed when posting to the mailing list).

The official home page of the SMSLink project is now located at

You can find its SourceForge project page at

Lastly, if, like me, you love GNU/Linux systems and wish to show your support, please consider registering yourself (and your machine(s), if you feel so inclined) with the "Linux Counter" by following this link:

The Linux Counter

Mailing Lists

SourceForge is now hosting a mailing list for SMSLink users (with a lot of wit, I decided to call it smslink-users ;-).

Learn how to subscribe, unsubscribe and more from the following page:

This list can be used by SMSLink users, but of course by anybody else interested in the product as well, and the discussions hosted on it can range from support issues to technical questions or to announcements of new releases of the software or large updates to the web site.

Usual disclaimer

This program is provided "AS IS", without any warranty, etc. Bottom line : don't blame me if it doesn't work for you (or messed your setup). You use it at your own risk. Period.

Last Modified: September 29th, 2006.
philipa STRUDEL scarlet PUNKT be
SourceForge Logo