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.
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.
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
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
mkfifo /tmp/zigbee.pcap
.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
dofile('/path/to/gr-ieee802-15-4/utils/rime.lua')
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