Fork me on GitHub

Download Instant Contiki

Instant Contiki is the Contiki development environment. It contains all the tools and compilers needed for Contiki development. Instant Contiki can be downloaded here:

Download Instant Contiki »

Source Code

The full source code for the Contiki releases can be downloaded here:

Download the latest Contiki release »

Latest Development Code

Contiki development is done with git. The Contiki git is hosted at github. Fork the Contiki git here:

  • IP64: NAT64, DNS64
  • HTTP socket
  • CoAP updates
  • MQTT
  • TCP and UDP socket
  • IPv6 mesh multicast
  • IPv6 stack improvements, cleanup
  • RPL mesh routing improvements
  • Link-layer security
  • new radio API
  • enc28j60 ethernet driver
  • Cooja improvements
  • MSPsim improvements
  • New regression tests
  • New platforms: sensortag/cc26xx, zolertia
  • Restructuring of code into a more modular format
  • Cleanup of old unused platforms

This is a massive update that brings an unprecedented amount of stability improvements and bugfixes to Contiki. Highlights:

New features and mechanisms:

  • Regression test framework
  • Travis integration
  • New code style script
  • mDNS
  • Trickle timer library
  • Compiler output less verbose

Severe bugfixes in:

  • CSMA
  • 802.15.4 framer
  • Nullrdc
  • ContikiMAC
  • 6lowpan fragmentation handling
  • IPv6
  • RPL routing

IPv6 stack:

  • IPv6 neighbor table refactorization
  • IPv6 routing table refactorization
  • RPL rewrite
  • RPL auto-repair of failed routes
  • IPv6 stack monitor if neighbor fails
  • Callbacks on routing table changes
  • 6lowpan: allow the maximum radio frame size to be configured


  • New TI CC2538 802.15.4 System-on-a-Chip platform
  • New PIC32 / SeedEye platform
  • STM32w updated
  • CC2430 updated
  • MC1322x updated


  • Support for link-layer ACKs
  • Improved stack monitoring and stack overflow triggering
  • Improved radiologger: duplicate packets now collapsed
  • Improved Timeline handling
  • Save radio bitrate in .csc file
  • Support for CC1101, CC1120, and ENC28J60 emulation
  • MSPsim support for MSP430x instruction set, verified against hardware

Antelope. A lightweight SQL-like database manager for Contiki (apps/antelope and examples/antelope).

Erbium. A new CoAP implementation for Contiki (apps/erbium and examples/erbium).

JSON library. A lightweight JSON parsing and construction library (apps/json) and a web services HTTP server (apps/httpd-ws).

ContikiMAC. Improvements to allow busts of packets to be sent rapidly.

RPL. Added support for extension headers.

Native border router. The RPL border router can now optionally run as a native process under Linux and communicate with a low-power radio over a serial port.

Cooja. Many improvements to the user interface. Simulation support for the MSP430x architecture and the exp5438, wismote, and z1 platforms.

stm32w. Added support for ContikiMAC.

New ports. cc2530, exp5438, wismote.

Instant Contiki. Updated to Ubuntu 12.04. Eclipse installed as default editor.

ContikiRPL ContikiRPL is a new implementation of the proposed IETF standard RPL protocol for low-power IPv6 routing. ContikiRPL now is the default IPv6 routing mechanism in Contiki.

ContikiMAC The new ContikiMAC state-of-the-art low-power listening asynchronous radio duty cycling mechanism is now the default duty cycling mechanism in Contiki.

Contiki Collect Contiki Collect is an address-free data collection protocol that runs on top of the Contiki Rime stack. For Contiki 2.5, Contiki Collect has been completely reworked to provide a significantly improved performance as well as configurability.

CollectView CollectView is a Java GUI that is used to set up a Contiki data collection network, either over Contiki collect or over UDP/IPv6/RPL.

Powertrace Powertrace is an interface to the Contiki power profiling system that allows either real-time inspection or off-line analysis of the power consumption of a sensor network.

The Contiki simulation environment The MSPSim/Cooja simulation environment has received a significant speed-up.

CoAP/REST Contiki 2.5 includes an experimental implementation of the IETF CoRE group’s CoAP application layer protocol for RESTful interaction with a low-power IP sensor network.

New platforms Zolertia Z1, RedWire Econotag mc13224v, ST Microelectronics STM32w, Sentilla JCreate.

Main changes

  • Significant improvements to power-saving low-power radio MAC protocols.
  • Several bugfixes to uIP and the SICSlowpan code.
  • New sensor API.
  • Significant COOJA/MSPsim speedup.
  • Two new experimental platforms: MicaZ and Sensinode 8051/CC2430.

