wiki:Motescope

Motescope Testbed

The Motescope testbed is a project to build a large networking testbed with fine-grained energy metering. It is built around the  epic platform and will be located throughout Soda and Sutardja Dai Halls at UC Berkeley.

The testbed is currently under development and not open for public access; if you are still interested please contact Albert Goto or Stephen Dawson-Haggerty. If you are already a user, please verify that you are subscribed to  motescope-users so you can receive notifications and coordinate access to the testbed.

README

All of the testbed utilities are located in /project/eecs/tinyos/tools; the text below references this directory. The testbed head node is smote.

See also: QuantoTestbed for information and links on using Thomas Schmidt's Managed Node Interface (MNI).

Toolchain

This directory contains a local install of up-to-date versions of the tinyos build system for smote. You should put the tinyos tree you would like to use somewhere else.

Add the appropriate path entries by sourcing tinyos.sh:

$ . /project/eecs/tinyos/tools/tinyos.sh

This includes:

  • nescc 1.3.2
  • tinyos tools from tinyos-2.1.1
  • mspgcc4 4.4.5(20101114) (a new compiler)

If you want to use the older msp430 compiler (3.2) you may, but it's very old. Since I haven't had many problems with mspgcc4 so far, I'm not going to bother installing it here at the moment; however, there is a copy installed in ~stevedh/tools/msp430/bin/ which you should be able to use -- I don't feel like recompiling it here.

SDH : NOTE : older tinyos trees don't include the required separator to work with unmodified gcc -- later versions put it in the default makerules. You should add -fnesc_separator=__ to your PFLAGS; this should work with most reasonably recent tinyos trees.

Testbed Tools

Useful utilities are also present in 'testbed/bin'; this directory is added to your path by sourcing tinyos.sh

alive : print which testbed motes are alive, as determined by pinging them

mkmniconfig : generate an MNI (Managed Node Interface) config file, using alive or a list of (ip, serial port) pairs from stdin

pquanto : program the testbed using the compiled code in the current directory.

logprintf : connect listeners to the serial ports of all the motes, and log the output to file.

ul2 : listen to printf messages sent using PrintfUART.h.

mapping : print information about the mac address, ip address, serial port, and location for each node

Programming

It's pretty easy to program the testbed, however you need to use something like 'pquanto' to do this (you can't just do make install, even though it looks like this would work). The reason is the serial port settings on the digi need to be changed before and after programming.

To use pquano, generate an MNI config file. The simplest way to do this is to just do

$ mkmniconf > all.conf

which will generate a config file for all motes in the testbed. Then just do a

$ pquanto all.conf

Usually a couple of them don't work when you do it this way. Obviously you can make smaller config files; mkmniconfig accepts input formatted like the output of 'alive'; since generating the config files by hand is a bit of a pain you might want to go that way...

Resources

People

  • Prabal Dutta
  • Albert Goto
  • Stephen Dawson-Haggerty