Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • Jan 28 13:09
    arurke closed #2365
  • Jan 28 13:09
    arurke locked #2365
  • Jan 28 13:06
    arurke closed #2394
  • Jan 28 13:06
    arurke locked #2394
  • Jan 28 13:01
    slcmcu commented #2394
  • Jan 28 13:00
    slcmcu opened #2394
  • Jan 27 18:07
    arurke commented #2389
  • Jan 27 17:51
    arurke synchronize #2390
  • Jan 27 17:43
    arurke commented #2387
  • Jan 27 13:58
    atiselsts commented #2387
  • Jan 27 10:23
    atiselsts opened #2393
  • Jan 24 15:10

    nfi on develop

    Fix broken links in the documen… Merge pull request #2391 from n… (compare)

  • Jan 24 15:10
    nfi closed #2391
  • Jan 24 14:59

    nfi on develop

    Rearranged the tutorial order s… Merge pull request #2392 from n… (compare)

  • Jan 24 14:59
    nfi closed #2392
  • Jan 24 14:52
    nvt synchronize #2391
  • Jan 24 14:52
    nvt synchronize #2391
  • Jan 24 14:50
    nvt synchronize #2391
  • Jan 24 14:41
    nvt synchronize #2391
  • Jan 24 14:04
    nvt opened #2392
Mohammad-Reza feyzi
@jones199
hi Developpers . Could you tell me how how to use TSCH with UDP client and server mote in contiki .best Regards
6 replies
btgwynn
@btgwynn
Hello Developers. Can a Contiki NG node be a Root of one RPL instance and a child in another? I saw this presentation:www.ietf.org/proceedings/94/slides/slides-94-rtgarea-1.pdf, which says a node can be a router in one instance and a leaf in another, and I know that isn't quite the same as what I am asking. I put together a test to try. In Cooja, I made two nodes, each using the rpl-border-router example configured to use RPL classic in storing and multicast mode, but with different default instance IDs and different prefixes. Both border routers connect to a Ubuntu host via tunslip. I have RPL logging set to DBG. When I run the simulation I see the nodes exchange DIOs, each joins the other's DAG, and each have IP addresses with both prefixes. However, if I ping from the host I don't get a ping response, but do see warnings from both nodes that a loop is detected. Is there something I am missing in my configuration to allow a root of one DAG in one instance participate as a child in a DAG on another instance? I see that uip configuration is set to act as a router by default, so it seems like that I have done should be able to be handled.
2 replies
salmeghlef
@salmeghlef
Hello guys, Is there a demo on how to use the native platform for contiki based motes to simulate client-server networking ?
11 replies
salmeghlef
@salmeghlef
Screen Shot 1444-04-14 at 9.39.19 PM.png
Screen Shot 1444-04-14 at 9.39.19 PM.png
safiyagul
@safiyagul
hello all can anyone guide me on how to generate heterogeneous traffic in RPL using Contiki -ng
safiyagul
@safiyagul
@jones199 are u able to balance the traffic load by changing DIO?
1 reply
Mohammad-Reza feyzi
@jones199
hi Developpers . Please tell me how to calculate and plot the metrics such as : PDR,Latency and ... from the cooja log files. Best Regards
11 replies
safiyagul
@safiyagul
for calculating PDR , PDR = (∑ received packets by destination/ ∑ sent packets by the source ) *100%. you have to check the log file line by line to see how many packets has been sent and how many received.
similarly for the latency, you have to check the time at which first hello message has been sent by which node
Ivanilson França Vieira Junior
@ivanilsonjunior
image.png

Thinking aloud to open a discussion regarding metrics (PDR):

I have been researching TSCH scheduling and realized that PDR might hide network issues; for example, disconnections may occur in TSCH networks, and after a while the queue is full, and the S.O. notifies the app that it cannot generate data (at least until the link is restored). Disconnections may happen due to failure in node synchronization(IEEE Std 802.15.4 - Section 6.5.4.2). But, the PDR calculus is only performed over the generated and sent data. IMHO, PDR is an excellent measure to assess links, paths, etc. But, it could hide some TSCH issues as MAC disconnections. That's why I relate the PDR with the Expected Generated Packages: Simulation Time, Warmup time and the nodes sending interval (All nodes except root generates).

I don't know if I have explained my point clearly or if my reasoning is correct, but I think it is interesting.