Low-Power Radio MAC Protocols

  • New CSMA MAC protocol, running on top of the low-power MAC layer protocols such as X-MAC, that performs retransmissions when it detects collisions or interference. Enabled by default on Tmote Sky.
  • Significant improvements to X-MAC: the low-power operation now registers the phase of the neighbors and reduces the strobing period according to the phase of the receiver; broadcasts are transmitted more power-efficiently; frame format now compatible with 802.15.4.
  • Streaming support for both LPP and X-MAC.
  • New non-rtimer-based implementation of X-MAC, called CX-MAC, for platforms without rtimer support.
  • New configuration option for easier tuning of low-power MAC channel check rate.
  • Tmote Sky boot-up code now prints channel check rate by default.

uIP and Rime Networking

  • SICSlowpan now with low-power MAC for Tmote Sky.
  • Bugfix that allow 6lowpan fragmentation and reassembly with low-power MAC on the Tmote Sky.
  • Bugfixes in uIP code: start timer if lost SYN; loss of SYNACK bugfix; avoid using floating point operations in IPv6 code.
  • Bugfix in IPv4-over-mesh: work better over low-power MAC.
  • Support for receiving IPv4 multicast.
  • Runicast retransmission time configurable in contiki-conf.h.
  • Improved Tmote Sky IPv6/6lowpan bridge setup.

API Changes

  • Sensors API changed; Tmote Sky platform updated to match the new API.


  • 10x speed improvement through improved MSPSim integration.
  • Introduced low-overhead debugging interface for MSPSim-based simulation.
  • Simplified application-level simulation, with examples.
  • Coffee filesystem integration.
  • Improvements to Timeline and Visualizer plugins.
  • Better support for MicaZ emulation.

Nightly Builds and Contiki Regression Test Suite

  • Test configuration structure updated: test files are now self-contained.
  • New uIPv6 routing test.
  • Improved shell collect test.
  • New shell netperf test.

Contiki Shell

  • New shell modules: netperf for testing the communication performance between two neighbors, memdebug, with commands 'peek' and 'poke', for reading and setting memory locations from the shell - useful for debugging device drivers.
  • Alignment bugfixes.


  • CC2420 now allows transmission power to be set on a per-packet basis.
  • CC2420 timesynch bugfix.
  • CC2420: Enabled SFD interrupts.
  • Serial line improvements.
  • Faster SPI driver.


  • New platforms: MicaZ (experimental), Sensinode 8051/CC2430. (experimental)
  • Minimal-net now has IPv6 support.
  • Significant improvements to Tmote Sky IPv6 support.
  • 6502: Compatibility with cc65 version 2.13; 80 column screen on Apple2 and C128
  • msb430: New SD driver written from scratch.

Other Changes

  • Modules mmem and dhcpc are now compiled by default.
  • New examples for email, irc, webserver, wget.
  • Improved IPv4 and IPv6 examples for the Tmote Sky.
  • Bugfixes in AVR ELF loader.
  • Power profiling bugfix: energy was sometimes misattributed when peripheral was switched off when it was already off.
  • New simplified rtimer code that only handles one rtimer.
  • Rime examples now run on disjoint channels to avoid semantic interference.
  • New Java-based maintenance tool for Coffee file system images.
  • Improved makefsdata script.

Changelog for Contiki 2.3 (27 June 2009)

New features

  • IPv6 routing layer
  • Cooja TimeLine
  • IPv6/6lowpan for Tmote Sky
  • MSB430 port
  • Many new shell commands
  • Improved LPP power-saving MAC protocol
  • Twitter client


  • Support for UDP-based IPv6 routing protocols implemented with Rime
  • New IPv6 multi-hop routing module using Rime's route discovery algorithm
  • Made IPv6 routing modules easily replaceable
  • Alignment problems in SICSlowpan fixes to make it work on MSP430
  • IPv4 routing bugfixes
  • Protosocket send bugfix significantly increase tcp throughput


  • New packet queue module that keeps track of a packet queue
  • collect: now maintains a queue of packets to be forwarded
  • Multihop bugfix: avoid overwriting packet attributes

Duty-cyling power-saving MAC protocols

  • Mac layer structure has init function to make configuration easier
  • Many improvements and optimizations to LPP
  • X-MAC now does not run rtimer when off, to avoid problems with serial communication on MSP430


  • Improved the garbage collection efficiency and correctness.
  • Fixed a bug in file merges.

Power profiler

  • Support for flash read and write


  • New commands: netstat (show TCP connections), sendcmd (send command to a node), download (download file from a node), neighbors (show neighbors), unicast (send a unicast packet to a node), tweet (send Twitter message), sensortweet (send Twitter message with sensor data)
  • New block size option to "read" command


  • Cooja TimeLine, new visualizer that shows radio communication and interaction.
  • New watchpoints on MSPSim-based nodes, visible in the TimeLine
  • Simulation resolution changed from milliseconds to microseconds
  • Simulation scripts are now integrated with the simulation configurations for easier scripted simulations
  • Scheduling now fully event-based, resulting in faster simulations
  • Various user interface updates: Cooja menu system, log and radio listeners, and source-code debugger


  • Default MSP430 CPU speed increased from 2.4 MHz to 3.9 MHz
  • mspgcc memcpy bug workaround added

