Hoppa till huvudinnehållet
Till KTH:s startsida Till KTH:s startsida

* A minimal, low-power IEEE 802.11n (IBSS) stack for Contiki OS

Overview & Motivation

We believe that the existing 802.11 standards can be optimized (especially in terms of energy-efficiency) to make WiFi suitable for a wide range of IoT applications. However, there is a lack of low-cost embedded platforms that can be used for experimentation with 802.11 MAC protocol. The vast majority of low-power Wi-Fi modules for embedded systems has closed source firmware and protocol stack implementations, which prevents the implementation and the testing of new protocol features. In this paper we describe Contiki80211, an open source 802.11 radio link layer implementation for Contiki OS, whose purpose is to enable experimentation with 802.11 MAC layer management mechanisms on embedded devices, such as sensor motes and IoT smart objects. Contiki80211 implements a number of optimizations in order to run on hosts that are constrained in terms of memory and processing power. We evaluate its performance (memory usage, interrupt processing latency, etc.) on an embedded platform.

contiki80211_artwork.png

Contiki 802.11 Stack

The following Figure illustrates the modular structure of the IEEE 802.11 software stack in Contiki OS

netstack_wifi.png

The stack interconnects with the IP networking layer in Contiki OS. In addition, it interfaces the USB host library in the host platform, so the WiFi module that is used can talk to the hosting MCU.

The module stack for WiFi is shown on the right column of the Diagram, while the left column lists alternative stacks in Contiki OS for Ethernet and 802.15.4 PANs.

Hardware Platform for Evaluation

We used a Cortex-M3 as the host MCU, and employed an Arduino Due Board for that. For a WiFi module, we used a Fritz 802.11n USB Dongle, hosting an AR9170 Qualcomm, Atheros chip. We chose to work with Arudino Due, due to experience with ARM software development (see project on Contiki Router). We chose the AR9170 module because of an open-source driver for Linux (carl9170), based on which we developed our own low-power driver for Contiki OS.

The particular WiFI module was selected, additionally, due to the existence of an open-source firmware, that we hacked properly in order to bring low-power operation and IBSS synchronization down to the Firmware level, thus, relieving the host MCU from critical operations for synchronizing 802.11 stations.

hardware_arduino.png

Evaluating low-power mode in 802.11 IBSS networks

The above test-bed was used to evaluate our customized, and patented solutions for low-power 802.11 networking. The test-bed, prototype and experimental work was conducted in Disney Labs, in Zurich, Switzerland.

Related Publications

The protocol enhancements, as well as the test-bed evaluation have been evaluated and the results are published in scientific papers, while the 802.11 algorithm has been also patented by Disney Labs.

A selection of the related publications can be found below:

Enhanced-power-saving-mode-for-low-latency-communication-in-multi-hop-802-11-networks/

Contiki80211-an-ieee-802-11-radio-link-layer-for-the-contiki-os/

Additional technical papers can be founded in my list of publications.

Sotware Sources

A preliminary version of the driver and IEEE 802.11 stack code is hosted in a SICS-GitHub repository. The final version of the ported AR9170 Linux driver to Contiki OS, as well as the IBSS 802.11stack are part of a personal project, and can be found in my personal Contiki fork  here, under "-dev" branch.