Thursday, November 12, 2015

How to build DTLS example for SmartRF06EB+CC2650EM in Contiki 6LowPAN

The following steps show you how to build DTLS example for SmartRF06EB+CC2650EM in Contiki 6LowPAN.

On SmartRF06EB+CC2650EM side:

1. Do "git clone --recursive" to get source code of 6lbr which contains DTLS examples.

2. Do "git clone --recursive" to get Contiki source code

3. Copy folder "6lbr-demo" under "\6lbr\examples\" to "\contiki\examples"

4. Copy folder "tinydtls" under "\6lbr\apps\" to "\contiki\apps\"

5. Revise "#include "debug.h"" to "#include "../../../../apps/tinydtls/debug.h"" in \contiki\examples\6lbr-demo\apps\dtls-echo\dtls-echo.c.

6. Go to directory "\contiki\examples\6lbr-demo" and do "make TARGET=srf06-cc26xx clean" to clean up things.

7. Do "make TARGET=srf06-cc26xx WITH_TINYDTLS=1 WITH_DTLSECHO=1 6lbr-demo.bin" to get 6lbr-demo.bin which contains DTLS echo application for SmartRF06EB+CC2650EM.

8.  Download 6lbr-demo.bin to SmartRF06EB+CC2650EM using Flash Programmer 2.

9. Turn on SmartRF06EB+CC2650EM to join 6lbr Edge Router. If you connect UART to SmartRF06EB, you would see output like the followings:

On VMPlayer side:

1. Download tinyDTLS from and untar it to your home folder in Contiki VMPlayer. When I test this, it is tinydtls-0.8.2.

2. Open a terminal and go to "/tinydtls-0.8.2/" folder.

3. Do "./configure" and "make".

4. You will get dtls-client in "/tinydtls-0.8.2/test" folder.

5. If your network interface is eth0, run the following commands in terminal.

    sysctl -w net.ipv6.conf.eth0.accept_ra=1
    sysctl -w net.ipv6.conf.eth0.accept_ra_rt_info_max_plen=64
    route -A inet6 add aaaa::/64 gw bbbb::100

6. Run "./dtls-client aaaa::212:4b00:695:8605" in "/tinydtls-0.8.2/test" folder and you can send something to dtls-server on aaaa::212:4b00:695:8605. You will see echo from dtls-server running on SmartRF06EB+CC2650EM with aaaa::212:4b00:695:8605 as IPv6 address.

Wednesday, November 11, 2015

How to build/set Contiki rpl-border-router on SmratRF06EB+CC1350EM and run tunslip6

The following steps show how to build/set Contiki rpl-border-router on SmratRF06EB+CC1350EM and run tunslip6 in Contiki VMPlayer.
1. Go to "/contiki/examples/ipv6/rpl-border-router" directory and change "#define DEBUG DEBUG_NONE" to "#define DEBUG DEBUG_PRINT" in border-router.c. Also remember to add "#define RF_CORE_CONF_CHANNEL 25" in project-conf.h to set default channel to 25 (If you don't add this, it will use channel 0 which is defined in contiki-conf.h under /contiki/platform/srf06-cc26xx. It might have problem that a SensorTag use channel 25 to join later.)

2. Do "make TARGET=srf06-cc26xx BOARD=srf06/cc13xx" in terminal and you will get border-router.bin. Download border-router.bin to your SmratRF06EB+CC1350EM with Flash Programmer 2.

3. Connect USB cable and turn on SmratRF06EB+CC1350EM.

4. Run the following commands in Linux terminal of Contiki VMPlayer to enum ttyUSB0 and ttyUSB1 under /dev
    sudo modprobe ftdi_sio vendor=0x403 product=0xa6d1
    sudo chmod 777 /sys/bus/usb-serial/drivers/ftdi_sio/new_id
    sudo echo 0403 a6d1 > /sys/bus/usb-serial/drivers/ftdi_sio/new_id

5. Go to "/contiki/tools" directory and do " make tunslip6"

6. Run "sudo ./tunslip6 aaaa::1/64 -s /dev/ttyUSB1" and you will see tunslip6 running.

7. Press "EM RESET" button on SmratRF06EB to make rpl-border-router reset to dump
 Server IPv6 addresses which is aaaa:212:4b00:7c6:2b02 in my test.

8. Open FireFox in VMPlayer and go [aaaa:212:4b00:7c6:2b02]. You will see the web page of rpl-border-router.

9. Start a CC1350 SensorTag and you will see it joins rpl-border-router. The IPv6 address of my CC1350 SensorTag is aaaa::212:4b00:7c7:bf02 in my test.

10. Use coap://[aaaa::212:4b00:7c7:bf02] to access coap server on CC1350 SensorTag.