Tmote Sky / TelosB / Sentilla JCreate port

  • Support for IPv6/6lowpan
  • New bridge tool for seamless integration of IPv6 sensor networks and general-purpose IPv6 networks
  • CC2420: optional timestamping with incoming packets
  • New RSSI scanner example application
  • Webserver now displays an Ajax-style spinner icon when loading sensor data

Atmel Raven port

  • Bugfixes for the USB stick module
  • HTML code moved to flash ROM and made W3C compliant
  • Wildcard to display all files in file-stats cgi script

Instant Contiki

  • Updated to latest Ubuntu packages
  • Sentilla JCreate compatibility
  • jpcap installed

Changelog for Contiki 2.2.3 (24 March 2009)

New features

  • Checkpointing: stores the current execution state of a node in a CFS file from which it later can be rolled back (currently only on the Tmote Sky/TelosB/JCreate platform)
  • Per-packet power profiling: allows fine-grained breakdown of a node's power consumption on a per-packet basis
  • Announcements: announcements, such as route announcements and neighbor discoveries, are made independent of the applications and protocols, to allow rapid neighbor discovery and improved routing in face of mobility
  • Deluge: a network protocol that disseminates a file to all nodes in the network

New platforms

  • Sentilla JCreate
  • Meshnetics ZigBit

Shell commands

  • udpsend: sends a UDP packet to a specified receiver
  • tcpsend: sets up a TCP connection to a specified receiver
  • irc: participates in on-line IRC discussions
  • The 'ping' command from 2.2.2 was renamed to 'rime-ping'
  • The 'sniff' command has a new option, '-a', that displays packet attributes for sniffed packets

Internal changes

  • rimebuf module renamed to packetbuf
  • serial module renamed to serial-line
  • CC2420 additional link-level CRC made optional; CC2420 time stamps made optional
  • RSSI, link quality, and timestamp are now provided as packet attributes; Packet attributes now specify radio transmission power.
  • Raven apps moved from apps/ to platform/avr-raven/apps/


  • httpd-cfs bugfix: TCP connections were prematurely timed out
  • The previous random_rand() function was not random enough - switched to libc rand() instead
  • Bugfixes to the collect protocol

Coffee changes

  • Compiled code size decreased by 1kb.
  • File metadata structures redesigned to improve file I/O semantics and to enable faster opening of files

CFS changes

  • cfs_seek can now move file offsets backwards and to the end of the file.

Cooja changes

  • Contiki motes more tightly integrated into the Contiki build system
  • Added test editor for creating non-GUI tests

MSP430 changes

  • Periodic resync of DCO to ensure stable CPU timing
  • Set CPU to low power mode only when the UART is not transmitting
  • Added ability for interrupt-driven UART transmission
  • Unified the tick timer and real-time timers and both now uses timer A

x86 changes

  • Multi-threading library now 64-bit compliant

Changelog for Contiki 2.2.2 (17 November 2008)

New features

  • uIPv6 - the world's smallest fully compliant IPv6 stack
  • SICSlowpan - IPv6 over 802.15.4
  • Atmel AVR Raven port
  • 802.15.4 MAC layer for the Atmel AVR Raven
  • Two new shell commands for HTTP interaction: wget and httpd
  • COOJA simulator significant speedup
  • Improved integration between COOJA and MSPsim
  • Automated testing mechanism in COOJA
  • Binary packages for Tmote Sky/TelosB and Atmel AVR Raven


  • Major bugfix in the protosocket code that could cause packet corruption during retransmissions, and affected all TCP/protosockets-based apps
  • Bugfix in Coffee EOF handling

Changelog for Contiki 2.2.1 (6 September 2008)

New features

  • Better data presentation in the Contiki collect program
  • Reduced power consumption for broadcast traffic with X-MAC
  • Improved network performance for data collection


  • Fixed a severe bug in the data collection protocol that could make the network stop responding
  • Added workaround for a problem with the CC2420 radio under high traffic load
  • Bugfix in the Coffee flash file system

Changelog for Contiki 2.2 (12 July 2008)