Mohammad-Reza feyzi
@jones199
Hi Developpers i have some problems in TSCH . i Wrote the program an codes and compiled very well but unable to send the data to the sink . please help me. best regards
4 replies
Screenshot from 2022-11-12 05-18-49.png
salmeghlef
@salmeghlef
how to show the sign ">" on a running hello-world example and start typing some commands just like in the attached screenshot:
Screen Shot 1444-04-19 at 10.11.29 PM.png
2 replies
CPA-Aarts
@CPA-Aarts
Is it possible to send a message not to root but just the parent with RPL-Lite. I would say so since it is upward routing / non-storing, but I cannot find info or a get_parent_ipaddr()function in the documentation.
3 replies
Aditya Sadawarte
@addy419
Hi, I am trying to find the current parent in RPL-Lite. How do I do that? I want to make a graph of latency (group by hop neighbourhood) from sink
9 replies
CPA-Aarts
@CPA-Aarts
generic question: what is the quickest procedure to testing updated code in the cooja simulation? Right now I reload the simulation, but when I work with multiple mote types (e.g. server/client) , the reload causes all nodes to be set to a single type. Perhaps there's a faster way to debug, test and experiment?
2 replies
Dr Automaton
@ekawahyu
@CPA-Aarts It was a bug in Cooja I reported about 4 weeks ago. Please take a look at this PR that has the fix for it: contiki-ng/cooja#682
2 replies
CPA-Aarts
@CPA-Aarts

vmplayer_DKkJKKwiEc.png

I notice a udp packet is being sent and acknowledged using radio message analysis. However the mote 2 is not capturing the packet and the payload. Closely following the udp-/client .c examples , which also contains a (albeit commented) reponse callback code.

1 reply
Ivanilson França Vieira Junior
@ivanilsonjunior

Hi, I have a doubt regarding Cooja's way of running, and I would like some advice...
I have three scenarios and need to perform several runs changing a few parameters (It's working Ok), but after the Gradle adoption, I changed my code to use it.

#https://github.com/ivanilsonjunior/pythonLogParser/blob/4249d9ac554e3f9b3e71fbf495f2099ee791efa8/Runner.py#L58
        args = " ".join([self.COOJA_PATH + "/gradlew --no-watch-fs --parallel --build-cache -p", self.COOJA_PATH, "run --args='-nogui=" + filename, "-contiki=" + self.CONTIKI_PATH, "-logdir=" + self.SELF_PATH, "-logname=COOJA.log" + "'"])

Is there some performance gain if I use the old way, cooja.jar (grade fulljar) file, instead of the Gradle?
Best regards.

2 replies
Rahav Dor
@rahav.dor_gitlab

Hello. Is it possible to call clock_wait() when compiling for .native or Cooja?

Is there a way to implement a few millisec blocking delay otherwise? (for a scientific experiment I need a function to hold in place, without yielding for a very short time).

WonderSarz
@WonderSarz
Hello ! Is there any examples on centralized TSCH scheduler implementation on contiki-ng/ cooja ? Thank you for your help.
2 replies
Jim Solderitsch
@jsolderitsch

I am back using contiki-ng after about a year away. I have built binaries for cc1352r1 Launchpads before and the command

make TARGET=simplelink BOARD=launchpad/cc1352r1

would produce a hex file and a bin file. Now this command produces an elf file only. I am trying to use TI's Uniflash tool to push firmware to my device but it seems it does not recognize an elf file. Can anyone help me create a .bin file from the sources. My Makefile is very stripped down:

CONTIKI_PROJECT = blink
all: $(CONTIKI_PROJECT)

CONTIKI = ../..
include $(CONTIKI)/Makefile.include

But it used to work when last I tried. Fresh docker pull of contiki-ng. Using docker desktop 4.14.1 on a Mac.

5 replies
Dr Automaton
@ekawahyu
Does anyone have any recommendation on a better debugging experience, preferably using OpenOCD, with XDS100v3 or ST-Link or JLink, for CC26xx product line? I expect the minimum it should run on terminal over GDB.
alexdr3437
@alexdr3437
Bit of a noob question: In Cooja, if I want to recompile my motes do I need to delete all of them, make a new mote type and re-add them? Is there an easier way?
2 replies
CPA-Aarts
@CPA-Aarts
Is there a nice guide(line) for analysing your network behavior? I'd like a way to quickly see how my adjustments improve/worsen the network in terms of latency / power consumption / transmissions per node, etc. At the moment I wrote some lines for prints int he Mote output window, but perhaps there's a better way to read or extract statistics to something like Matlab
1 reply
F. Fernando Jurado-Lasso
@fdojurado
Can anyone suggest how to increase the speed in Cooja simulator? Is there any special command for Gradle, cooja, etc? I am already using Cooja motes.
3 replies
alexdr3437
@alexdr3437

What is the correct way to add a new source directory? I am trying to add the path to PROJECT_SOURCEFILES like so:

PROJECT_SOURCEFILES += dir/file.c

But when I try to compile I get an error because it is not generating a dependency file.

fatal error: opening dependency file build/cooja/obj/.deps/dir/file.d: No such file or directory
3 replies
Mehdi Kherbache
@MehdiKherb
Hello, i want to ask if the mqtt_client provided in the examples works properly ? because i am trying to get a similar MQTT client from inside cooja to connect to an MQTT broker in the cloud but it does not work ..
knowing that i've setup a border router and all the necessary connections (tunslip connected to a serial socket server inside cooja)
Jim Solderitsch
@jsolderitsch
I have done an MQTT client example but with real devices and a RaspberryPi running tunslip where a Mosquitto MQTT broker is also running on the Pi. If the host running Cooja is also running an MQTT broker reachable via the ipv6 address then perhaps MQTT traffic can reach the host. I think the IBM MQTT examples are obsolete in the MQTT source code.
Mehdi Kherbache
@MehdiKherb
In my case the MQTT broker is deployed in a distant server, i use a ipv4-->ipv6 translator to reach it since it only has an ipv4 address, i use jool for this purpose.
From the broker logs it says that the mqtt client couldn't connect because it did not provide credentials in its connect packet, but i do that by using the mqtt_set_username_password function when i register the client !
Jim Solderitsch
@jsolderitsch
Right, that's beyond what I ever tried to do. I did use MQTT on the Pi with a simple node-RED flow running there to move messages to AWS as kind of an MQTT relay setup. My devices use MQTT to get to the Pi that runs the border router and then the Pi uses MQTT nodes in node-RED to reach what is essentially a distant server in ipv4 terms.
42 replies
alvarovs11
@alvarovs11
Hello, I am using the last version of contiki/gecko/efr32 and I have problems when I try to send messages that are larger than 88 bytes. For example, a 699-byte message is fragmented into one packet of 102, six packets of 101 and one packet of 48 bytes; but the receiving node only receives the last packet, but only if it is less than 98 bytes. The rest of the packages seem to be discarded for some reason.
I have not experienced this problem using the old version of gecko, and that is why I think there is a failure with the fragmentation in the current version, can anyone help me with this problem??
CPA-Aarts
@CPA-Aarts
@ekawahyu You mentioned you were working on cc26xx platforms with debuggers. Have you gotten any documentation guidelines online as to how to create the correct files and flash it to the physical platform? At the moment i have code simulated on Sky motes, but I see no method to move to "platform-specific/cc26xx" and simulate a cc26xx on Contiki OS. On the other hand, I am able to flash a CC2650ST using Code Composer Studio. Unfortunately I have not found any concise guides on this matter. Would appreciate the insight :).
4 replies
Jim Solderitsch
@jsolderitsch

