Thanks for the reply. I finally locate the cause of my problem. When
the routing engine initializes, it calls AMPacket.address() to
determine its ID. But in Motelab, AMPacket.address() returns 1 for all
the nodes instead of their actual ID, and node 1 is not a root node.
Since there is no root node, no routing tree can be established.

I fixed the problem by setting the node's ID to TOS_NODE_ID. But the
reason of why AMPacket.address() returns 1 is no clear to me. My guess
is that TOS_AM_ADDRESS is not set when Motelab programs its nodes, so
TOS_AM_ADDRESS just defaults to 1.


On Mon, Mar 22, 2010 at 12:06 AM, Omprakash Gnawali
<> wrote:
> On Sat, Mar 20, 2010 at 5:46 PM, Tao Liu <> wrote:
>> Hi,
>> I am trying to run apps/MultihopOscilloscope on Harvard's Motelab
>> testbed, but no radio message is delivered to the root node.
>> The only change I made is to set the root node manually in
>>   event void SerialControl.startDone(error_t error) {
>>     if (error != SUCCESS)
>>       fatal_problem();
>>     // This is how to set yourself as a root to the collection layer:
>>     // if ( % 500 == 0)
>>    // set root manually
>>     if ( == 41)
>>       call RootControl.setRoot();
>>     startTimer();
>>   }
>> I verified the program locally, and it was working with 3 nodes. I
>> also dumped the debug messages from Motelab, it seems that nodes can
>> not hear each other and no route is established. Could someone give me
>> a pointer about why does it happen?
> If the motes don't have sensors, readDone does not get called. Do
> those motes have sensors?
> The particular sink can also be disconnected from the network.
> - om_p

Tinyos-help mailing list

Reply via email to