Thursday, November 14, 2013

Erase Telosb Motes

tos-bsl --telosb -c /dev/ttyUSB0 -e

Wednesday, November 13, 2013

Linux/Unix Basic (but useful) Commands

Split the file into parts
  1. Find out how many lines do you have in your file. 
  2. Know how many parts you require. 
  3. Accordingly apply this command in your terminal: split -l 10000 filename (Here 10000 is the no of lines in my files. So if I have 20000 lines in my file, and if I issue above command, then my file will be divided in two parts.)
Change directory folder with spaces

If I have my folder as /home/jenis/folder name/


cd /home/jenis/folder\ name

cd /home/jenis
cd "folder name"

Thursday, November 07, 2013

Funny bug about teamviewer

I was having some problems with using teamviewer lately. Sometimes, when I switch window from Remote computer to local computer, I was not able to key anything in the remote computer. Teamviewer (or whatever) was behaving as if teamviewer is not running at all. Finally, I thought that let me see if any of my keys are having some problems ( I figured this out as I had used old 90s computers where keyboards were different than what we have right now. During that time too, there was a similar problem, if some key is halt or jammed, if you try to type in anything, you won't be able to type.)

So, anyway, if you find similar problem with teamviewer, try holding "Alt" key for 2-3 seconds and your problem would be resolved. I would be curious if someone knows the exact reason behind it. Anyway, enjoy. 

Matlab Tricks

MATLAB tricks.

1. If you have two cell arrays, you can concat them together using concat(c1,c2);
2. To delete element from Vector (or Double matrix), Use:
b = a(a~=3);

Output: [1,2,4,5]

3. To remove space between string, 

Thursday, September 19, 2013

Provide access to USB devices

I have been having problem with accessing USB devices I use in the lab. Whenever I unplug device and plug it again, it always cries for providing admin access. So here is what I did :

jenis@Jenis-Laptop:~$ ls -al /dev/ttyUSB0

crw-rw---- 1 root dialout 188, 0 Sep 19 12:15 /dev/ttyUSB0

Add your user to dialout group by using :

"sudo adduser jenis dialout"

And you are done. Restart/Re-log your machine.



Thursday, September 12, 2013

Learning Hadoop/Map-Reduce

Trying some hands on this new technology, had worked on one of the projects long back. So trying to get those details back. Meanwhile, came across this simple example of Map-Reduce, thought of sharing:


Friday, September 06, 2013

Interesting fact about finding perl array size

Recently, I came across a problem with Perl array. I was assuming that these three methods generate same output for finding array size, but I am WRONG :

my @newArray = (2);
print scalar @newArray;   #1
print $#newArray; #2
print @newArray; #3

First and third give me proper values, but second gave me 0 size. So be careful, while using it. I would recommend using "scalar @newArray".

Here is some explanation on it :


Friday, August 30, 2013

Tuesday, August 27, 2013

Cannot insert perl array in database

I recently came across a problem where my perl array was generating some random value in MySql query. I finally figured out that, you have to convert perl array to string first and then can insert in the database. Here is how you can do it:

my @arrayData = ("aaa","bbb","ccc");
my $ArrayString = join " ", @arrayData;

use above variable in MySql query.


Thursday, August 01, 2013

Add variable in TinyOS symbol table

  1. Add uint_8 volatile myVar=255; in Implementation.
  2. In boot method, add myVar+=1;
  3. Use this command to check if symbol is added: tos-set-symbols --read /build/telosb/main.exe
  4. Change value of variable using:tos-set-symbols --objcopy msp430-objcopy --objdump msp430-objdump --target ihex build/telosb/main.ihex build/telosb/main.ihex MoudleName__myVar=30 TOS_NODE_ID=5 ActiveMessageAddressC__addr=5
  5. Run your ihex file. 

Thursday, May 23, 2013

Perl display time and date

To display time and date in perl use:

use POSIX qw(strftime);
print strftime("%a, %d %b %Y %H:%M:%S %z", localtime(time())) . "\n";

Note: you might need to install date time module.  sudo apt-get install libdatetime-perl 

Wednesday, May 22, 2013

Best way to debug in TinyOS

Today I realized one thing in TinyOS. The best way to debug something in TinyOS is "LEDS". I was trying to setPower() on transmitter and then tried to receive node's power using getPower() - it did not give me the same value. Instead it gave me "0". I banged my head for so much of time and later (still not 100% sure) realized that, CC2420Packet.getPower() does not return the same value as CC2420Packet.setPower().

Another problem I faced was with using "printf". I couldn't find much help on "printf". So, I finally gave up , started debugging my code by comparing value and if condition is true than blink LED else turn off LED.

So, my advice to all newbees would be to use "LEDS" to debug instead of depending on something else. 

Tuesday, March 26, 2013

Motelab Problem with Sender Address (Wireless Sensor Networks)


From last few days, I have been getting a weird problem with my research work. I had written one simple application which was sending packets from Radio To Serial. I developed the application, so that I can check channel diversity. I was getting a sender address from AMPacket.source() method. This code worked fine when I deployed application manually into 3-4 motes, but when I deployed the application in Harvard's Motelab, I got this weird error. Instead of getting actual address of motes, I got "1" as sender address. 

I did search a lot on Google, but couldn't get any satisfying answer. Finally, I received a link - which tried to put some limelight on the problem, but wait a second - the link actually just told that there is a problem with Motelab's configuration - but did not give a solution to that ( at least I couldn't understand). 

Finally, I got solution from Olaf Landsiedel, who provided me his blog's link. That's exactly I was looking for. 

So, whenever anyone gets error with Sender address in Motelab - Please use below code in your starting method and you will be done. 

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

Enjoy.  Let me know your views if this resolves your issue.