Wednesday, August 26, 2015

Contiki 3.0 Released, New Hardware from Texas Instruments, Zolertia

Today the Contiki team announced the release of Contiki 3.0, the latest version of the open source IoT operating system! The 3.0 release 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. This is, by far, the best Contiki release ever!

Contiki is the open source operating system for the Internet of Things, used by developers to bring low-power wireless connectivity to their products and projects. Read more about Contiki here.

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.

New and Exciting Hardware

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 adds support for two new interesting hardware plaforms: the Texas Instruments Sensortag and the Zolertia ReMote.

Texas Instruments Sensortag


The Texas Instruments Sensortag

The Texas Instruments Sensortag platform is exciting in many ways. It packs a whole bunch of sensors in an inexpensive package, which is great for building a quick demo and as a starting point for more tailored designs. But more importantly, it features a brand new System-on-a-Chip design called CC2650 that has a radio that supports both 802.15.4 (6lowpan) and Bluetooth, while having a lower power consumption than previous chips.

The Sensortag comes at a very nice price point of $29 per unit, making prototyping quicker and easier than ever before. The Sensortag port was developed and contributed by Texas Instruments.

Revolutionary feature: Contiki mesh + Bluetooth beacons

The TI CC26xx platform is the dual IEEE 802.15.4 and Bluetooth radio, which makes it possible to do both Contiki IPv6 meshing and Bluetooth beacons - at the same time. Bluetooth beacons can be picked up by iOS and Android apps.

This allows Contiki devices to be discovered with an iOS or Android smartphone app, without any additional hardware or software. This is revolutionary as it makes user onboarding both quicker than ever before, but also significantly more secure.

The Thingsquare platform, a commercial connected product platform that uses Contiki, use this to securely discover and authenticate nearby devices which then use the low-power mesh for data access, through a smartphone app.


The Thingsquare platform on the Sensortag

A bunch of sensors

The Sensortag has an an array of built-in sensors, for which the Contiki 3.0 release adds device drivers that are ready to be used out of the box: infrared ambient temperature sensor, ambient light sensor, humidity sensor, barometric pressure sensor, a magnet sensor, and a 9-axis accelerometer and gyroscope.

Zolertia ReMote


The Zolertia ReMote platform

The Zolertia ReMote platform is unique in that it provides both a 2.4 GHz SoC (TI CC2538) and a sub-GHz radio chip (TI CC1120). This makes it possible to use it both for shorter range 2.4 GHz communication and long-range sub-GHz networking. For example, in this test, the ReMote was able to achieve an impressive 3.14159 kilometer transmission range.

The ReMote platform also has a number of expansion ports, including two Phidget ports for external sensors and other devices.

(Device driver support for the TI CC1120 radio is not available in Contiki 3.0, but is scheduled for the next upcoming release. The upcoming version of the ReMote has a TI CC1200 sub-GHz radio, for which drivers will be in the next upcoming Contiki release.)

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).

Read more about the encryption support here.

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.

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.

Download

The full source code for Contiki 3.0 is available at github.

To get started with Contiki 3.0, use the Instant Contiki 3.0 development environment, which contains all the necessary compilers and tool chains. (Warning: 3 Gb download.) Instructions for getting started with Instant Contiki are available here.

Get Involved

To get involved with Contiki, join the contiki-developers mailing list and join the contiki-os project at github!

Press

For press inquiries, contact Adam Dunkels <adam@thingsquare.com>.

Full disclosure: the author of this post is also CEO and co-founder of Thingsquare.

Wednesday, October 8, 2014

A big step for Contiki: built-in encryption

Contiki finally got built-in encryption support.

Contiki is a great platform for wireless products, but has been lacking in one respect: there was no built-in encryption. This has forced a lot of people, including us at Thingsquare, to develop their own encryption layers on top of Contiki.

Encryption is essential for wireless systems. Because wireless communication is so easy to eaves drop – all you need is a nearby antenna – every byte sent over a wireless channel must be encrypted. Adding encryption is one of the goals for the upcoming Contiki 3.x release.

