Current State of IEEE 802.15.4/6LoWPAN Stack inside the Linux Kernel
At the moment the most common solution to bring Linux embedded devices into the Internet of Things world requires a gateway or border router device. These devices use a separate IEEE 802.15.4/6LoWPAN Stack from ContikiOS, TinyOS, etc.
The somewhat misnamed linux-zigbee project aims to implement the IEEE 802.15.4/6LoWPAN functionality (but not ZigBee) inside the Linux kernel so that you can bring a Linux machine into the Internet of Things world easily. The required hardware is an IEEE 802.15.4 radio frequency module which is typically connected via SPI or USB. On top of the 6LoWPAN stack you can run any IPv6 userspace software.
The main goal of the linux-zigbee project is to support the IEEE 802.15.4 MAC layer with 6LoWPAN on top in Linux kernel. Without linux-zigbee, a gateway or border router device running a separate IEEE 802.15.4/6LoWPAN stack was required. These devices are connected via ethernet, SLIP or USB-RNDIS to Linux. We want to bring the IEEE 802.15.4/6LoWPAN functionality into the Linux kernel which makes unnecessary to run a different stack on a separate device.
The project started in 2008 and part of the work have already been included in the Linux kernel. At the moment the Linux Kernel supports various IEEE 802.15.4 radio frequency modules which are typically connected via SPI or USB. With the project's userspace tools you can setup a WPAN interface with a virtual LoWPAN interface on top. This LoWPAN interface translates an IPv6 header to a 6LoWPAN header and vice versa.
In the last year the 6LoWPAN implementation in Linux became more RFC compliant so communication in a heterogeneous network becomes possible. The IEEE 802.15.4 stack only supports data frames right now. The 6LoWPAN stack supports IPHC, UDP compression/uncompression and fragmentation at the moment. A limited RPL python implementation was released which adds a basic support of Routing Protocol for Low-Power and Lossy Networks. The libcoap library adds support to run CoAP applications in userspace.
There is a draft for supporting 6LoWPAN on Bluetooth. We are working with the Bluetooth community to support 6LoWPAN in Linux kernel. Another wish is to support RFC6775 for 6LoWPAN neighbor discovery optimizations which isn't implemented yet.
This talk is for developers who are interested in the actual state of IEEE 802.15.4 and the 6LoWPAN stack under Linux.