You are on page 1of 7

8/18/2014 The Inuits | Inuits

http://inuits.eu/blog/sms-server-using-centos-kannel-and-playsms 1/7
SMS server using CentOS, kannel
and playsms
By: Jan Collijs
On this page I will describe the way I went trough to configure an sms gateway using a laptop, huawei modem,falcom A2D-1 or
the option Globetrotter hardware using the open source software kannel & playsms.
The main goal of this project was related to the scouting movement in Belgium I'm active. We wanted to interrogate all of our
members who were on a start weekend of the next scouting year. To do this we had the idea to use the sms communication
channel. This because almost every youngster has the possibility to send sms messages without a big effort.
To achieve this I searched on the internet and found the playsms software. Using this software you can easily add an interactive
flow to communicate with people using sms. We used the sms quiz where we added some questions with keywords were people
could answer to and we replied with a next question.
As mobile provider we choose for Mobile Vikings a belgium operator with an open-mind. They were very helpfull when I contacted
them to see if they could monitor some mobile traffic for my sim.
But before this software can handle your sms messages they have to be captured and received using a SIM card and pushed to
the software. This step in the whole process can be done by kannel.
Process using CentOS 6.3 minimal installation
Install some required dependency packages:
# yum install gcc libxml2-devel mysql-server wvdial vim
Looking for the modem:
# wvdialconf /etc/wvdial.conf
Found a modem on **/dev/ttyUSB0**
Minicom
Before starting configuring the services which were going to communicate with the modem I wanted to make sure I could send
text messages with it. To check that functionality I installed the minicom serial communication program:
# yum install minicom
# minicom
In this terminal you can control the modem using AT commands. A nice tutorial about those commands is available
on qualityguru.
Steps for entering the PIN.
AT+CPIN=XXXX
OK
AT+CPIN?
+CPIN: READY
OK
Checking if the SMS center is configured:
AT+CSCA?
+CSCA: "+32XXXXXXXXX",145
OK
If not configured, configure it by:
AT+CSCA="+32XXXXXXXXX"
8/18/2014 The Inuits | Inuits
http://inuits.eu/blog/sms-server-using-centos-kannel-and-playsms 2/7
OK
The steps for sending a text message:
AT+CMGF=1
OK
AT+CMGS="+32XXXXXXXXX"
> This is the text message.
> (CTRL-Z)
+CMGS: XX
OK
If you received the message on your phone its working obviously and we can start configuring kannel.
If not, check the troubleshoot page of qualityguru for some common mistakes.
Kannel
At the moment of writing this post the last stable version is 1.4.3. Using CentOS 6.4 you can install kannel from the
epel repository:
# yum install kannel
Or you can choose to compile it from source:
# wget http://www.kannel.org/download/1.4.3/gateway-1.4.3.tar.gz
# tar zxvf gateway-1.4.3.tar.gz -C /usr/local/src/
# cd /usr/local/src/gateway-1.4.3/
# mkdir -p /etc/kannel
# ./configure --prefix=/etc/kannel
# make
# make install
I installed the kannel service from the repository and created a symlink from /etc/kannel.conf to the /etc/kannel/kannel.conf so
the playsms service could read the configuration afterwards:
# mkdir /etc/kannel/
# ln -s /etc/kannel.conf /etc/kannel/kannel.conf
Once you configured your device you start kannel by starting the kannel service:
# service kannel start
If everything went well you can see that there are 2 services started:
# ps aux | grep kannel
kannel 9611 1.9 0.1 750424 6684 ? Sl 13:14 2:37 /usr/sbin/bearerbox /etc/kannel.conf
kannel 9636 0.0 0.1 674228 4676 ? Sl 13:14 0:00 /usr/sbin/smsbox /etc/kannel.conf
In the /var/log/kannel/kannel.log file you can follow the state of the kannel service. I struggled a bit with this to find out the
reset string for the modems I used. By searching the internet you can find the particular string for your device.
For example the option one I found on enterprisemobiletoday.com by try & error in the minicom terminal.
I used different sorts of hardware and listed the specific kannel.conf files here under per device.
In the first phase I used a huawei USB dongle:
#CORE
group = core
admin-port = 13000
admin-password = #PASSWORD
status-password = #PASSWORD
log-file = "/var/log/kannel/kannel.log"
log-level = 0
8/18/2014 The Inuits | Inuits
http://inuits.eu/blog/sms-server-using-centos-kannel-and-playsms 3/7
access-log = "/var/log/kannel/access.log"
smsbox-port = 13001
store-type = file
store-location = "/var/log/kannel/kannel.store"*
#SMSC MODEM GSM
group = smsc
smsc = at
connect-allow-ip = 127.0.0.1
port = 13013
host = "localhost"
smsc-id = Huawei
modemtype = Huawei
device = /dev/ttyUSB0
speed = 9600
sms-center = "+32486000005"
my-number = "+324XXXXXXXX"
pin = XXXX
group = modems
id = huawei
name = huawei
detect-string = "huawei"
init-string = "AT+CNMI=2,1,0,0,0;+CMEE=1"
#SMSBOX SETUP
group = smsbox
bearerbox-host = 127.0.0.1
bearerbox-port = 130X01
sendsms-port = 13131
sendsms-chars = "0123456789+"
global-sender = 00324XXXXXXXX
log-file = "/var/log/kannel/smsbox.log"
log-level = 0
access-log = "/var/log/kannel/access.log"
#SEND-SMS USERS
group = sendsms-user
username = #USERNAME
password = #PASSWORD
user-allow-ip = "\*.\*.\*.\*"
#SMS SERVICE
group = sms-service
keyword = default
accept-x-kannel-headers = true
#accepted-smsc = Huawei
accepted-smsc = at2
max-messages = 0
assume-plain-text = true
catch-all = true
get-url = "http://localhost/playsms/index.php?app=call&cat=gateway&plugin=kannel&access=geturl&t=%t&q=%q&a=%a"
During the event was in the possession of a falcom A2D-1 gateway which was connected from serial to usb:
group = core
admin-port = 13000
admin-password = playsms
log-file = "/var/log/kannel/kannel.log"
log-level = 0
access-log = "/var/log/kannel/access.log"
smsbox-port = 13001
store-type = file
8/18/2014 The Inuits | Inuits
http://inuits.eu/blog/sms-server-using-centos-kannel-and-playsms 4/7
store-location = "/var/log/kannel/kannel.store"*
group = smsc
smsc = at
modemtype = falcom
device = /dev/ttyUSB0
my-number = "+324XXXXXXXX"
sms-center = "+32486000005"
pin = XXXX
group = modems
id = falcom
name = "Falcom"
detect-string = "Falcom"
reset-string = "AT+CFUN=1"
#SMSBOX SETUP
group = smsbox
bearerbox-host = localhost
sendsms-port = 13131
log-file = "/var/log/kannel/smsbox.log"
log-level = 0
access-log = "/var/log/kannel/access.log"
#SEND-SMS USERS
group = sendsms-user
username = #USER
password = #PASSWORD
#SMS SERVICE
group = sms-service
keyword = default
accept-x-kannel-headers = true
max-messages = 0
assume-plain-text = true
catch-all = true
get-url = "http://127.0.0.1:2080/playsms/index.php?app=call&cat=gateway&plugin=kannel&access=geturl&t=%t&q=%q&a=%a"
After the event I had to give back the falcom and got my hands on an option globetrotter HSPDA card connected on a pcmci slot
of the laptop I configured as CentOS server:
#CORE
group = core
admin-port = 13000
admin-password = playsms
status-password = playsms
log-file = /var/log/kannel/kannel.log
log-level = 0
access-log = /var/log/kannel/access.log
smsbox-port = 13001
store-type = file
store-location = /var/log/kannel/kannel.store
#SMSC MODEM GSM
group = smsc
smsc = at
connect-allow-ip = 127.0.0.1
port = 13013
host = localhost
smsc-id = Option
modemtype = Option
device = /dev/ttyUSB0
speed = 9600
8/18/2014 The Inuits | Inuits
http://inuits.eu/blog/sms-server-using-centos-kannel-and-playsms 5/7
sms-center = "32486000005"
my-number = "324XXXXXXXX"
pin = XXXX
# If modemtype=auto, try everyone and defaults to this one
group = modems
id = generic
name = "Generic Modem"
reset-string = "AT&F"
#SMSBOX SETUP
group = smsbox
bearerbox-host = 127.0.0.1
bearerbox-port = 13001
sendsms-port = 13131
sendsms-chars = 0123456789+
global-sender = 0032485550261
log-file = /var/log/kannel/smsbox.log
log-level = 0
access-log = /var/log/kannel/access.log
#SEND-SMS USERS
group = sendsms-user
username = playsms
password = playsms
#SMS SERVICE
group = sms-service
keyword = default
accept-x-kannel-headers = true
accepted-smsc = at
max-messages = 0
assume-plain-text = true
catch-all = true
Web service
For the playsms service we need to have a webserver configured. You can use every webserver you want, I tried with xampp and
lighttpd.
During the event I used with the xampp web service because it was working after all by following the howto ofkasrut.
After the event was finished I migrated to lighttpd mainly because I already had some other applications running on that service.
Xampp
# wget http://nchc.dl.sourceforge.net/project/xampp/XAMPP%20Linux/1.7.4/xampp-linux-1.7.4.tar.gz
# tar zxvf xampp-linux-1.7.4.tar.gz -C /opt/
# cd /opt/lampp
# ./lampp start
Lighttpd
For the installation of lighttpd I refer to a clear tutorial on howtoforge
playsms
playsms is a free and open-source gateway. I used this software to configure a big quiz to set up a cool and trendy
communication flow between people and our scouting movement.
I used the git repository to easily update my instance to the newest releases:
# cd /usr/local/src/
# git clone git@github.com:antonraharja/playSMS.git
# cd playSMS/
8/18/2014 The Inuits | Inuits
http://inuits.eu/blog/sms-server-using-centos-kannel-and-playsms 6/7
Creation of the necessary directories and copy the web files to the webserver directory
# mkdir -p /var/www/html/playsms /var/spool/playsms /var/log/playsms /var/lib/playsms
# cp -r usr/local/src/playSMS/web/* /var/www/html/playsms/
Creation of a mysql db and user:
# mysql -u root -p
# Enter password:
# mysql> create database playsms;
Query OK, 1 row affected (0.00 sec)
# mysql> grant usage on *.* to USER@localhost identified by PASSWORD;
Query OK, 0 rows affected (0.00 sec)
# mysql> grant all privileges on playsms.* to USER@localhost ;
Query OK, 0 rows affected (0.00 sec)
# mysql> quit
# msql -u root -p playsms < /usr/local/src/playSMS/db/playsms.sql
Next step is to configure the playsms web service. Therefore follow those steps:
# cd /var/www/html/playsms
# cp config-dist.php config.php
Edit this config.php file to your own needs.
Now we configured the parameters we can start to install the services:
# mkdir -p /etc/default /usr/local/bin
# cp /usr/local/src/playSMS/daemon/linux/etc/playsms /etc/default/
# cp /usr/local/src/playSMS/daemon/linux/bin/* /usr/local/bin/
# vim /etc/default/playsms # edit the paths to your environment ones
I've used rc.local to start the service at boot:
# vim /etc/rc.d/rc.local
and put /usr/local/bin/playsmsd_start at the end of that file
Next I configured 2 new aliases in my ~/.bashrc to easily start and stop the service:
alias playsms-start='/usr/local/bin/playsmsd_start'
alias playsms-stop='/usr/local/bin/playsmsd_stop'
By re-logging in you can start the service by:
# playsms-start
And check if the necessary services are started:
# ps aux | grep playsms
root 7735 0.0 0.0 103236 868 pts/4 S+ 15:52 0:00 grep playsms
root 21845 0.0 0.0 106312 1660 pts/4 S 12:25 0:06 /bin/bash ./playsmsd /var/www/html/playsms
root 21847 0.0 0.0 106184 1536 pts/4 S 12:25 0:05 /bin/bash ./sendsmsd /var/www/html/playsms
Finally you can browse http://<your web server IP>/playsms/ and login using
username: admin
password: admin
Where you need to configure kannel in the menu: Gateway > Manage Kannel > kannel (Inactive) (click here to activate) and
8/18/2014 The Inuits | Inuits
http://inuits.eu/blog/sms-server-using-centos-kannel-and-playsms 7/7
adopt the parameters to the ones you configured in kannel.conf
After filling in your preferences you should be able to send and receive messages through this nifty web console.
(TIP: Using twice the same keyword for a quiz resulted in the fact that only this word is needed to send to the sms server to
start the interactivity)
Have fun with it!
Source:
https://visibilityspots.com/sms-server.html

You might also like