Skip to content
kkrentz edited this page Jun 18, 2019 · 12 revisions


Coordinated sampled listening (CSL) is a standardized MAC protocol for IEEE 802.15.4 networks. The rationale of CSL is to send a stream of wake-up frames prior to an actual payload frame. Each wake-up frame essentially contains the time when the transmission of the payload frame will begin. This hint enables the receiver of a wake-up frame to sleep until the transmission of the payload frame is about to begin.


This CSL implementation can be configured in one of two ways. First, it is possible to completely adhere to the standard. However, due to security vulnerabilities, this configuration is only meant for testing and research purposes. Second, it is possible to enable additional security measures that were developed at the HPI.

Standards-Compliant Version

For the standards-compliant configuration, add the following line to your project-conf.h

/* auto-configures the MAC layer */
#include "net/mac/csl/csl-autoconf.h"

Finally, in your Makefile, insert:


Secure Version

For the secure configuration, add the following two lines to your project-conf.h:

#include "net/mac/csl/csl-autoconf.h"
#define AKES_SINGLE_CONF_KEY { 0x00 , 0x01 , 0x02 , 0x03 , \
                               0x04 , 0x05 , 0x06 , 0x07 , \
                               0x08 , 0x09 , 0x0A , 0x0B , \
                               0x0C , 0x0D , 0x0E , 0x0F }

and the following lines to your Makefile:

MODULES += os/services/akes


Three parameters should be adapted to your radio environment:

/* There are 16 IEEE 802.15.4 channels available: 11, 12, 13, ..., 26.
   Choose a subset like follows (number of chosen channels must be a power of 2): */
#define CSL_CONF_CHANNELS { 15 , 20 , 25 , 26 }
/* If the CCA threshold is too low, IEEE 802.15.4 nodes may end up sending never. */
#define CSL_CONF_CCA_THRESHOLD (-70) /* dBm */
/* The output power defines the communication range. */
#define CSL_CONF_OUTPUT_POWER (0) /* dBm */


The secure configuration of CSL features:

  • Low base energy consumption, e.g., 0.5% duty cycle when waking up 8 times per second
  • Low energy consumption at the sender side by learning the wake-up times of neighboring nodes, as well as the clock drifts compared to neighboring nodes
  • Burst forwarding for better throughput
  • Channel hopping and acknowledged broadcast frames for higher reliability
  • High MAC layer security
    • Authentication and encryption of frames via pairwise session keys
    • Advanced replay protection, i.e., even delayed frames are recognized as replayed
    • Denial-of-sleep-resilient medium access control and pairwise session key establishment

Code structure

  • os/services/akes
    • The protocol for establishing session keys
  • os/net/mac/csl
    • The CSL MAC protocol

Supported Platforms

Presently, only CC2538-based platforms are supported.

Further Reading

Clone this wiki locally
You can’t perform that action at this time.