New features

  • Significantly improved command line shell with Unix-style pipelines, concurrent command execution, network-wide command execution, collect sensor data, see the power profile, network communication using the Rime stack, and file system interaction. The shell can be used over a serial line or over Telnet/TCP/IP.
  • Coffee: a flash ROM file system.
  • New program for displaying sensor data and network statistics from a network of wireless Contiki sensors.
  • A simple network time synchronization mechanism.
  • Instant Contiki: a full Contiki development environment in a single-file download. A VMWare Ubuntu Linux image with all necessary Contiki development tools installed.
  • The Chameleon architecture for the Rime low-power radio stack. The Chameleon architecture that separates protocol headers and protocol logic. Packets are now tagged with packet attributes that follow them through the stack. [Dunkels et al, SenSys 2007]
  • New experimental low-power MAC prototol: LPP, Low-Power Probing. [Musaloiu-Elefteri et al, IPSN 2008]

Example applications

  • New AJAX-style web server example for the Tmote Sky / TelosB boards showing the current sensor readings and power profile on a web page that is continuously updated.


  • Improved process initialization handling that reduces event queue size.
  • Moved power profiling module (energest) from lib/ to sys/


  • Added function for computing CRC16 over a data array


  • Bugfixes and improvements to many protocols in the stack: neighbor discovery, trickle, data collection.
  • Changed several module names into more descriptive ones: ibc -> broadcast, uc -> unicast, etc.
  • Added a sniffer module functionality that allows callback functions to be called on all incoming and outgoing packets.


  • Bugfixes in handling of CFS_APPEND flag.


  • New configuration option that turns IP forwarding on or off: UIP_CONF_IP_FORWARD


  • Bugfixes and improvements to X-MAC code: radio is turned off when sending broadcasts, broadcasts do not send probe packets.
  • Added a string name to the struct mac interface to allow printing the name of the current MAC protocol for debugging.


  • Bugfixes in watchdog driver.

Tmote Sky / TelosB

  • Updated CC2420 driver, changed name from simple-cc2420 to cc2420.
  • Added experimental CC2420 AES encryption support.


  • TR1001 driver now uses Rime statistics


  • wpcap driver now handles IPv6 interfaces too.


  • Leveraged new cc65-2.12.0 apple2enh C-Library feature (using
    Language Card bank 1).

Changelog for Contiki 2.1 (3 December 2007)

New features

  • Energy profiling that provides measurements of how much energy is spent, and where
  • Power-saving MAC layer for low-power radios based on the X-MAC protocol
  • New platforms: MSB430, C64, enhanced Apple //e, PC-6001 (w/ 32kB RAM) and PC-6001 mkII

Build system

  • All compiler warnings removed from the core code
  • New parallel reprogramming mechanism for Tmote Sky that allows simultaneous reprogramming of all Tmote Sky boards connected to the PC

Example applications

  • New energy profiling demo application for the Tmote Sky platform
  • New Tmote Sky sensor and energy profiling data collection example
  • New ESB demo applications
  • Several new Rime examples
  • Multi-threading library demo application
  • CFS-based webserver


  • The service paradigm was removed because it was not as useful as was originally intended
  • Machine-neutral multi-threading library implementation
  • The rtimer module was updated; but we have found bugs when using multiple concurrent rtimers that will be fixed for the 2.2 release.


  • Rime now maintains (optional) statistics
  • Rime modules uabc and uibc changed name to polite and ipolite. The tree module changed name to collect.
  • New hop-by-hop reliable multi-hop unicast forwarding module: rmh.
  • Unicast multi-hop forwarding modules mh and rmh now invoke the upper layer protocol when doing forwarding, to allow user-defined routing protocols.
  • The data collection module, collect, now uses the number of expected transmissions to the sink as the routing metric instead of hop count.
  • New API for MAC protocols and radio drivers.
  • Rime address size is now configurable.
  • Routing table entries now refreshed upon every lookup.
  • Bugfixes to the reliable single-hop unicast module, ruc.
  • New reliable single-hop block transfer module, rucb.
  • The reliable network flooding module, trickle, has been rewritten with the nf module.


  • CFS service paradigm removed - all CFS drivers are now regular C functions.
  • Prototypes updated to better match POSIX


  • CTK service paradigm removed - all CTK drivers are now regular C functions.


  • Packet driver service paradigm removed - all packet drivers now register themselves actively with the TCP/IP stack (the single packet driver service client)


  • Watchdog timer support
  • A/D converter interrupts turned off because of too many interrupts; work is underway to fix.


  • Z80 architecture-dependent multithreading library and native uIP checksum calculation

Tmote Sky

  • New parallel reprogramming system
  • SHT11 driver


  • As an alternative to Microsoft Visual Studio 2005 there is now a build fully integrated with the Contiki build system using Cygwin & GCC

C64, enhanced Apple //e

  • Generic Ethernet packet driver with dynamically loading, self-modifying Ethernet card device drivers for the CS8900A and the LAN91C96


  • Multithread, serial communication, and SLIP networking are supported.
  • Various build configurations enable running on very memory restricted environment.