For months, Contiki contributor kkrentz and a group of others have been working on a contribution that adds link-layer encryption for IEEE 802.15.4 radios. The code follows the IEEE 802.15.4 radio standard for encryption and supports the mandatory AES128 Counter with CBC-MAC (CCM) mode.

Yesterday, the pull request that contained this contributions was accepted into the mainline Contiki code. Now everyone using Contiki can simply switch on encryption and protect themselves and their users from prying antennas.

Tuesday, June 10, 2014

Contiki in WIRED Magazine

For those of you who missed it, WIRED Magazine ran a story on Contiki last week:
Out in the Open: The Little-Known Open Source OS That Rules the Internet of Things
You can connect almost anything to a computer network. Light bulbs. Thermostats. Coffee makers. Even badgers. Yes, badgers.

Discussion on Hacker News.

Monday, February 17, 2014

Thingsquare's Contiki IoT workshop slides posted

The first set of slides from the Thingsquare Contiki IoT workshop series have been posted.


The slides show how to connect a Contiki system to the Internet and make it interact with web services, how to build an IoT cloud service with node.js and Javascript, some of the next steps for Contiki 3.x, and some of the trade-offs in choosing a communication technology for your next IoT system. Slides for the three remaining days will be posted during the week.

The slides from day 1 are below:








Monday, January 20, 2014

Thingsquare IoT and Contiki courses - now online too

For spring 2014, the Thingsquare IoT development and Contiki programming course program has been expanded with both a new on-site workshop on advanced Contiki programming and a new set of online courses.

Check out the Thingsquare online courses here and the two-day workshop training courses here.

The courses are intended for developers and decision makers who want to hit the ground running when planning or developing their connected products. If you want to build the next Nest, these courses are for you!

The online courses are intended to broaden the amount of people who can attend the Thingsquare courses, to get more people up and running.

The two-day workshop courses are running as usual in Stockholm, Sweden. Register quickly to get the early-bird discount!

Tuesday, January 14, 2014

Contiki-based Products at CES 2014

Held in January every year in Las Vegas and with some 160000 attendees, the Consumer Electronics Show, CES, is by far the largest event in the consumer electronics industry. Products are launched, announcements are made, and the press goes wild.

At CES 2014, a number of products and systems based on Contiki were shown:

WigWag

WigWag is a system for building intelligent environments that had a successful Kickstarter funding campaign in 2013.

Thingsquare

Thingsquare was there to show the Contiki-based Thingsquare cloud IoT system. Check out this video where Texas Instruments demonstrates the Thingsquare system:


LIFX

 

The LIFX WiFi bulbs were also repressented.

tado°


tado° is an app that lets you set the comfort of your home directly from your smartphone. Read more about tado° at CES 2014 here.

Monday, November 18, 2013

Instant Contiki 2.7 Available

Following the Contiki 2.7 release, version 2.7 of the Instant Contiki development environment is now available:

Instant Contiki is a single-file download that contains everything needed to work with Contiki: compilers, toolsets, editors. For information on how to get started, see this link.

Friday, November 15, 2013

Contiki 2.7 Released!

After a long wait, Contiki 2.7 is finally released!

Contiki 2.7 is a massive improvement over previous versions. A lot of effort has gone into making the system really stable, particularly the wireless IPv6 mesh networking. We now have a regression testing framework that kicks in on every commit and runs the system on 9 different emulated hardware platforms with 4 different CPUs and on more than 1000 emulated wireless network nodes. We have found several hard-to-find bugs deep in the network stack that show up as we push the envelope on system performance. Several parts of the IPv6 stack has also been rewritten to make the code easier to follow and for everything to work better.

The Contiki 2.7 release also adds new platforms, such as the TI CC2538 802.15.4 System-on-a-Chip and the PIC32, as well as updates to many of the other platforms.

The full source code can be downloaded from
An updated version of Instant Contiki will follow shortly.

Contiki 3.x Roadmap


