* 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: Overview

With hundreds of millions of mobile phones in use all over the world at the moment, the market for services targeted at mobile users is mindbogglingly immense. Even simple services find plenty of users, as long as they're useful or fun. Being able to get news, send e-mail or just be entertained wherever you are is extremely attractive to lots of people.

Kannel is an open source WAP gateway. It attempts to provide this essential part of the WAP infrastructure freely to everyone so that the market potential for WAP services, both from wireless operators and specialized service providers, will be realized as efficiently as possible.

Kannel also works as an SMS gateway for GSM networks. Almost all GSM phones can send and receive SMS messages, so this is a way to serve many more clients than just those using a new WAP phone.

Open Source is a way to formalize the principle of openness by placing the source code of a product under a Open Source compliant software license. The BSD-style license was chosen over other Open Source licenses by the merit of placing the least amount of limitations on what a third party is able to do with the source code. In practice this means that Kannel is going to be a fully-featured WAP implementation and compatible with a maximum amount of bearers with special emphasis on SMSC compatibility.

Kannel is a WAP and SMS gateway.

SMS, short message services, are widely used all over the world in huge amounts. The main use for Kannel is to link HTTP based services to various SMS centers using obscure protocols.

WAP, short for Wireless Application Protocol, is a collection of languages and tools and an infrastructure for implementing services for mobile phones. Traditionally such services have worked via normal phone calls or short textual messages (e.g., SMS messages in GSM networks). Neither are very efficient to use, nor very user friendly. WAP makes it possible to implement services similar to the World Wide Web.

Unlike marketers claim, WAP does not bring the existing content of the Internet directly to the phone. There are too many technical and other problems for this to ever work properly. The main problem is that Internet content is mainly in the form of HTML pages, and they are written in such a way as to require fast connections, fast processors, large memories, big screens, audio output, and may require fairly efficient input mechanisms. That's OK, since they hopefully work better for traditional computers and networks that way. However, portable phones have very slow processors, very little memory, abysmal and intermittent bandwidth, little screens and extremely awkward input mechanisms. Most existing HTML pages simply will not work on them.

WAP defines a completely new markup language, the Wireless Markup Language (WML), which is simpler and much more strictly defined than HTML. It also defines a scripting language, WMLScript, which all browsers are required to support. To make things even simpler for the phones, it even defines its own bitmap format (Wireless Bitmap, or WBMP).

HTTP is also too inefficient for wireless use. By using a semantically equivalent, but binary and compressed format it is possible to reduce the protocol overhead to a few bytes per request, instead of up to hundreds of bytes. Thus, WAP defines a new protocol stack to be used. However, to make things simpler also for the people actually implementing the services, WAP introduces a gateway between the phones and the servers providing content to the phones.

WAP gateway is between phone and content server.

The WAP gateway talks to the phone using the WAP protocol stack, and translates the requests it receives to normal HTTP. Thus, the content providers can use any HTTP servers, and can utilize existing know-how about HTTP service implementation and administration.

In addition to protocol translations, the gateway also compresses the WML pages into a more compact form, to save bandwidth on the air and to further reduce the phone's processing requirements. It also compiles WMLScript programs into a byte-code format.


Kannel is mainly being developed on Linux systems, and should be fairly easy to port to other Unix-like systems. However, we don't yet support other platforms, due to lack of time. Kannel requires the following software environment:

  • C compiler and development libraries and related tools.
  • The gnome-xml (a.k.a. libxml) library, version 2.2.0 or newer. We recommend that you use libxml version 2.2.5. If you are installing it from your distribution's packages, you'll need libxml2-dev in addition to run-time libxml2 package libraries.
    Note: there is a bug in libxml version 2.2.3 and 2.2.4 that causes problems with character encoding in attributes. This problem is fixed in 2.2.5. See http://xmlsoft.org/xml.html.
  • GNU Make.
  • POSIX threads (pthread.h).
  • GNU Bison 1.28 if you modify the WMLScript compiler.
  • DocBook markup language tools (jade, jadetex, DocBook style-sheets, etc; see README.docbook), if you want to format the documentation (pre-formatted versions are available).

Hardware requirements are fluffier. We haven't benchmarked Kannel yet, so there are no hard numbers, but a reasonably fast PC workstation (400 MHz Pentium II, 128 MB RAM) should serve several concurrent users without problems. The goal is to support hundreds of concurrent users on that kind of hardware.

Thanks to for supporting us.

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