Cumulocity agent

Download and install the toolchain on your Linux x86 PC

To create the dierectoy and install the toolchain you must be “root”.

#For PowerPC:
mkdir /opt/toolchain
tar -xvf toolchain-ppc-4.8-linaro-x86_64.tar.bz2 -C /opt/toolchain
export PATH=$PATH:/opt/toolchain/bin

Donwload curl and build it

Donwload curl: →

tar –xvf curl-7.52.1.tar.gz
cd curl-7.52.1
export PATH=$PATH:/opt/toolchain/bin
export STAGING_DIR=/opt/toolchain
export CPPFLAGS="-I/opt/toolchain/include"
export AR=powerpc-openwrt-linux-ar
export AS=powerpc-openwrt-linux-as
export LD=powerpc-openwrt-linux-ld
export RANLIB=powerpc-openwrt-linux-ranlib
export CC=powerpc-openwrt-linux-gcc
export NM=powerpc-openwrt-linux-nm
./configure --target=powerpc-openwrt-linux --host=powerpc-openwrt-linux --disable-nls   --disable-debug --disable-ares --enable-shared --enable-static --disable-manual --without-ca-bundle --without-nss --without-libmetalink --without-librtmp --enable-ipv6 --without-axtls --without-cyassl
sudo make install

Download the Cumulocity C/C++ SDK

Cumulocity C++ Library is an asynchronous, event-driven networking library to ease your development for connecting to the Cumulocity cloud. The library uses Cumulocity's self invented SmartREST protocol for M2M communication which targets any device that are capable of running embedded Linux.

More information

Link to download the latest version

cd m2m-cumulocity-sdk-c-d627781f3afa

Create an file, and define specific macros CPPFLAGS, CXXFLAGS and LDFLAGS, LDLIBS and CXX for cross-compiling.

CPPFLAGS:= -I/usr/local/include
CXXFLAGS:=-Wall -pedantic -Wextra
LDFLAGS:= -L/usr/local/lib
LDLIBS:=-lcurl –lrt

If you have defined now you have to create the makefile.

cp Makefile.template Makefile

Add the NetModule Cumulocity agent to the Cumulocity SDK

Download the NetModule Cumulocity agent:netmodulecumulocityagent.tar.gz

tar -xvzf netmodulecumulocityagent.tar.gz
cd netmoduleCumulocityAgent

Move the content of src and include folders to the src and include folders of the SDK.

cp src/* m2m-cumulocity-sdk-c-d627781f3afa/src/
cp include/* m2m-cumulocity-sdk-c-d627781f3afa/include/

Edit the configfile (c8yAgent.conf) and add your cumulocity domain and your credentials path. Move the file to the router.

scp c8yAgent.conf <user>@<host>:/etc/c8yAgent.conf

You have to take some changes to the cumulocity SDK

We have to do this, because the toolchain don't support the function to_string(). include myString.h in the follow files:

  • src/
  • src/
  • src/
  • src/
  • src/
  • src/

We need also to put this line #define CLOCK_MONOTONIC_COARSE 6 in the follow files:

  • src/
  • src/watchdog/
  • include/srtimer.h

And this line #define CLOCK_REALTIME_COARSE 5 in the follow file:

  • include/srqueue.h

Now we have to add two header files:

  • src/ —> #include <stdlib.h>
  • src/ —> #include <errno.h>

Build the agent

Now we can build the cumulocity SDK for NetModule Agent within the SDK directory.

export STAGING_DIR=/opt/toolchain
#If you want, you can delete all and rebuild again:
make clean

Now go to the src folder to build NetModule Agent.


If all this steps was successful, then we can move the files to the router. We need the src/main and the srtemplate.txt. With scp we can move it to the router.

scp main <user>@<host>:<directory>/main

No we can make a SSH connection to the router and start the agent.


Add device to Cumulocity

If the agent is runing then you can add your NetModule router to Cumulocity. For this you need the serial no of the Router. First go to the Device management and then go to Registration. Put the serial no of the router in the text field Device ID and klick Register device. Now you have to accept the router. If you go to All devices you can see the new device.