Update: Discussion about the roadmap for Contiki 3.x here and here.

Changelog


New features and mechanisms:

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

Critical 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

Platforms:

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

Cooja:

  • 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

Saturday, August 17, 2013

Instant Contiki 2.6.1 Available

A new version of Instant Contiki is has just been posted and is available for download below. Heads up: the Instant Contiki download is about 2 Gb large.

https://sourceforge.net/projects/contiki/files/Instant%20Contiki/Instant%20Contiki%202.6.1/

Instant Contiki is an Ubuntu-based virtual machine that takes away the complexity of starting to develop software for Contiki: Instant Contiki contains all the compilers and tools needed for Contiki development in a single file download. No need to install any complex software or tool chains beyond VMWare Player.

This version of Instant Contiki contains the following:
  • msp430-gcc 4.7.0 20120322
  • avr-gcc (GCC) 4.5.3
  • arm-none-eabi-gcc (Sourcery G++ Lite 2008q3-66) 4.3.2
  • SDCC : mcs51 3.3.1 #8804 (Aug  6 2013)
  • cc65 V2.13.9
  • java version 1.7.0_25

How do you install and use Instant Contiki? Read all about it here!

Monday, July 1, 2013

More Contiki-based products posted


Two new Contiki-based products posted today:
  • The WigWag home automation system
  • The Vibrain smart city solution
See the full list on the Contiki website!

Wednesday, June 19, 2013

Contiki's Internet of Things: From Badgers to Light Bulbs

What does swans, badgers, data centers, city streets, and light bulbs have in common? Contiki!

One of the coolest things with Contiki is the wide range of systems it is used in. To show this off, we have created a page on the Contiki website to showcase Contiki-based products and systems!

The Internet of Things will be a revolution. It will be everywhere. These Contiki-based systems are some of the early signs of what to expect:
  • The Oxford badger tracking system – also used to track swans, hares, and eagles
  • The tado° smart thermostat
  • The Rad-DX radioactive radiation monitor
  • The Zolertia city street noise monitoring system
  • ... and many more on the Contiki website!

Thursday, June 13, 2013

Self-powered Contiki Power Sensor Wins IPSO 2013 Challenge

Need to know how much power that flows through a specific power cord, and see the information directly on your smartphone? That's exactly what the Contiki-based winner of the IPSO 2013 challenge does. Just clip on the sensor on cord and see the data from anywhere in the world – the sensor sends the measurements wirelessly and securely across the Internet. Best of all: no batteries need to be replaced, ever, as the sensor is completely self-powered.

The wireless power sensor, developed by Redwire Consulting, Boston, MA, won the IPSO 2013 Challenge last week. Aside the fame and recognition, winning the competition also included a $10000 USD check.


The sensor that is clipped-on to an power cord measures the current flowing through the wire and sends the data wirelessly to a cloud server, hosted at lowpan.com. By using Contiki and its IPv6 stack, the sensor can send its readings directly to the cloud, without having any protocol translator boxes involved.


IPSO 2013 Challenge chairman Nick Ashworth said "The innovation, simplicity and end-to-end utilization of IP technology made this entry stand out to the judges."

The Redwire system was not the only Contiki-based system to compete in the IPSO 2013 challenge. The full list of entries can be found here.

More coverage:

Tuesday, December 11, 2012

Contiki Regression Tests: 9 Hardware Platforms, 4 Processor Achitectures, 1021 Network Nodes

tl;dr: Contiki gets regression test framework from Thingsquare with travis integration that lets us test every new commit on 9 hardware platforms, 4 processor architectures, and 1021 emulated network nodes.

Despite its size, Contiki a complex system with multiple layers of interrupts, processes, protothreads, serial port input and output functions, radio device drivers, power-saving duty cycling mechanisms, medium access control protocols, multiple network stacks, fragmentation techniques, self-healing network routing protocols, best-effort and reliable communication abstractions, and Internet application protocols. These run on a wide range of different microprocessor architectures, hardware devices, and is compiled with a variety of C compilers.

