TinyOS-2.x on Zigbit – Baud rate mismatch

We tried to use TinyOS on Meshnetics Meshbean modules based on Zigbit module containing both microcontroller and radio transceiver. Fortunately a port was made available as a contributed code. I got many student group to start using TinyOS on Meshbean modules. However no one could get the UART communication through USB port working and all the projects which needed this got stalled. I took up this task as I got little free now to figure out what may be happening. It looked like a Baud Mismatch problem since we were received some characters but no baud rate setting was making it come right.

I think I have now understood the problem and however need to try it out tomorrow to make sure that my guess is correct. I am writing it up now and would verify later.

TinyOS port by Distributed Computing Group, ETH used JTAG interface to download firmware into the Meshbean module. This had the capability of programming fues bit as well. What we have been doing is to use Serial Bootloader to program the modules. This does not have the capability of programming the fuse bits. My guess it that due to this the Baud Rates do not match to the right value since clock related fuse does not get set appropriately. I also noticed the default settings of fuse bits are different in Meshnetics software as compared to TinyOS :

Meshnetics : 0xFF, 0x9D, 0x62.

TinyOS : 0xFF, 0x99, 9xE2

So Meshnetics default settings may not work specially since CKDIV8 is the most significant bit of low fuse byte (0x62 vs 0xE2) and can have impact on the clock rate.

I plan to use Dragon to do JTAG programming of Meshbean modules and verify my guess! If it works, we can work on doing Time Synchronization development for seismic measurements.

[Added later : My hunch was correct. Dr Philipp Sommer, who is managing TinyOS port on meshbean also confirmed same. I adjusted some parameters based on his suggestion and it nearly works now. Would update more details in a separate blog.]