(Nov 14th 2018) Sensor firmware hotfix 1.7.2 is out!
The new version contains a fix Movement and Connector detections that broke in v.1.7.0

Known issues
Please refer to for a list of known issues.


Movesense sensor is a programmable multi-purpose device comprising of accelerometer, gyroscope, magnetometer and thermometer together with optional heartrate/IBI (inter-beat interval) and intelligent gear ID APIs.

Movesense APIs follow well-known REST principle and can be used both internally by the sensor app or externally via the iOS/Android libraries. The API specification is based on Swagger 2.0 syntax.

You can order Movesense sensors and Movesense Developer Kit on our online shop.

Check also Movesense mobile library for developing own Android and iOS applications to interact with the Movesense sensor.


Movesense developer documentation is divided in several documents: this document, with build environment setup instructions and other important information. version history of Movesense releases. instructions on how to upgrade from earlier versions of the Movesense device library. list of frequently asked questions.
Movesense developer guides in movesense-docs repository on Bitbucket.

Movesense APIs

Resource Description
/Comm/Ble API for managing BLE.
/Component/Eeprom API for writing and reading the EEPROM memory/ies.
/Info API for accessing generic device information.
/Meas/Acc API enabling subscribing linear acceleration data (based on accelerometer).
/Meas/ECG API for the electrocardiography measurement.
/Meas/Gyro API enabling subscribing angular velocity data (based on gyroscope).
/Meas/HR API enabling subscribing heart rate data.
/Meas/Imu API for synchronous access to motion data (accelerometer, gyroscope, magnetometer)
/Meas/Magn API enabling subscribing magnetic field data (based on magnetometer).
/Meas/Temp API enabling reading or subscribing temperature data (based on thermometer).
/Mem/DataLogger Generic logger capable of logging max. 8 different resources.
/Mem/Logbook Generic Logbook from where the logged data can be read.
/Misc/Gear API to get the globally unique Movesense ID associated with the physical gear.
/System/Debug API for subscribing messages from device.
/System/Energy API for reading the battery state.
/System/Memory API for reading memory state.
/System/Mode API for controlling the main system state (e.g. factory sleep).
/System/Settings Settings API for a Movesense device.
/System/State API for reading some states.
/Time API for accessing different time related services.
/Ui/Ind API for controlling the LED.

Setting up the development environment

This section gives platform specific instructions on how to set up Movesense development environment. If you run into problems or need to install additional components to your system to get the environment properly set up, please let us know by submitting an issue.

There is an experimental installation procedure using Vagrant to set up an isolated environment for development (check it out below), or you can follow the manual installation instructions below.

Manual setup on Windows

Install the following tools:


  • For flashing with Movesense programming JIG:
  • In case you encounter ImportError: No module named yaml, try to install pyyaml package using pip.

Manual setup on OSX

Install the following tools:


Path configuration:

  • Remember to add ninja, CMake, GNU Toolchain for ARM, nrfjprog and mergehex (provided with nrfjprog) to system path by editing the PATH variable in .bash_profile.

Manual setup on Linux

Installation steps for Ubuntu 17.10:

  • Install dependencies

    sudo apt install git cmake ninja-build python libc++1 python-pip

  • Install the toolchain

    a) Installing from PPA

    sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa
    sudo apt-get update
    sudo apt-get install gcc-arm-embedded

    b) Installing from tar.gz


  • Install python dependencies

    sudo pip install nrfutil pyyaml

  • Clone repository

    git clone


Automated setup on all operating systems using Vagrant

Vagrant provides an easy, reproducable environment for setting up development environments. It provides an isolated environment with all the dependencies set up without any version clashes or corner case bugs.

Note: this method doesn't automatically install support for Movesense programming JIG. Refer to Linux installation steps to enable JIG support.

To get up and running

  1. Get Vagrant for your platform
  2. Get Virtualbox (easiest way to run and manage VMs)
  3. Clone this repository and run vagrant up - this will pull the ubuntu image and set up the environment necessary to develop Movesense software. This should take around 3 minutes.
  4. Once the box is up, run vagrant ssh in the directory. You will be taken to the fully set up environment and ready to start developing. A great place to go next is Example application build flow below

Example application build flow

> git clone
> cd movesense-device-lib
> mkdir myBuild
> cd myBuild

To build a debug version of a selected sample application (hello_world app in this example):

> cmake -G Ninja -DMOVESENSE_CORE_LIBRARY=../MovesenseCoreLib/ -DCMAKE_TOOLCHAIN_FILE=../MovesenseCoreLib/toolchain/gcc-nrf52.cmake ../samples/hello_world_app

To build a release version:

> cmake -G Ninja -DMOVESENSE_CORE_LIBRARY=../MovesenseCoreLib/ -DCMAKE_TOOLCHAIN_FILE=../MovesenseCoreLib/toolchain/gcc-nrf52.cmake -DCMAKE_BUILD_TYPE=Release ../samples/hello_world_app  
> ninja

Note: By default, the serial interface is enabled on Movesense sensor (see App.cpp file). Unless you need serial support (for programming JIG, for example), remember to keep it disabled to avoid excessive power consumption (link to instructions).

Updating sensor "over the air"

If you want to create OTA firmware update package, run command:

ninja dfupkg

which places the OTA package named in the build folder. You can then use our Android Sample App to update the firmware on your Movesense sensor over Bluetooth.

Updating sensor with programming JIG

if you are using a Movesense programming JIG you can flash the resulting .hex-file (and the nRF52 SoftDevice) with:

ninja flash

or you can use any other nRF52 compatible programming software such as nRFGo Studio. To acquire Movesense programming JIG, please contact us via

Removing manufacturing/settings data from the sensor

Command below updates the sensor firmware and additionally erases all settings in its memory. You should use it only if you want to replace default manufacturing/calibration data. Please don't use the command unless you know what you're doing!

ninja flash_all

Bug reports and other feedback

Always start by checking if our already contains the answer you're looking for.

Please report all bugs by raising an Issue on Bitbucket.

You can also discuss Movesense related topics on stack overflow. If your topic is not already addressed, please post a new one, tagging it with 'movesense' (i.e. include [tag:movesense] in the question body).

All feedback is welcome and helps to improve our offering!

Contributions to the source code

Your input is appreciated and we encourage you to post your contributions as pull requests to this repository.


See LICENSE.pdf for details on Movesense license.