User login

Isabelle Sheffield's blog

13

Feb

2015

This week I spent time tidying up code, my Wiki page, and committing code changes to Mercurial. Did a bit of testing on my current set-up to test the reliability of pinging to clients (as packet loss was high). Seems that packet loss occurs very early on and then becomes more stable over time.

There are NS (Neighbour Solicitations) being sent by the gateway onto the network every 10 seconds. I'm still unsure as to why this is necessary and have tried modifying the code to increase the retransmit time (this resulted in a 20 second interval between each NS), and removing it completely but then I was unable to ping the gateway device. Either there is a reason for this functionality or there is a bug.

I have also had a look into microCoAP (CoAP server which runs on Linux) and have it running on my machine, but have not been able to communicate to it from the WSN. Ideally we would want the CoAP server running on Linux.

09

Feb

2015

This week I successfully setup a network communicating with CoAP. I've modified the client code of contikis er-rest-example.c to send CoAP posts to the 6lbr CoAP server. The CoAP server on 6lbr has been modified to handle the incoming light resource from the sensor nodes and prints out the light sensor value and the MAC address of the sender. From the debugging output the incoming packets appear to be received by 6lbr at irregular time intervals - this will need to be investigated further. Ideally the 6lbr server will receive packets every 10 seconds (this is the time interval set on the sensor nodes).

03

Feb

2015

This week I looked further into the contikimac driver. Found out that contikimac does not work properly when 6lbr is in smart bridge mode. I programmed 6lbr and the sensor node to use contikimac RDC driver and CSMA MAC driver, but with contikiMAC enabled I was then unable to ping the 6lbr device nor the sensor nodes and unable to access the 6lbr webpage. With further research I could not find anyone who had configured 6lbr in smart bridge mode with the contikimac driver, which makes me think that contikimac doesn't work with smart bridge mode (only router mode). I also spent some time looking into contikis real timer (rtimer) as an alternative method to turn off and on the radio to conserve power, and have started writing code for this. Next week I will be focusing on the CoAP protocol and setting up the network with a CoAP server (on 6lbr) and client (sensor node) which sends requests to the server for sensor data. Aim is to modify the client code on the sensor device to have it post sensor data to the server on the 6lbr device.

19

Jan

2015

Looked at how to auto configure the IP address of the 6lbr router device on the Ethernet side of the network. Discovered that “smart bridge” mode for 6lbr auto configures an IP address based on the prefix obtained from the "home" router and the MAC address. I now have 6lbr set up as a smart bridge, and from the 6lbr website and logging output I can see that the IP addresses for the 6lbr device and WSN devices are auto configured.

From my Linux machine I can ping to the devices on the WSN network and view the website on the 6lbr webserver. By using the USB dongle and a simple python script to pipe packets through to Wireshark I can view packets being transmitted on the WSN.

Next step is to look into the contikiMAC driver and how to configure the wakeup and sleep times; taking into consideration router timeouts.

12

Jan

2015

Now working at Virscient on the project. This week I worked alongside Dean, setting up the test environment for programming the devices and creating a simple test network.

We have set up a Linux computer, which is connected to an IPv6 router via Ethernet. The IPv6 router is connected to a server (called "Convincing John") to allow safe connectivity to the internet. On the Linux computer is a python script which creates a tap interface so that we can read and write packets from the WSN to Ethernet and vice versa by bridging the Ethernet and tap interface. On the WSN side we have a cc2538 device with 6LBR acting as a router, which has been modified to output packet information to be printed (for debugging purposes) and written to the Ethernet interface by the python script. The python script is used to read packets coming in from the serial on the WSN and write to Ethernet (IPv6 router), and in the reverse direction reads packets coming in from the Ethernet side and writing to the serial to the cc2538 device.

15

Dec

2014

By removing DTLS I could communicate with the CoAP server (cc2538 device) via the Copper client on my host VM. I can get the uptime, and turn on and off each led light on the device.

I've been testing the er-rest-server and er-rest-client code provided by contiki (which uses the CoAP protocol) on the devices to understand what works with the cc2538 devices and to get a better understanding of the code. Aim is to have the devices wake up at regular time intervals and publish their data to a CoAP server (on the 6lbr router) then sleep after receiving an ACK to conserve power.

Did a bit of research into the contikiMAC driver which allows the radio on the device to be switched off for more than 99% of the time whilst still being able to relay packets. This would be ideal to further limit power consumption in the WSN.

09

Dec

2014

After the meeting this week it was decided to implement 6lbr as a router to allow routing to IPv6 and IPv4 addresses. I have flashed the cc2538 devices with 6lbr-demo code configured as a CoAP server over DTLS, and installed the Copper add on to firefox on my host VM. From my host VM I can ping to the devices on the WSN and view the 6lbr webpage which now has an active link to the CoAP server for each device. Having difficulty getting the CoAP client communicating with the CoAP servers, will look further into this next week.

Also had a look at the MQTT protocol as an alternative to CoAP, but given MQTT does not map to HTTP nor is supported by contiki, it makes more sense to use CoAP. LWM2M (OMA light weight M2M), a simple protocol and standard device management interface can be built on top of CoAP, thus it would be ideal to have LWM2M on top of CoAP for my devices communicating over the WSN.

02

Dec

2014

Got Wireshark working using a python script to capture packets from the USB dongle and pipe them to Wireshark.

Set up the network so that both VMs shared the same wifi hot spot. From my phone I could access the routers web interface via WiFi connection. Been looking into 6lbr router code and 6lbr-demo code to get an idea of how to implement the 6lbr border router as a bridge and devices as a CoAP server. Next week I plan to get the devices communicating using the CoAP protocol with DTLS using contiki example code, each device in the network will act as a web server to display sensor data on request from a CoAP client (which will be my host VM using the Firefox browser and Copper add on (Copper is a protocol handler for CoAP to interact with the Internet of Things)).

27

Nov

2014

Got the USB dongle packet sniffer working with SmartRF sniffer software to detect packets on my 6LoWPAN test bed.

Installed 6LBR (boundary router) onto a VM attached to a cc2538 device acting as a slip radio - this required hardware specific code as it wasn't supported by 6lbr, as well as updating the Makefile and source files to compile with cc2538. Also fiddled around with the configuration settings (RF channel, PAN ID, drivers) of my device running 6lbr-demo example code, 6lbr router (on VM) and slip radio to get everything working together.

To check the ethernet side of my boundary router I set up another VM (host VM) which could ping to the router VM and access the 6lbr router website. This displayed information about devices on the network, packets sent and an RPL (routing protocol for low-power and lossy networks) tree (DODAG). From the host VM I can ping packets to the device on the 6LoWPAN network using the address given for the device on the 6lbr website.

26

Nov

2014

Read Brad Christensens Report "Building a Network for the Internet of Things with the Constrained Application Protocol" to point me in the right direction for my research. Had a meeting with Dean Armstrong at Ruakura to discuss the software and protocols to use and get a basic idea of what we expect to achieve from this project.

After installing all the software needed I looked into implementing a boundary router.

Created a 6LoWPAN (IPv6 Low-power Wireless Personal Area Network) test bed consisting of an rpl border router (cc2538 device flashed with example code) connected to a VM via UART using the SLIP protocol. The router forwarded UDP packets to a cc2538 device flashed with udp-echo-server example code (provided by contiki). From the VM I could ping to the device and access the border router webpage which displayed the neighbouring device.