Friendly LWM2M client
Friendly LWM2M client Documentation

Welcome to the Friendly LWM2M client documentation. Here you will find an overview of the project, build instructions, architecture details, usage examples, and code documentation.

Introduction to Friendly LWM2M client

Friendly LWM2M client (Wpp) is an advanced extension of the open-source Wakaama project. Wpp was created as a superstructure over Wakaama and its main value lies in its registry with implemented objects and their business logic. Wpp does not alter the behavior of the LwM2M and Wakaama projects, instead providing a robust framework for developing LwM2M client applications.

Wpp was developed as a cross-platform library that can be distributed in the form of source files or a static library with flexible configuration of the objects registry thanks to the developed set of utilities. Wpp contains no external dependencies except Wakaama and C++ STL. The C++17 (C++1z) standard is used.

Client Specifications

Licence: EPL 2.0 and BSD-3
LwM2M Version: 1.1
Supported LwM2M OMA Objects: LWM2M Security(v1.1), LwM2M Server(v1.1), Device(v1.2), LwM2M Access Control(v1.1), Connectivity Monitoring(v1.3), Firmware Update(v1.1)
Transport: UDP/DTLS
Data Formats: Plain Text, Opaque, CBOR, TLV, JSON, SenML JSON, SenML CBOR
Security: PSK, Raw Public Key, No-Sec mode
Supported platforms: Linux
Supported Interfaces & Features:

  • Bootstrap: Request, Finish, Discover, Read, Write, Delete
  • Registration: Register, Update, De-register
  • Device Management & Service Enablement: Read, Discover, Write, Write-Attributes, Execute, Create, Delete
  • Information reporting: Observe, Notify, Cancel Observation, Send Operation

Additional fetaures:

  • Utilities for generating the implementation of objects according to the description from the LwM2M Registry.
  • Implemented Access control
  • Implemented Firmware update
  • Implemented Conectivity monitoring
  • CoAP Block transfer

Memory consumption

When analyzing the measurement results, it should be noted that the measurements were conducted on WppExample, which includes not only the Wpp library but also user code that can significantly impact the size. For example, the tinydtls library is not part of Wpp, but it is used by WppExample to implement DTLS, and its size is about 46kB. This size may vary depending on the architecture's bitness, the functionality used, and the implementation of user code.

Memory usage
Mode Wpp logs Wakaama logs DTLS Bootstrap Data formats Objects RAM Flash
Minimal Off Off Off Off TLV Security(0), Server(1), Device(3) 8.1 kB 91 kB
Average ERR Off On Off TLV, SenML CBOR Security(0), Server(1), Device(3),Connectivity(4), Access(2), Audio Clip(3339), Firmware (5) 21.2 kB 181.5 kB
Full On On On On TLV, SenML CBOR, CBOR, SenML JSON, JSON Security(0), Server(1), Device(3), Connectivity(4), Access(2), Audio Clip(3339), Firmware (5) 26 kB 255.7 kB