I am trying out the Cooja: Simulating a border router:
https://docs.contiki-ng.org/en/develop/doc/tutorials/Cooja-simulating-a-border-router.html
I can run this inside of a docker setup but I want to run inside of ubuntu in order to run the ping6 command to nodes in the cooja network from an ubuntu shell and NOT a docker shell.
I can start cooja from the ubuntu VM after doing the toolchain installation described here:
https://docs.contiki-ng.org/en/develop/doc/getting-started/Toolchain-installation-on-Linux.html
The serial socket window seems to be running and I started the simulation.
The Simulating a border router instructions say to:

make TARGET=zoul connect-router-cooja

This begins OK but then I get the error:

make TARGET=zoul connect-router-cooja
sudo ../../tools/serial-io/tunslip6 -a 127.0.0.1 fd00::1/64
../../tools/serial-io/tunslip6: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by ../../tools/serial-io/tunslip6)
make: *** [../../os/services/rpl-border-router/embedded/Makefile.embedded:13: connect-router-cooja] Error 1

Is there a step to take to overcome this error?

I am using cooja motes in case this makes a difference
Jim Solderitsch
@jsolderitsch
ubuntu 20.04
Jim Solderitsch
@jsolderitsch
Well, I went to the tools/serial-io folder and removed the tunslip6 file that was there. Then ran the `make TARGET=zoul command and then it worked! I think the file I removed had been created when I was doing things in the docker container prior to my ubuntu tools installation.
Mehdi Kherbache
@MehdiKherb
hello, i wonder how the border router in cooja simulator routes packets when they are destined to a public ipv6 address ? does it follow the guest machine's routing table ? i don't quite understand how things work with tunslip6
YSmolders
@YSmolders
Hi all, I'm experimenting with Tunslip6. I have figured out how to send packets to the tunnel by using the assigned IP address, the default being fd00::1. However, I dont see that IP address being registered as a valid route in my network, resulting in a lot of warning messages and unwanted results. Is there a way for that destination to be added to the routing table? I'm using TSCH, and RPL-classic. Any help is appreciated
Jim Solderitsch
@jsolderitsch
I have been looking at COAP in cooja in contiki-ng and the examples I have located, which are old (for example):
https://www.youtube.com/watch?v=eRQkgAKdiEk
use sky motes. It seems that the cooja mote type is the one that has the most features including a vibration sensor and a pir sensor. Does the cooja mote "simulate" the emission of data for these sensors? Would I see varying values if I were to make repeated COAP requests?
Also the Firefox COAP plugin is no longer operable but there seems to be one for chrome (Cu4Cr)
https://github.com/mkovatsc/Copper4Cr
Does anyone have experience with this or a simulation example (.csc) file to share?
YSmolders
@YSmolders
Hi all,
I'm currently working on a Contiki-ng implementation with TSCH and multiple instance RPL. I have a network with two border routers and 3 client motes. The client motes need to send packages (preferably duplicates) to both these border routers, which are connected with a tunslip tunnel to my laptop for further processing.
Im using Cooja nodes, and UDP to send messages to the tunnels.
However, I'm experiencing a lot of problems with RPL as soon as I start the second instance. It seems as if the ranks are unstable, causing the client nodes to repeatedly re-evaluate its (default) routes. Since the IP address of the tunnel is not kept in routing tables this causes a lot of packets to be dropped.
Below I will add a screenshot of my simulation environment.
Any help is appreciated
1 reply
Contiki_problem.png
CPA-Aarts
@CPA-Aarts
I'm trying to benchmark my network by writing a struct with vars and related functions, however I keep getting an error message saying CLOCKS_PER_SEC is undeclared. ( <time.h> is included)
Compiling as a skymote... Is this not the way to measure execution time etc?
3 replies
someRandomNetizen
@someRandomNetizen

I'm trying to read the temperature and humidity value from dht11 sensor with cc2650 launchxl using this contiki code
contiki-ng/examples/dev/dht11/dht11.c
contiki-ng/dht11.c at develop · contiki-ng/contiki-ng (github.com)
I figure i have to change the pin to fit my cc2650 IOID, but still my board can't read the sensor (output timed out). I'm wondering if i'm using the wrong IOID pin, or i'm doing something wrong with my code format, please, be kindly take a look of the code i have change below, it'd mean the world to me if you can help me solve this problem

include "contiki.h"

include <stdio.h>

include "dht11-sensor.h"

/------------I add this line----------/

include "board.h"

/---------------------------------------------------------------------------/
PROCESS(dht11_process, "DHT 11 process");
AUTOSTART_PROCESSES(&dht11_process);
/---------------------------------------------------------------------------/

define DHT11_GPIO_PORT (1)

define DHT11_GPIO_PIN (12)

/------------I add this line----------/

define BOARD_IOID_DIO23 IOID_23

PROCESS_THREAD(dht11_process, ev, data)
{
static struct etimer timer;

PROCESS_BEGIN();

dht11_sensor.configure(DHT11_CONFIGURE_GPIO_PORT, DHT11_GPIO_PORT);

/dht11_sensor.configure(DHT11_CONFIGURE_GPIO_PIN, DHT11_GPIO_PIN);/
/code i change/
dht11_sensor.configure(DHT11_CONFIGURE_GPIO_PIN, IOID_23);
dht11_sensor.configure(SENSORS_HW_INIT, 0);

/ Wait one second for the DHT11 sensor to be ready /
etimer_set(&timer, CLOCK_SECOND * 1);

/ Wait for the periodic timer to expire /
PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&timer));

/ Setup a periodic timer that expires after 5 seconds. /
etimer_set(&timer, CLOCK_SECOND 5);
while(1) {
/

  • Request a fresh read
    */
    SENSORS_ACTIVATE(dht11_sensor);

printf("%ld ", clock_time());
switch(dht11_sensor.status(0)) {
case DHT11_STATUS_OKAY:
printf("Humidity %d.%d %% ",
dht11_sensor.value(DHT11_VALUE_HUMIDITY_INTEGER),
dht11_sensor.value(DHT11_VALUE_HUMIDITY_DECIMAL));
printf("Temperature = %d.%d *C\n",
dht11_sensor.value(DHT11_VALUE_TEMPERATURE_INTEGER),
dht11_sensor.value(DHT11_VALUE_TEMPERATURE_DECIMAL));
break;
case DHT11_STATUS_CHECKSUM_FAILED:
printf("Check sum failed\n");
break;
case DHT11_STATUS_TIMEOUT:
printf("Reading timed out\n");
break;
default:
break;
}

/ Wait for the periodic timer to expire and then restart the timer. /
PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&timer));
etimer_reset(&timer);
}

PROCESS_END();
}