Typical Contiki systems also have extreme memory constraints and form large, unreliable wireless networks. How can we ensure that Contiki, with all these challenges, does what it is supposed to do?

Over the years, open source projects have tried different ways to ensure that the code always is stable across multiple platforms. A common approach has been to ask people to test the code on their own favorite hardware in good time before a release. This was the approach that Contiki took a few years ago. But the problem was that it is really hard to get good test coverage, particularly for systems that are inherently networked. Most testers won't have access to large numbers of nodes and even if they have, tests are difficult to set up because of the size of networks that are needed for testing. Also, since people are more motivated to run tests near a release, there may potentially be large numbers of bugs that are found right before the release. It would be great to be able to find those bugs much earlier.

Many projects do nightly builds to ensure that the source code is kept sane. This is something we have done for a long time in Contiki: the code has been compiled with 5 different C compilers for 12 platforms. But this is not enough to catch problems with code correctness, as the functionality of the system is not tested. Testing the functionality is much more difficult, since it requires us to actually run the code.

Fortunately, Contiki provides a way to run automated tests in large networks with a fine-grained level of detail: Cooja, the Contiki network simulator. But taking this to a full regression test framework took a bit of work.

First, to make scripted simulation setups easier, Cooja author Fredrik Österlind wrote a test script framework for Cooja. Second, Github contributors Rémy Léone and Ilya Dmitrichenko developed a travis plugin for Contiki. And now Contiki gets a new regression test framework from Thingsquare Mist.

Cooja, the Contiki network simulator

Cooja simulate networks of nodes, where each node can be a highly detailed emulator of a specific hardware device. Thanks to mspsim and avrora, Cooja can emulate the TI MSP430 CPU, with a recent addition of the MSP430x architecture, and the Atmel AVR. Nodes can also run non-emulated Contiki code compiled for the native platform, typically the x86.

With Cooja, the regression test framework, and travis, can now run regression tests on every single commit done to the repository. We spot problems early in the development process; even before the code gets into the repository. Although regression tests do not provide a full certainty that the code works in all situations, it does help us spot showstoppers. This lets us all sleep well at night, knowing that any new code in the system is not only reviewed by the Contiki developers and automatically built, but that the code is automatically run in a range of different network setups, with a number of different network protocols, and on multiple platforms and processor architectures.

The regression test framework resides inside directory in the Contiki root, regression-tests/. To run the complete set of regression tests, simply run make in this directory and all tests will run. Each test prints out either OK or FAIL ಠ_ಠ to indicate success or failure of each test.

The regression-tests/ directory contains a set of subdirectories:
01-compile/
02-hello-world/
03-base/
04-rime/
05-netperf/
06-shell/
07-elfloader/
08-collect/
09-ipv4/
10-ipv6/
11-rpl/
12-ipv6-apps/
The directory names start with two digits to create an explicit ordering and allow doing iterative regression testing. For example, if working on the RPL code, go into the 11-rpl/ directory and run make to check that the regression tests for RPL work, without having to run all the other tests that aren't relevant to the RPL code.

Each test directory contains a number of tests. Simulation test directories contain Cooja csc files, who's names also start with two digits. For example, the 02-hello-world/ directory contains:
Makefile
01-multithreading.csc
02-sky-coffee.csc
x03-crosslevel.csc
04-sky-checkpointing.csc
The files that start with two digits are run, in order, when running make in the directory. The file named x03-crosslevel.csc has been disabled, by putting an x in the beginning of the filename.

Some of the tests include hundreds of networked nodes, whereas others contain only a single node. For example, the multithreading and hello-world tests contain only one node each. Some of the IPv6/RPL and Rime tests contain hundreds of nodes, to test the scalability of the network protocols by checking that the behave correctly even if the number of neighbors and routes exhaust the neighbor and routing tables used by the network protocols.

