ZigBee Transceiver

The IEEE 802.15.4 transceiver resembles a complete network stack that is fully interoperable with the Contiki operating system. Similar to TinyOS, Contiki is an operating system for sensor networks and the Internet of Things that is used in many research projects and deployments.

WiFi Reception


Contiki comes with Rime, a light-weight modular network stack. With our GNU Radio transceiver, we support broadcast, unicast, and reliable unicast connections.

Sockets can be open easily from within GNU Radio Companion. This can be done by adding the sockets port to the list corresponding to the connection type. This might be best described with a screencast.

Note: Port numbers below 128 should not be used as they are reserved for system services.

TelosB Firmware

To ease interoperability testing with normal sensor motes, we included a firmware for the popular TelosB sensor motes. The firmware can be found in the contiki folder. It can be compiled with the Makefile after adapting the CONTIKI variable to point to your local installation.

The firmware allows to

  • Start/stop periodic broadcasts transmissions by pressing the button
  • Monitor received broadcasts through the onboard LEDs
  • Sending and receiving of data through the command line interface of the mote (make login).

The physical channel can be configured in the project-conf.h file.


Sent and received frames can be monitored with Wireshark by enabling the Wireshark Connector block and the File Sink in the flow graph. By default, this will dump all frames to a PCAP file that can be open with Wireshark.

Dumping the frames into a file is not very interactive and requires reloading the file in Wireshark to check if new frames arrived. Fortunately, it is also possible to get live updates as well, by

  • Changing the Append option of the File Sink from Overwrite to Append.
  • Creating a FIFO, for example, with mkfifo /tmp/zigbee.pcap.
  • Making Wireshark read from the FIFO through wireshark -k /tmp/zigbee.pcap.

We also include a custom Wireshark dissector for Rime frames, which can be found in the utils folder. The dissector is enabled by extending the Wireshark config in ~/.wireshark/init.lua with


or by adding the script as a command line argument when starting Wireshark

wireshark -X lua_script:/path/to/gr-ieee802-15-4/utils/rime.lua