The Wakaama project is a proposed open source project under the Technology Top-level Project.
This proposal is in the Project Proposal Phase (as defined in the Eclipse Development Process) and is written to declare its intent and scope. We solicit additional participation and input from the Eclipse community. Please send all feedback to the Eclipse Proposals Forum.
The Open Mobile Alliance (OMA) is a standards body which develops open standards for the mobile phone industry like Multimedia Messaging Service (MMS), OMA Data Synchronization (OMA-DS) and OMA Device Management (OMA-DM). In February 2012, OMA-DM reached 1.4 Billion deployment in commercial devices.
Analysis Mason forecasts that the number of M2M connected devices will grow to 2.1 billion devices in 2020. Machina Research projects that the number of M2M connections will grow to 20 billion in 2020. There will be more M2M devices shipped each year than PCs, tablets, cell phones, set-top-boxes and gaming platforms put together. This is why the OMA is now looking at M2M and the Internet of Things. At the end of 2013, OMA released the specifications for Lightweight M2M (LWM2M).
OMA Lightweight M2M is a protocol for device and service management. The main purpose of this technology is to address service and management needs for constrained M2M devices, over a number of transports and bearers. The crucial aspects in this work are:
LWM2M defines three logical components:
And four interfaces between these logical components:
The LWM2M has the protocol stack defined as below:
Like in OMA-DM, in LWM2M the LWM2M Server manipulates resources on LWM2M Clients using commands like Read, Write, Execute, Create or Delete. The LWM2M Client may have any number of Resources, each of which belongs to an Object. An Object defines a grouping of Resources, for example the Firmware Object contains all the Resources used for firmware update purposes. The LWM2M enabler defines standard Objects and Resources and other Objects may be added to enable a certain M2M Services.
The Wakaama project covers the LWM2M Protocol, CoAP, and DTLS layers of the LWM2M protocol stack for all three logical components: LWM2M Client, LWM2M Server and LWM2M Bootstrap Server. An application using Wakaama can fill any LWM2M roles or all of them at once.
The CoAP and DTLS layers may be provided by external components.
Regarding LWM2M Objects, Wakaama only covers the objects required to have a functional LWM2M stack: LWM2M Security Object, LWM2M Server Object and optionally Access Control Object. Other LWM2M Objects are added as plugins to Wakaama by the application.
Wakaama is not a library but files to be built with
an application. It is written in C and designed to be portable on POSIX
Two compilation switches are used: LWM2M_CLIENT_MODE and LWM2M_SERVER_MODE. Defining LWM2M_CLIENT_MODE enables the LWM2M Client interfaces. Defining LWM2M_SERVER_MODE enables the LWM2M Server interfaces. Both can be defined at the same time.
Wakaama is mono-threaded. An application can call a HandlePacket API to feed Wakaama with received LWM2M packets and a Step API to perform any pending LWM2M operations.
Wakaama provides APIs for a server application to send commands to registered LWM2M Clients. On client applications, Wakaama checks received commands for syntax and access rights and then dispatches them to the relevant objects.
Providing an OMA Lightweight M2M protocol implementation to the Eclipse
community will help developers to write interoperable M2M services
without having to deal with the complexity of the standard or having a
deep knowledge of it.
Being hosted by Eclipse, this project will welcome further contributions more easily, help the interoperability and thus reduce the fragmentation, to the best benefit of the technology and the industry.
Wakaama initial implementation is currently available on GitHub.
The code is functional and implements the Device Discovery and
Registration interface, the Device Management and Service Enablement
interface and the Information Reporting interface.
The missing features are the Bootstrap interface, the DTLS layer and the Access Control Object.
Wakaama comes with two test applications: a LWM2M Client and a LWM2M Server. Both features a basic command line interface.
The LWM2M protocol engine copyright is held by Intel Corporation with
some contributions by Sierra Wireless.
Wakaama includes files from the Erbium CoAP Engine for Contiki which is copyrighted by the Institute for Pervasive Computing, ETH Zurich and released under a BSD 3-clause license.
Wakaama is currently released under the BSD 3-clause license.
The proposed licensing for this project will rely on dual license, Eclipse Distribution License and Eclipse Public License.
The following individuals are proposed as initial committers to the project:
We welcome additional committers and contributions.
The following Architecture Council members will mentor this project:
The following individuals, organisations, companies and projects have expressed interest in this project:
Back to the top