* Front page
  * Overview
  * Status
  * News
     Old News
  * Documentation
     User guide
     Arch Document
     Related links
  * Compatibility
  * License
  * Download
  * Source Code
  * Mailing Lists
  * Authors
  * Reporting Bugs


Making a donation:


Kannel: Frequently Asked Questions

This is the Frequently Asked Questions (FAQ) list for Kannel. It is intended to provide answers to the questions most often received by the Kannel gateway team (which can be reached at devel@kannel.org).

This FAQ generally assumes that you are using the current gateway sources. If you are having problems and are not running the latest sources, then upgrading is often the answer to your problems.

For questions regarding WAP and WML take also a look at: The Wireless FAQ


Section 1. General

Section 2. Installation

Section 3. Support

Section 4. Technical

Section 5. Development

Section 1. General

1.1 What is Kannel?

Kannel is an open source project to make a WAP gateway. Kannel also works as a SMS gateway.

1.2 Why should I use Kannel instead of a commercial WAP gateway?

You can fix problems yourself, without having to wait for the vendor.

You can easily make special customizations that are specific to your system, which may not even be possible to implement without the source code.

The price is right :-) Do you really want to pay thousands of dollars of a WAP gateway?

Better security than commercial gateways. If there is a security hazard it can be patched in a day or two, sometimes it could only take a few hours until the problem is fixed.

Since the code is open source there are no hidden security hazards or other inconveniences.

1.3 Why is Kannel written in C and not in Java?

The Kannel team does not have a strong expertise in Java, so re-implementing Kannel in Java would require us to spend weeks learning the language well. The re-implementation work itself would also take some months. There is no point in doing this.

1.4 Why the FreeBSD-style license instead of GPL?

Kannel is under the FreeBSD-style license because we want to limit the use of Kannel as little as possible.

Section 2. Installation

2.1 Where can I find the latest source code?

You can always get the newest source code on the download page

2.2 Is the windows zip file version of the gateway a source that can be compiled and run on Windows NT or Windows 9x?

Yes. You can compile it using Cygwin tools just like you do on your unix system.

2.3 How can I access the CVS?

