In August, the Contiki developers announced the release of Contiki 3.0, the latest version of the open source IoT operating system. This version is a huge step up from the 2.x branch and brings support for new and exciting hardware, a set of new network protocols, a bunch of improvements in the low-power mesh networking protocols, along with a large number of general stability improvements. According to the report, it is by far, the best Contiki release ever!
Since the the previous 2.7 release, which came out in November 2013, the Contiki team has merged some 500 pull requests with new code, bug fixes, and improvements.
As the wireless world evolves, so does its hardware. Recently, many new Systems-on-a-Chip (SoCs) have been released, which makes hardware design much easier, as you only need a single chip for both radio communication and control. Contiki 3.0 offers support for two new interesting hardware plaforms: the Texas Instruments Sensortag and the Zolertia ReMote.
Better Encryption and security
Encryption and security support was always sorely lacking in the previous versions of Contiki. Contiki 3.0 brings much needed support for 802.15.4 link layer encryption with AES128, available in software for all platforms and hardware-accellerated for those platforms that support it (primarily the TI CC2538).
New Network Protocols
The Contiki 3.0 release adds support for the IP64/NAT64/DNS64 set of protocols that make it possible to connect Contiki IPv6 mesh networks directly to IPv4 networks, such as the Internet, without the need for a special translation proxy. The protocols operate directly at the IP layer to create a seamless translation between the mesh and the Internet. Alongside, device driver support for the ENC26j80 Ethernet chip has been added, to make it easy to connect Contiki mesh networks to Ethernet networks.
For application layer connectivity, support for the MQTT protocol, a new HTTP socket module, and an updated CoAP module has been added. New socket APIs for TCP and UDP sockets make network programming significantly easier than in the past.
The IPv6 mesh networking support has been massively reworked and improved. The RPL mesh routing protocol has seen many bugfixes and stability improvements. Support for new IPv6 mesh multicast mechanisms has been added. Many internal improvements to the IPv6 stack has been added.
Some Internal Changes
The structure of the code has seen a rework, with a new module system that makes it easier to selectively use only parts of the code. Instead of using C macros and #defines to select whether to use the IPv6 or IPv4 stack, the new module system uses Makefile settings, which makes compilation more efficient and the code easier to read.
The radio API has been updated to better match the way the radio duty cycling protocols use the radio. For example, the previous radio API lacked a clean way to set the radio channel, which now is part of the new API.
We also cleaned up a number of old hardware platforms that were not used anymore and dropped a bunch of examples that weren’t relevant any longer. We also added a bunch of new regression tests to ensure the continued stability of the system.
The full source code for Contiki 3.0 is available at github.