OMA Lightweight M2M C implementation designed to be portable on POSIX compliant systems

What is LWM2M?

OMA Lightweight M2M is a protocol from the Open Mobile Alliance for M2M or IoT device management.

  • On top of CoAP
  • UDP and SMS transport layer support
  • Simple Object based resource model
  • Basic M2M functionalities: LWM2M Server, Access Control, Device, Connectivity, Firmware Update, Location, Connectivity Statistics
  • DTLS based security


  • A problem? A missing feature? An idea? Contact the community.
  • What is Eclipse Wakaama?

    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 compliant systems.

    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.

    Main companies supporting this project over the last three months.

    Getting started

    Follow the examples

    Get the code by cloning the repository. Wakaama provides sample clients and server in its 'examples' directory. To try them just launch 'cmake' in any of its subdirectories then 'make'. You can find detailled instructions in the README at the root of the repository. You can try the wakaama sample client with the [Leshan Sandbox] by running:

    "./lwm2mclient -4 -h"

    Learn more

    Eclipse Leshan

    Leshan provides libraries that help people develop their own Lightweight M2M server and client

    Leshan & Wakaama in action