You can look at the current development version of the sources directly from our version control system. We use CVS, so you need to install that first. (See for example ftp://ftp.gnu.org/gnu/cvs/ for a source distribution, or your Linux distribution for ready-to-install binaries.)

1.Log in using the following command (just press Enter when it asks for a password):
cvs -d:pserver:anonymous@cvs.kannel.org:/home/cvs login

2.Check out the current version of the Kannel gateway:
cvs -d:pserver:anonymous@cvs.kannel.org:/home/cvs co gateway

3.Later, when you want to check whether there have been changes, do the following:
cd gateway
cvs up -d

2.4 How do I unpack and compile the gateway?

These instructions work with Linux systems, but should be generic enough for other Unix-like systems:

gunzip < gateway-VERSION.tar.gz | tar xvf -
cd gateway-VERSION

(Replace `VERSION' with the version number of the gateway you downloaded.)

2.5 How do I install docbook?

For more information on installing DocBook see the README.docbook file in the Kannel distribution.

2.6 What libxml version should I use?

Please use libxml version 2.2.5 or newer. There is a bug in libxml 1.8.6 that makes the last character in the wml content to disappear. This means that the last tag (usually </wml>) will not be closed properly ( </wml ) and cause an error the in the wml compiler. In version 2.2.3 and 2.2.4, there's a bug that causes problems with character encoding in attributes. We recommend you use libxml2, version 2.2.5 or newer, with the current stable and development version of Kannel. The current CVS version of Kannel requires libxml2 (version 2.2.0 or newer).
If you are installing it from your distribution's packages, you'll need libxml2-dev in addition to run-time libxml2 package libraries.

2.7 How do I install libxml on Sun Solaris?

First up, pre-requisites:
A working compiler tool-chain ie make, gcc and binutils are required for most of kannel at this time. You will also need libz for various bits of kannel so you may wish to get this now, if you do not already have it. A package can be obtained from www.sunfreeware.com.

the commands from then on are:
gzip -d libxml-VERSION.tar.gz
tar xvf libxml-VERSION.tar
cd libxml-VERSION
make install
(the install should be as root, the rest should, ideally not be.)

(Replace `VERSION' with the version number of the libxml you downloaded.)

2.8 Why does make report that libgw.a etc. are missing under Sun Solaris?

On each occasion that this has come up on the devel mailing list, the problem is that Sun's make has been used rather than GNU make. I would recommend that you get the latest version from ftp.gnu.org or your local mirror. If you want to check which make you are using, try the command "which make". if the response is "/usr/xpg4/bin/make" or "/usr/ccs/bin/make" then you are using Sun's make. If the response is "/usr/local/bin/make" or "/opt/sfw/bin/make" then you are probably using GNU make. GNU make responds correctly to "make --version", Sun's make reports that it is ignoring DistributedMake options.

Section 3. Support

3.1 What features does Kannel support

A list of what features Kannel supports can be found at http://www.kannel.org/status.shtml

3.2 Do you have a Windows version of the gateway?

There are people who are working to make Kannel run in Win32. Please check download page and join the development e-mail list to discuss this matter further.

3.3 Any plans for a FreeBSD port?

We've had patches for FreeBSD, but since we don't use FreeBSD ourselves, we're likely to cause new problems all the time. What we need is (since our admins haven't time for yet another architecture in house) someone who keeps the gateway portable to FreeBSD, by sending us patches (or direct CVS commits) and calls us names whenever we repeat our mistakes.

3.4 What SMSC protocols does the SMS part of the gateway support?

CIMD 1.3, CIMD 2.0, SMPP 3.4, UCP/EMI 4.0, SEMA SMS2000 OIS protocol for SMS centers over Radiopad and X.25 and several modems and mobile phones through AT protocol

Section 4. Technical

4.1 How would I send multiple messages randomly from the fakesmsc?

You can send multiple messages with e.g. the following command:

./fakesmsc 10000 2 50 '123 456 nop' '115 566 nop' '334 887 nop'

The messages will be sent in random order.
nop means no operation and can be substituted with an URL.

With latest version of fakesmsc, the syntax is:

./fakesmsc -p 10000 -i 2 -m 50 '123 456 nop' '115 566 nop' '334 887 nop'

4.2 Is the configuration such that there is one port on the smsgateway per SMSC? If so, I would have to initiate multiple fakesmsc's to simulate multiple SMSC connections?

Yes, the smsgateway listens to a specific port for each smsc. To run multiple fakesmsc's just start i.e. four terminals and run fakesmsc's in each of them. Then run the bearerbox and smsbox in different terminals. More info how to configure the bearerbox and smsbox can be found from the userguide under the 'SMS Centers' section.

1. Unpack the distribution .tar.gz.
2. Compile the gateway.
3. Configure the core group.
4. Configure the smsc group.
5. Test multiple SMS centers:

terminal 1: ./fakesmsc 10000 0.01 1000 '123 456 nop'
terminal 2: ./fakesmsc 10001 0.01 1000 '123 456 nop'
terminal 3: ./fakesmsc 10002 0.01 1000 '123 456 nop'
terminal 4: ./fakesmsc 10003 0.01 1000 '123 456 nop'
terminal 5: ./bearerbox kannel.conf
terminal 6: ./smsbox kannel.conf

This latest version of fakesmsc, you must use format described above.

4.3 What is a CSDR (CSD Router) and where can I get one?

CSD=Circuit Switched Data, is a protocol that the mobile phone uses when you make a data call. The CSD router is the hardware that answers to the incoming data calls and then transmits the UDP packets sent by the WAP phone forward to the gateway. In other words the CSD router can be a normal analog modem, ISDN terminal or an array of these (like a modem pool).The UPD packets are picked up by a UDP thread of the bearerbox in the gateway.

4.4 When I run configure it reports that it doesn't find the fig2dev program?

The fig2dev program is included in a RPM package called transfig. You can find it from:


If you don't want to build the documentation then run configure with the "--disable-docs" option.

4.5 Why does configure search for the gnome_xml parser?

The WML compiler in Kannel uses the gnome_xml parser to validate the wml content. You have to install both the normal and the development libxml package. You can download the libxml packages from: ftp://rpmfind.net/pub/libxml/ or install it with apt-get install libxml2-dev libxml2 in Debian. See Kannel requirements page for information on what libxml version to use.

4.6 How do I configure the Nokia WAP SDK v2.x so I can use Kannel with it?

Because Kannel doesn't support connectionless mode yet you have to use the connection-oriented mode. You can configure the Nokia WAP SDK (v2.x) to use connection-oriented mode, but you can't do it from the SDK's menus. You have configure it in the emulator phone. Like this:

Press: Menu->NaviRoller->Settings->Select Default->NaviRoller->Edit

Homepage: (Any wml page)
Connection type: Continuous (This is the connection oriented mode)
Connection security: Off
Bearer: Data
Dial-up number: 091111111 (You have to put any number here or else it wont work)
IP address: (IP where the gateway is running)
Authentication type: Normal
Data call type: Analog or ISDN (This has no effect)
Data call speed: 14400
User name: (leave blank)
Password: (leave blank)

The settings will be saved so you don't have to do this configuration every time you start the SDK. Even when you have configured the Nokia SDK to use connection oriented mode the emulator says: Server started, listening on port 9200. But this is not true (a little bug in the emulator). It will listen to the port 9201.

4.7 How do I configure the Nokia WAP Toolkit 1.2 or 1.3b so I can use Kannel with it?

From the Toolkit's menus choose:
Toolkit->Preferences->Communication->Use WAP Gateway->Gateway Address.
Click Use Connection oriented mode (9201).
The Gateway Address should be the IP where the bearerbox is running.

4.8 What standard WAP protocol ports will Kannel listen to?

Kannel supports connection oriented mode and connectionless mode which means it will only listen to the ports 9200 and 9201. When new features from the protocol are added that uses other ports Kannel will of course use the standard ports for this.

The standard ports that the gateway will listen to are:

WAP WTA secure connection-less session service 2805
Protocol: WSP/WTLS/Datagram

WAP connectionless session service 9200
Protocol: WSP/Datagram

WAP session service 9201
Protocol: WSP/WTP/Datagram

WAP secure connectionless session service 9202
Protocol: WSP/WTLS/Datagram

WAP secure session service 9203
Protocol: WSP/WTP/WTLS/Datagram

WAP vCard 9204
Protocol: vCard/Datagram

WAP vCal 9205
Protocol: vCalendar/Datagram

WAP vCard Secure 9206
Protocol: vCard/WTLS/Datagram

WAP vCal Secure 9207
Protocol: vCalendar/WTLS/Datagram

4.9 I want to use Kannel for sending and recieving SMS messages via my mobile phone.

To be able to do this you have to use a GSM phone as an virtual SMSC. See the compatibility page for a list of what phones are supported as virtual SMSC's.

4.10 What are EMI, CIMD, SMPP and SEMA?

EMI, CIMD, SMPP and SEMA etc. are protocols used by the SMS Centers. These protocols define how SMS messages are sent and retrieved from the SMS centers. This means that Kannel, which also works as an SMS gateway, must support these protocols. Also when using WAP over SMS these protocols are used.

4.11 Why won't my WML pages compile?

There can be several reasons, which can be distinguished by looking at the wapbox log-file.

Another common failure, for some WML pages, is seen when the wapbox log-file read something like "WML compiler: Parsing failed, no parsed document." Here, the libxml parser failed to understand the WML page, for some reason. Either the page is really malformed, or libxml has a problem.

use 'xml-config --version' or 'rpm -q libxml', 'rpm -q libxml2', 'rpm -q libxml-devel' or 'rpm -q libxml2-devel' to find out whether libxml is installed on your system at all, and to see which version it is at.

4.12 What is the TEST_WML variable about?

You are using an old Kannel version, you don't have to set a TEST_WML variable anymore. Please upgrade to the latest Kannel version.

4.13 My log file time is off by 2h?

Kannel log files are in UTC, not local time, to reduce problems when, say, daylight savings time changes (twice per year) and when running large installations with some machines or boxes in different time zones.

4.14 Should Kannel be run as root?

Kannel can run as any user. It mostly cares only about the permissions of its log files.

4.15 What is the http-port (http-admin-port) configuration option about?

The http-port (now renamed as http-admin-port) is, as documentation/userguide tells, the port where Kannel listens for http-administration commands. So it is not linked to your Apache/whatever httpd, it simply uses the same protocol (HTTP).

And as Kannel is not run as a 'root' program, this port number must be over 1024. Default is 13000, after which, for example, the status of Kannel can be checked this way:

lynx -dump "http://localhost:13000/cgi-bin/status"

4.16 Make fails after CVS up -d?

There might be several reasons for this but here's one possibility:

<<<<<<< Makefile.in
CFLAGS=-D_REENTRANT=1 -DHAVE_LIBXML -g -O2 -I. -Igw -Igwlib -Iwmlscript
CFLAGS=-D_REENTRANT=1 -g -O2 -I. -Igw -Igwlib -Iwmlscript -Iutils
>>>>>>> 1.28

Those markings mean that you have ran into CVS conflict. It happens when same line has been changed in both versions, in the one on your computer and the one in CVS repository. In this case, the conflicting line is the one beginning with CFLAGS. The CVS adds the markings that tell about conflict and both versions of the modified lines.

Because it's impossible automatically tell which one of those two CFLAGS lines is the correct one, you now have to edit them by hand. Combine changes is both versions, remove conflict marking lines and try again.

Another reason might be if you e.g. get the following message...

make *** No rule to make target 'gw/csdr.h' needed by 'gw/bearerbox.o'

...then run "make depend".

4.17 What type of WAP content does Kannel accept?

Here are the most common WAP content types:
Plain WML documents

Wireless Bitmap Images

Compiled WML documents


Compiled WML Scripts

If the wml content is already in binary format (wmlc or wmlsc) then the content will be sent directly to the WAP device. In this case there is no need for Kannel to make any conversion from text to binary content.

4.18 Why won't my WAP phone connect to my ISDN terminal?

The WAP phones (at least Nokia 7110) uses the V.110 protocol to communicate. Check that your ISDN terminal supports this protocol.

4.19 Why do I get the following message "ERROR: You need to rename `csdr' to `wdp-udp'. Sorry."?

If you get this message you are running an old version of Kannel, please update to a newer version Kannel.

4.20 WARNING: WSP: Unsupported content type 'text/html'

When you access a "web page" using a PC based browser, the "web server" tells your PC browser what kind of document it should expect. This is done by using something called MIME-types. The common MIME type for a plain HTML document is "text/html". However, for a WAP micro browser, which cannot read HTML, the MIME type has to be different.

The MIME types for serving WML contents are:

Document type             MIME type                       Typical extension
Plain WML documents       text/vnd.wap.wml                .wml
Wireless Bitmap Images    image/vnd.wap.wbmp              .wbmp
Compiled WML documents    application/vnd.wap.wmlc        .wmlc
WMLScripts                text/vnd.wap.wmlscript          .wmls
Compiled WML Scripts      application/vnd.wap.wmlscriptc  .wmlsc

To add the above MIME types to the Apache HTTP server, here's what you do:

  • Edit the srm.conf file (usually in /etc/httpd/conf)
  • Locate the AddType section, and add the following section to the file:
  • # MIME Types for WAP
    AddType text/vnd.wap.wml .wml
    AddType image/vnd.wap.wbmp .wbmp
    AddType application/vnd.wap.wmlc .wmlc
    AddType text/vnd.wap.wmlscript .wmls
    AddType application/vnd.wap.wmlscriptc .wmlsc
  • Save the file and restart the Apache HTTPd.
  • If you do not have control over your Apache server, for instance if you are with an ISP, it is also possible to add a file called .htaccess to each directory where you have placed WML files. When the server reads files from this directory, it will serve them according to the rules in the .htaccess file.

    A typical .htaccess file will look something like this:

    DirectoryIndex  index.wml
    addtype text/vnd.wap.wml wml
    addtype application/vnd.wap.wmlc wmlc
    addtype text/vnd.wap.wmlscript wmls
    addtype application/vnd.wap.wmlscriptc wmlsc
    addtype image/vnd.wap.wbmp wbmp

    Note the first line which tells the server that the index file for this directory is called index.wml. Also note that the server must be configured to read these files. In some cases the server is configured to ignore these files for security reasons. Check with your ISP.

    To add the MIME types to a Microsoft IIS server, you need to do the following:

  • On the server console, open the Management console
  • From here you can define the MIME types to either be valid for the entire server or to be valid for separate directories.
  • To add a MIME type to a directory: Right click on the directory in which you want to add the MIME type.
  • Select the HTTP headers tag.
  • Click the File types button at the lower right.
  • Click New type and supply the extension and the content type as listed above.
  • To add a mime type to an entire server; Right click on the server.
  • Click the File types button and follow the instructions above.
  • Click New type and supply the extension and the content type as listed above.
  • For other servers, see the server documentation.

    Section 5. Development

    5.1 How can I participate in the project?

    Maybe the best way to participate is to develop the part of the gateway which is important for you and your business purposes. If you need the gateway (SMS or WAP) to support some specific feature or protocol or something, then you develop this part. And then when you have made some smaller or bigger improvements you send the updates to us. We will then include these patches to the gateway's distribution packet.

    If you are interested in some other sort of cooperation please contact feedback@kannel.org

    5.2 How to send modifications of Kannel?

    If you want to send us modifications, please send the output of cvs diff -u (-u makes cvs use unified diffs, instead of plain diffs; unified diffs are easier to read, since they provide more context and can be applied to a later version of the same file). Please send the diffs to feedback@kannel.org

    5.3 Where should I send bug reports?

    Please, send bug reports to bugs@kannel.org or feedback@kannel.org (for things that need to be private).

    Please DO NOT send bug reports or questions directly to someone because then,

    1. you prevent anyone else from helping you,

    2. you make sure you'll get help slowly (since the person you send the report to might have lots of things to do and might be on a vacation, for example),

    3. you make Kannel development go more slowly (since this person have to spend time to go through your bug report and investigate it to see who's responsibility the bug is),

    4. and worst of all, you prevent anyone else from benefiting from the reply.

    Thanks to for supporting us.

    Copyright © 2001-2020 The Kannel Group. All rights reserved.