The M-Tree is a mix of the current Zephyr* RTOS for Intel Quark SE processor core (x86), the Arduino C++ class libraries for ARC core, with some modifications to each to make them work together. This is also the future direction for the Arduino 101* product. It is for developers who want to leverage the ease of combining the Arduino C++ class libraries with a more modern version of the Zephyr-based firmware under development for the Intel® Curie™ module-based Arduino products.

Note: ALWAYS open a new terminal or new shell when you install or use the M tree after you have installed or used the A tree or Z tree.


  • x86: Zephyr application
  • ARC: Arduino sketches (.ino) or *.cpp

Supported Platforms

  • Ubuntu 16.04 - 64 bit and Ubuntu 14.04 - 64 bit


Prior to installing the CODK-M, run a software update and install curl:

$ sudo apt-get update
$ sudo apt-get install curl

Use the following commands to create a directory, clone the GitHub repository, install the dependencies and setup the environment:

$ mkdir -p ~/CODK && cd $_
$ git clone
$ cd CODK-M
$ make clone
$ sudo make install-dep
$ make setup

Note: The sudo make install-dep command will add the user to the "dialout" group, so you need to log out and log back in for the update to be effective.

Compiling the Firmware and/or Software

At the start of every development session, the following commands must be run from within the CODK-M directory to set the environment:

$ export CODK_DIR=$(pwd)
$ source ../zephyr/

Use the following commands to compile the x86 and ARC.

To compile x86:

$ make compile-x86

To compile ARC:

$ make compile-arc

The top-level Makefile builds the ASCIITable example by default. See the section " Connecting and Verifying the Board Proof of Life" for step-by-step instructions to run the example on Arduino 101 or tinyTILE board.

Uploading a Binary Image to the Board (Flashing)

Flashing Using USB/DFU

To flash x86 binary image:

$ make upload-x86-dfu

To flash ARC binary image:

$ make upload-arc-dfu

Flashing Using JTAG

To flash x86 binary image:

$ make upload-x86-jtag

To flash ARC binary image:

$ make upload-arc-jtag

Flashing Using J-Link

To flash x86 binary image:

$ make upload-x86-jlink

The flash ARC binary image:

$ make upload-arc-jlink

Updating the Bluetooth® low energy firmware

The Intel® Curie™ ODK requires an update of the BLE firmware. If your board is based on the factory settings, run the following command to update the BLE firmware:

$ make upload-ble-dfu

The script will prompt you to manually reset the board.


See the section Software Developer Tools.

Using the Sketch Converter

For users wishing to base their ARC application on an Arduino sketch, a utility is included to convert a sketch to a C++ file.

From within the CODK-M directory, run the following commands to convert an Arduino sketch (<sketch-filename>.ino) to C++:

$ source ../zephyr/
$ export CODK_DIR=$(pwd)
$ cd $CODK_DIR/arc/examples/<folder-name>
$ make convert-sketch SKETCH=<sketch_filename>.ino

The resulting C++ file created in the application directory will be named <sketch_filename>.ino.cpp

Copy and paste an application Makefile from another example, and edit the content to add the special libraries required. In the following example code, two libraries are required. The variable is empty for simple examples.

LIBDIRS  =  $(ARDUINOIDE_DIR)/libraries/WiFi/src \

Build and run the application as usual

$ make compile
$ make upload SERIAL_PORT=/dev/ttyACM0

Running the Application

The flashing/upload process will automatically reset the board and run the application.

Switching to Another Tree

  • Exit out of the current terminal to clear out the environment variables.
  • Restore the Arduino 101 board factory settings as explained in section Reflashing the Arduino 101 with Factory Settings
  • Open a new terminal and use the cd command into the desired tree.