Lwm2m Client for Java
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


ARTIK Cloud Java SDK for LWM2M

This SDK helps you connect your Device to ARTIK Cloud using LWM2M.



You can generate the SDK libraries using one of the following ways.

If using Maven command line,

  • run "mvn clean install -DskipTests" in the root directory of the repository to install to your local Maven repository.

If using Eclipse,

  • import the SDK library project as "Existing Maven Projects".
  • right click the project, and choose "Run As" then "Maven install"



Peek into examples for examples about how to use the SDK.

To run the example TcpClient class:

mvn compile exec:java -Dexec.mainClass="cloud.artik.lwm2m.examples.TcpClient"


Before using the LWM2M SDK to managing your devices, you need to first enable device management on your Device Type. https://developer.artik.cloud/documentation/advanced-features/device-management.html.

After a device has been created in Artik Cloud, you need to create the device token and use the deviceId and deviceToken to instantiate the LWM2M Client as below:

        Device device = new Device("<Manufacturer>", "<ModelNumber>", "<SerialNumber>", SupportedBinding.UDP) {
            public ExecuteResponse executeReboot() {
                System.out.println("executeReboot called");
                return ExecuteResponse.success();
            public ExecuteResponse executeFactoryReset() {
                System.out.println("executeFactoryReset called");
                return ExecuteResponse.success();
            protected ExecuteResponse executeResetErrorCode() {
                System.out.println("executeResetErrorCode called");
                return super.executeResetErrorCode();
        ArtikCloudClient client = new ArtikCloudClient("<DeviceID>", "<DeviceToken>", device);

Finally, you need to start the registration process.

        // Register
        // Sleep for 10 seconds for the registration to complete
        // De-Register
        // Finish

Client certificates

Secure devices registered with X.509 certificates in ARTIK Cloud must use the same certificate to connect via LwM2M.

A KeyConfig object must be passed to the client constructor containing the following:

  • Client certificate
  • Client private key
  • Server root certificate

In the example code, the keys are stored in PEM format. Java KeyStore (JKS) format can also be used.

public class TcpCertificateClient extends BaseCertificateClient {

    protected String clientCertLocation() {
        return "client.pem";
    protected String privateKeyLocation() {
        return "private.pem";
    protected String serverCertLocation() {
        return "coaps-api.artik.cloud.pem";
    public void run() throws IOException {
        final KeyConfig keyConfig = new KeyConfig(readClientCert(), readPrivateKey(), readServerCert());
        final ArtikCloudClient client = new ArtikCloudClient(deviceId, deviceToken, device, keyConfig);

Firmware Updates

To support FirmwareUpdates, you need to subclass FirmwareUpdate to provide concrete implementation of the downloadPackage and updateFirmware execute methods:

        // FirmwareUpdate
        FirmwareUpdate dummyUpdater = new FirmwareUpdate() {
            public FirmwareUpdateResult downloadPackage(String packageUri) {
                System.out.println("download package: " + packageUri);
                this.setPkgName("<PKG_NAME>", true);
                this.setPkgVersion("<PKG_VERSION>", true);
                return FirmwareUpdateResult.SUCCESS;
            public FirmwareUpdateResult executeUpdateFirmware() {
                System.out.println("update firmware");
                return FirmwareUpdateResult.SUCCESS;

More about ARTIK Cloud

If you are not familiar with ARTIK Cloud, we have extensive documentation at https://developer.artik.cloud/documentation

The full ARTIK Cloud API specification can be found at https://developer.artik.cloud/documentation/api-reference/

Check out advanced sample applications at https://developer.artik.cloud/documentation/samples/

To create and manage your services and devices on ARTIK Cloud, create an account at https://developer.artik.cloud

Also see the ARTIK Cloud blog for tutorials, updates, and more: http://artik.io/blog/cloud

License and Copyright

Licensed under the Apache License. See LICENSE. Copyright (c) 2016 Samsung Electronics Co., Ltd.