This project contains tools for use in IEEE 802.15.4 Wireless Sensor Networks. These tools allow the manipulation of MAC 802.15.4 frames, setting up a sniffer, injecting and replaying traffic directly from the command line. These act as clients for transceivers which are connected through UART by means of a dedicated protocol. They can be adapted to various transceiver as long as you can write a firmware for them which read/write frames and commands on UART using the underlying protocol. It is distributed under the terms of the GNU General Public License version 3.


Note that we are currently working on the new version of WSN-Tools. In particular this new version will include a redesign of the protocol. This new protocol will not be compatible with the current version and requires an update. Discussions about the new protocol are still open and comments are welcome on the mailing list (see below).


You can pull the code directly from git :

$ git clone git://
$ cd wsn-tools
$ make
$ sudo make install

Tarballs are also available at
Though you can only get tagged versions from the master branch, which may be older than what you'll have through git.


Note that code has already been made to abstract the protocol in your firmware so that it only cares about the transceiver manipulation (i.e. sending and receiving frames) and UART interrupts. The repository only contains the abstraction code now. Complete example of firmwares will be added in the future. The firmware used for development uses a MRF24J40 transceiver driven by an AVR ATmega328P microcontroller. Albeit it is not clean enough to be included in the repository. Other examples are welcome.

You may still download the original firmwares here:

You are strongly recommended to try your own firmware and send it by mail if you feel it could serve as an example. The source code is provided as is and may not even compile. Again I will not fix it. Time would be better spent building a new and simplier firmware. The resulting hex files are provided for each of them. The role of each should be pretty straightforward.

Mailing list

We use a mailing list to discuss change to the program, patches, bugs, announce release and answer questions.

You can also access the web interface and archives at

A few notes about using the mailing list: