AVSystem integration

AVSystem is a software solution provider that provides a device management platform. This platform is based on the LwM2M protocol with nRF Connect SDK compatibility for Nordic Semiconductor’s cellular IoT products. It handles the entire process from onboarding till decommissioning of devices.

The AVSystem integration with nRF Connect SDK ensures secure and power efficient device management solutions using Nordic Semiconductor’s cellular devices. The integration of nRF Cloud Location Services with AVSystem enables the use of positioning services.

Partner overview

AVSystem provides the following features as a solution partner for Nordic Semiconductor’s cellular devices:

  • Optimal device provisioning and device monitoring mechanisms

  • OTA updates

  • Reliable device-to-cloud communication

  • Security

  • Remote diagnostics

  • Power saving

The use of LwM2M protocol ensures additional benefits such as optimization of resource usage and power saving in devices. It uses standardized LwM2M objects and allows the use of custom objects also.

Prerequisites

Before you start the nRF Connect SDK integration with AVSystem’s Coiote IoT Device Management, make sure that the following prerequisites are completed:

Solution architecture

As a prototyping solution, AVSystem supports a pre-integrated LwM2M Client stack on the nRF9160-based development kit, provides a free version of the Coiote device management platform, and acts as a bridge to nRF Cloud. This results in full LwM2M integration of nRF9160 with AVSystem Coiote IoT for data, device management, and nRF Cloud Location services.

AVSystem integration

AVSystem integration

Following are the components that are required for the integration with nRF Connect SDK:

Note

Instead of Zephyr stack, you can also use AVSystem’s LwM2M Client SDK Anjay that can be ported to the nRF9160-based device. To use Anjay, follow the procedures described in the AVSystem documentation for nRF9160 integration and Thingy:91 integration.

  • Coiote IoT Device Management - Component that accepts communication from devices, performs management functionalities, and acts as a communication hub for third-party cloud solutions.

  • nRF Cloud - Optional component if location services need to be used.

Integration overview

To integrate AVSystem into nRF Connect SDK, after completing the prerequisites, complete the following steps:

  1. Adding your device to Coiote Device Management server.

  2. Configuring your application to use AVSystem’s Coiote Device Management platform.

  3. Optional integration of nRF Cloud with AVSystem for utilizing location services.

Adding your device to Coiote Device Management server

To add your device to AVSystem’s Coiote Device Management Server, complete the following steps:

  1. Open Coiote Device Management server.

  2. Click on Device inventory in the left menu in the UI.

  3. Click on Add new device.

  4. Click on Connect your LwM2M device directly via the management server.

  5. Enter the following data and click Add device:

    • Endpoint - urn:imei:your Device IMEI

    • Friendly Name - recognizable name

    • Security mode - psk (Pre-Shared Key)

    • Key - your key (for example, 000102030405060708090a0b0c0d0e0f)

    Also, make sure to select the Key in hexadecimal checkbox.

Configuring your application to use Coiote Device Management platform

For the device-server integration, you must select an appropriate sample or application that supports LwM2M-based interaction with AVSystem. It is then built and flashed onto the device with the appropriate configurations. See Applications and samples for a list of supported samples and applications. To integrate your device with AVSystem’s device management platform, complete the following steps.

  1. Connect the kit to the computer using a USB cable. The kit is assigned a COM port (Windows) or ttyACM device (Linux), which is visible in the Device Manager.

  2. Connect to the kit with a terminal emulator (for example, PuTTY). See How to connect with PuTTY for the required settings.

  3. Configure, build, and flash the supported sample or application using nRF Connect for VS Code.

    Note

    While building, make sure to select the appropriate overlay file for AVSystem integration. This can vary for each sample or application. For example, for nRF9160: LwM2M Client sample, you need to select the overlay file overlay-avsystem.conf as the Kconfig fragment while configuring the sample. Refer to the Configuration files section in the respective sample or application documentation for more information.

After flashing the sample, reboot your device for reconnection. From the terminal, you can see that the registration is complete. You can also check the status on the Coiote Device Management UI. On the Coiote Device Management UI, after adding your device, you can see a Device connected successfully message if the device was added successfully. Click Next, Finish and Go to device. You can see that the device is shown as registered under Registration status in Device Center.

nRF Cloud integration with AVSystem

You can optionally integrate nRF Cloud with AVSystem and make use of nRF Cloud Location services for device positioning. The advantage of this integration is that it removes the need to establish a separate DTLS session into nRF Cloud. See nRF Cloud integration with Coiote Device Management for more information on how the integration can be done.

The integration supports the following location services:

Cell-based location

You can use a supported sample to determine the cell-based location of the device if you have nRF Cloud integration with AVSystem. Both single-cell and multicell location services can be used. See Cell-based location for more information on the API usage.

After you flash the sample, the device starts searching for neighboring cell towers. After the completion of registration in Coiote Device Management server, the sample passes the information onto Coiote Device Management server which then forwards it as a cell-location query to nRF Cloud. The result of the query is passed back to the Coiote Device Management server, which displays the device location on a map.

Cell location assistance

Cell location assistance

For cell-based location assistance, each supported sample might use a different overlay file. See the sample or application documentation for more information.

After flashing the sample, the cell-based location of the device will be visible in Coiote Device Management as explained in Viewing device location in Coiote Device Management.

A-GPS location assistance

A-GPS location assistance has the advantages of faster Time to First Fix (TTFF) and lesser power consumption compared to GNSS usage without assistance. See A-GPS assistance for more information on the API usage.

After you flash the supported sample or application on to your device, the device requests A-GPS data. Coiote Device Management server obtains the data from nRF Cloud and sends the A-GPS data blob to the GNSS module of the device. This data is used in combination with the data broadcast by the GNSS satellites to acquire a fix.

A-GPS location assistance

A-GPS location assistance

For cell-based location assistance, each supported sample might use a different overlay file. See the sample or application documentation for more information.

After building the sample, complete the steps in Setting observations for an object to enable observations for the Location object.

After you flash the sample, Location object under Data model in the Coiote Device Management UI will be updated with values after the fix is obtained.

Applications and samples

The following application uses the AVSystem integration in nRF Connect SDK:

The following samples use the AVSystem integration in nRF Connect SDK:

All these samples offer LwM2M support and can be used to fetch location assistance data from nRF Cloud by proxying it through AVSystem’s Coiote LwM2M server.

Library support

The following nRF Connect SDK library supports the AVSystem integration:

Dependencies

It uses the following nRF Connect SDK libraries:

It uses the following library from Zephyr: