|
@@ -4,20 +4,20 @@
|
|
|
|
|
|
Introduction
|
|
Introduction
|
|
============
|
|
============
|
|
-The IEEE 802.15.4 working group focuses on standardization of bottom
|
|
|
|
-two layers: Medium Access Control (MAC) and Physical (PHY). And there
|
|
|
|
|
|
+The IEEE 802.15.4 working group focuses on standardization of the bottom
|
|
|
|
+two layers: Medium Access Control (MAC) and Physical access (PHY). And there
|
|
are mainly two options available for upper layers:
|
|
are mainly two options available for upper layers:
|
|
- ZigBee - proprietary protocol from the ZigBee Alliance
|
|
- ZigBee - proprietary protocol from the ZigBee Alliance
|
|
- 6LoWPAN - IPv6 networking over low rate personal area networks
|
|
- 6LoWPAN - IPv6 networking over low rate personal area networks
|
|
|
|
|
|
-The linux-wpan project goal is to provide a complete implementation
|
|
|
|
|
|
+The goal of the Linux-wpan is to provide a complete implementation
|
|
of the IEEE 802.15.4 and 6LoWPAN protocols. IEEE 802.15.4 is a stack
|
|
of the IEEE 802.15.4 and 6LoWPAN protocols. IEEE 802.15.4 is a stack
|
|
of protocols for organizing Low-Rate Wireless Personal Area Networks.
|
|
of protocols for organizing Low-Rate Wireless Personal Area Networks.
|
|
|
|
|
|
The stack is composed of three main parts:
|
|
The stack is composed of three main parts:
|
|
- IEEE 802.15.4 layer; We have chosen to use plain Berkeley socket API,
|
|
- IEEE 802.15.4 layer; We have chosen to use plain Berkeley socket API,
|
|
- the generic Linux networking stack to transfer IEEE 802.15.4 messages
|
|
|
|
- and a special protocol over genetlink for configuration/management
|
|
|
|
|
|
+ the generic Linux networking stack to transfer IEEE 802.15.4 data
|
|
|
|
+ messages and a special protocol over netlink for configuration/management
|
|
- MAC - provides access to shared channel and reliable data delivery
|
|
- MAC - provides access to shared channel and reliable data delivery
|
|
- PHY - represents device drivers
|
|
- PHY - represents device drivers
|
|
|
|
|
|
@@ -33,15 +33,13 @@ include/net/af_ieee802154.h header or in the special header
|
|
in the userspace package (see either http://wpan.cakelab.org/ or the
|
|
in the userspace package (see either http://wpan.cakelab.org/ or the
|
|
git tree at https://github.com/linux-wpan/wpan-tools).
|
|
git tree at https://github.com/linux-wpan/wpan-tools).
|
|
|
|
|
|
-One can use SOCK_RAW for passing raw data towards device xmit function. YMMV.
|
|
|
|
-
|
|
|
|
|
|
|
|
Kernel side
|
|
Kernel side
|
|
=============
|
|
=============
|
|
|
|
|
|
Like with WiFi, there are several types of devices implementing IEEE 802.15.4.
|
|
Like with WiFi, there are several types of devices implementing IEEE 802.15.4.
|
|
1) 'HardMAC'. The MAC layer is implemented in the device itself, the device
|
|
1) 'HardMAC'. The MAC layer is implemented in the device itself, the device
|
|
- exports MLME and data API.
|
|
|
|
|
|
+ exports a management (e.g. MLME) and data API.
|
|
2) 'SoftMAC' or just radio. These types of devices are just radio transceivers
|
|
2) 'SoftMAC' or just radio. These types of devices are just radio transceivers
|
|
possibly with some kinds of acceleration like automatic CRC computation and
|
|
possibly with some kinds of acceleration like automatic CRC computation and
|
|
comparation, automagic ACK handling, address matching, etc.
|
|
comparation, automagic ACK handling, address matching, etc.
|
|
@@ -106,7 +104,7 @@ Fake drivers
|
|
|
|
|
|
In addition there is a driver available which simulates a real device with
|
|
In addition there is a driver available which simulates a real device with
|
|
SoftMAC (fakelb - IEEE 802.15.4 loopback driver) interface. This option
|
|
SoftMAC (fakelb - IEEE 802.15.4 loopback driver) interface. This option
|
|
-provides possibility to test and debug stack without usage of real hardware.
|
|
|
|
|
|
+provides a possibility to test and debug the stack without usage of real hardware.
|
|
|
|
|
|
See sources in drivers/net/ieee802154 folder for more details.
|
|
See sources in drivers/net/ieee802154 folder for more details.
|
|
|
|
|
|
@@ -125,17 +123,15 @@ to support the IPv6 minimum MTU requirement [RFC2460], and stateless header
|
|
compression for IPv6 datagrams (LOWPAN_HC1 and LOWPAN_HC2) to reduce the
|
|
compression for IPv6 datagrams (LOWPAN_HC1 and LOWPAN_HC2) to reduce the
|
|
relatively large IPv6 and UDP headers down to (in the best case) several bytes.
|
|
relatively large IPv6 and UDP headers down to (in the best case) several bytes.
|
|
|
|
|
|
-In Semptember 2011 the standard update was published - [RFC6282].
|
|
|
|
|
|
+In September 2011 the standard update was published - [RFC6282].
|
|
It deprecates HC1 and HC2 compression and defines IPHC encoding format which is
|
|
It deprecates HC1 and HC2 compression and defines IPHC encoding format which is
|
|
used in this Linux implementation.
|
|
used in this Linux implementation.
|
|
|
|
|
|
All the code related to 6lowpan you may find in files: net/6lowpan/*
|
|
All the code related to 6lowpan you may find in files: net/6lowpan/*
|
|
and net/ieee802154/6lowpan/*
|
|
and net/ieee802154/6lowpan/*
|
|
|
|
|
|
-To setup 6lowpan interface you need (busybox release > 1.17.0):
|
|
|
|
-1. Add IEEE802.15.4 interface and initialize PANid;
|
|
|
|
|
|
+To setup a 6LoWPAN interface you need:
|
|
|
|
+1. Add IEEE802.15.4 interface and set channel and PAN ID;
|
|
2. Add 6lowpan interface by command like:
|
|
2. Add 6lowpan interface by command like:
|
|
# ip link add link wpan0 name lowpan0 type lowpan
|
|
# ip link add link wpan0 name lowpan0 type lowpan
|
|
-3. Set MAC (if needs):
|
|
|
|
- # ip link set lowpan0 address de:ad:be:ef:ca:fe:ba:be
|
|
|
|
-4. Bring up 'lowpan0' interface
|
|
|
|
|
|
+3. Bring up 'lowpan0' interface
|