A few statistics for the new regression test setup:
  • Number of automated tests: 42
  • Number of build platforms: 11
  • Number of compiled examples: 38
  • Number of C compilers used: 4
  • Number of processor configurations tested: 9
  • Number of processor architectures tested: 4 (AVR, MSP430, MSP430x, x86)
  • Number of network stacks tested: 3 (IPv4, IPv6, Rime)
  • Number of network protocols tested: 16
  • Total number of network nodes used in the tests: 1021
  • Average number of per-node neighbors: 252.7

Monday, October 29, 2012

Contiki goes Github

To make it easy for everyone to contribute their cool new features, improvements, and bugfixes, the Contiki project (finally) moves to Github! Read all about it in this email to the contiki-developers mailing list.

Fork the Contiki code at the Contiki github repository:


Want to contribute your coolest code to Contiki? Check out the instructions here:

Sunday, August 5, 2012

Getting a Contiki Q&A site started - your help is needed

Wouldn't it be nice to having a real Q&A site like stackoverflow.com for Contiki? The mailing list is great and all, but having something community moderated has a lot of advantages.

We have set up an Area51 site on stackexchange.com to get this started. Once it has enough followers, sample questions, and votes, then the site becomes live and experts can answer questions.

How can you help? Read all about how to help this get off the ground here:


In short, you need to join the site, follow it, ask 5 questions and vote up 5 questions. Pretty simple! The wiki is also tracking the posted questions so that if you think of more than 5 questions, you can write them down. And if you can't think of 5 questions, check the wiki. Later, after the "definition" stage, we will need answers. So in the meantime, you can post them to the wiki as well.

We hope this would work well as a great Q&A forum for Contiki. Let's make it happen!

New Contiki Wiki

We have set up a new Contiki community wiki here:


Unlike the previous wikis that Contiki has had, we now have an explicit Creative Commons license for all contributions. If you have added something to the old wiki, please move it to the new one to make sure it is covered by the new license.

Tuesday, July 17, 2012

Contiki 2.6 Released

The Contiki team is happy to announce the release of Contiki 2.6. This release brings several improvements to core Contiki networking components, such as the IPv6 RPL routing protocol and Erbuim, a new CoAP implementation, as well as a set of new platforms (cc2530, exp5438, wismote), and several new Cooja simulation platforms (exp5438, wismote, z1). The release also adds new Contiki applications, such as the Antelope low-power database manager and a new HTTP server for web services. Sleepy router support has also been extended to new platforms (STM32w).

Download the Contiki 2.6 from the Contiki web site:


Contiki is the open source operating system for the Internet of Things. Contiki allows tiny, battery-operated low-power systems communicate with the Internet. Contiki is used in a wide variety of systems such as city sound monitoring, street lights, networked electrical power meters, industrial monitoring, radiation monitoring, construction site monitoring, alarm systems, and remote house monitoring.

Contiki 2.6 changelog

  • 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.

Wednesday, July 11, 2012

A New Website for Contiki

Finally, a new website for Contiki! Redesigned, redone, restructured - check it out:

Tuesday, July 10, 2012

A New Beginning for Contiki

Change is about to come to Contiki. A new development model. Improved release cycles. Better communication. Stay tuned.

Read more in this message to contiki-developers.

Tuesday, February 14, 2012

How do you use Contiki?

A lot of people use Contiki for a variety of cool projects and products, but since Contiki is open source, it is difficult to know about them. I (Adam) regularly receive emails from people using Contiki in a variety of fascinating and inspiring projects, and often hear from people I meet about their cool Contiki-projects, but it would be great to get a more structured view of how Contiki is being used.

Are you using Contiki or thinking about using it? If so, it would be great if you could take a few moments of your time to fill out this poll:

How do you use Contiki?

Individual answers will be treated confidentially, and the aggregate results will be posted in early March. Or, if you prefer to not fill out the poll, but still would like to let me know how you use Contiki, feel free to drop me a direct email at adam@dunkels.com! I love to hear about all Contiki-related projects, be it commercial products, hobby projects, academic project, or something completely different!

The poll closes on February 29th 2012, so be quick to answer.