Last week, I ran a number of experiments on motelab, the telosb testbed in Harvard. During the experiments, some radio messages could not be delivered.

Digging into the details, the following problem showed up: Normally, the motelab installer sets TOS_NODE_ID and AMAddress of the sensor node. However, end of last year TinyOS changed the variable and function name separators from “$” to “__”. However, motelab still seems to run the old programming tools that expect dollars instead of underscores. As a result, motelab cannot set the AMaddress of the sensor node, it stays as one (1). Hence, the node does not receive the messages intended for it…

Quick fixes (next to changing the scripts at motelab), are:

1. Set AMaddress to TOS_NODE_ID during bootup (wiring to ActiveMessageAddressC):

call ActiveMessageAddress.setAddress
(call ActiveMessageAddress.amGroup(), TOS_NODE_ID);

2. You should be also be able default to the old seperatpors via:

PFLAGS += -fnesc-separator=$

However, be careful when using locally connected sensor notes in this case:  “msp.rules” seems to hardcode

AMADDR = ActiveMessageAddressC__addr.

This problem has also been mentioned on the mailing list: