# OMA LWM2M

OMA Lightweight M2M (LwM2M) is a protocol from the Open Mobile Alliance for machine to machine (M2M) or Internet of things (IoT) device management and service enablement. The LwM2M standard defines the application layer communication protocol between an LwM2M Server and an LwM2M Client which is located in an IoT device. It offers an approach for managing IoT devices and allows devices and systems from different vendors to co-exist in an IoT ecosystem. LwM2M was originally built on Constrained Application Protocol (CoAP) but later LwM2M versions also support additional transfer protocols.
LwM2M's device management capabilities include remote provisioning of security credentials, firmware updates, connectivity management (e.g. for cellular and WiFi), remote device diagnostics and troubleshooting.
LwM2M's service enablement capabilities include sensor and meter readings, remote actuation and configuration of host devices.
In combination with the LwM2M protocol, the LwM2M data model LwM2M Objects supports the various LwM2M use cases. The data model can be extended and is able to support applications for various kinds of industries.

## Versions

In 2018, the IPSO Alliance merged with the Open Mobile Alliance (OMA) to form OMASpecWorks. OMASpecWorks is responsible for the maintenance and further development of LwM2M. So far, the following versions of LwM2M have been created:

### OMA LwM2M 1.0

Lightweight M2M 1.0 was published in February 2017. It introduced the following features below for the initial release:
* Simple object based resource model
* Operations of creation/retrieval/update/deletion/configuration of resources
* Resource observation/notification
* TLV/JSON/Plain Text/Opaque data formats
* UDP and SMS transport
* DTLS based security
* Queue mode e.g. for sleeping devices
* Multiple LwM2M Server support
* Core LwM2M Objects: LwM2M Security, LwM2M Server, Access Control, Device, Connectivity Monitoring, Firmware Update, Location, Connectivity Statistics

### OMA LwM2M 1.1

Lightweight M2M 1.1 was published in June 2018. It introduced the following additional features:
* Enhancement of the LwM2M bootstrapping capabilities allowing for incremental upgrades
* Improved support for Public Key Infrastructure (PKI) deployments
* Introduction of enhanced registration sequence mechanisms by the LwM2M Client to LwM2M Server(s)
* Support for LwM2M over TCP/TLS
* Support for application layer security for LwM2M based on OSCORE
* Improved support of LwM2M over Low Power WANs, including 3GPP LTE-M and NB-IoT & LoRaWAN
* Extended LwM2M operations to enable Resource Instance level access
* Performance improvement for retrieving and updating Resources of multiple objects
* Support for JSON using SenML with CBOR serialization for compressed payload with highly efficient transmission
* Addition of new data types

### OMA LwM2M 1.2

Lightweight M2M 1.2 was published in November 2020. It introduces the following additional features:
* New transports for LwM2M; this allows LwM2M messaging to be conveyed over MQTT and over HTTP
* Optimizations for the bootstrapping interface; this reduces the amount of data and the number of messages transmitted during the bootstrapping exchange
* Optimizations for the registration interface; this reduces the amount of data transmitted during registration exchanges
* Optimizations for the information reporting interface; observation attributes may now be included in an Observe operation
* Support for LwM2M gateway functionality; this allows non-LwM2M IoT devices as well as LwM2M devices behind a gateway to be connected to the LwM2M ecosystem and to manage those devices remotely
* New, highly optimized encoding format based on CBOR called LwM2M CBOR
* Enhanced functionality for firmware updates
* Definition of new notification attributes (edge, confirmable notification, and maximum historical queue). Edge allows notifications to be triggered on rising and falling edges. Confirmable notifications allow the control of reliable transmissions of notifications. Maximum historical queue allows the control of time-series data usage.
* Updates to use the latest communication security protocols based on TLS and DTLS 1.3 (as well as the use of the Connection ID) and related configuration
* New Object for 5G-NR related device configuration