Debugging Massive OpenThread Networks

I'm embarking on a new project involving a sensor network of up to 3000 devices within a warehouse for industrial monitoring, and I'm considering an OpenThread network-based solution. I have several doubts that can be isolated into three questions:
  1.  Based on the OpenThread Network Simulator - OTNS and Silk tools and this link related to "Building a Thread network with nRF52840 boards and OpenThread” how can I flash this code to the nRF5340 DK and nRF9160 DK as well? I mean, I would like to test my OpenThread - OT network with the Silk tool. However, I have 1x nRF52840DK, 1x nRF5340DK, 3x nRF9160DKs (which also have an nRF52840 SoC to run OpenThread CLI sample), 3x nRF52840 Feather Boards and 2x nRF52840 Dongles, not just the nRF52840 DK as the .bin and .hex files in those instructions are for. Alternatively, if I use my nRF52840 as an OpenThread Border Router and connect it via USB to my Raspberry Pi or Ubuntu Linux Laptop running the Silk and OTNS tool, and flash the OpenThread CLI sample from nRF Connect SDK to the other DKs I own, if all of them are on the same OpenThread network, will I be able to use Silk and visualize the network without any problems? Also, maybe I don’t have to flash the .hex file of OpenThread Code Labs to the Border Router, but instead, build and flash an nRF Connect SDK sample since the OpenThread CLI should be the same, am I right?
  2. The long-term goal is to implement an OpenThread network with up to 3000 devices based on nRF SoCs inside a warehouse. We are currently developing with nRF52x SoCs but plan to transition to nRF54L15 SoCs for better power consumption once these new SoCs become available on the market. With that said, the OTNS tool allows me to simulate an OpenThread network and provide the coordinates of each router or end-device for a more accurate simulation. Since all devices have sensor data to acquire and send, I assume all devices will be Router Eligible End Devices (REED), with some acting as routers and consuming more power, while others will act as end-devices and consume less energy. Does the nRF Thread Topology Monitor tool also allow us to simulate virtual devices and specify the coordinates of each device to be close to the real environment? Also, regarding the nRF Thread Topology Monitor tool, is there any plan to add support for MacOS (preferably arm-silicon) in the future? 
  3. From what I gathered here, a Thread network can only accommodate up to 32 routers, with each router supporting up to 511 devices. Additionally, "Thread tries to keep the number of Routers between 16 and 23. If a REED attaches as an End Device and the number of Routers in the network is below 16, it automatically promotes itself to a Router.” So, in my use case, if I have up to 3000 devices in a warehouse, with each device acting as a REED, the worst-case scenario is that I'll have 32 devices functioning as routers, thus consuming more current, correct? Therefore, if I aim to achieve, let's say, 3 months of battery life, I should dimension the battery for the case of these devices operating as routers, correct? Similar to Nordic's power consumption tests of Minimal End Devices and Sleepy End Devices here, has Nordic conducted a power consumption test of devices operating as a REED (but not as a router, i.e., ready to be a router but in fact, an end device always on)?
  4. I have already installed the nRF Thread Monitor on a Linux laptop, flashed two nRF52840 Dongles and one nRF52840DK with the OpenThread CLI sample. Using the terminal, I am able to set the network configurations and see one device assuming the Leader function, with others assuming router or child functions. I am also able to ping devices on the network using the terminal. However, when I click the scan button in the nRF Thread Monitor, I receive the error "Error - No response from Thread CLI device" every time. Any ideas why?
Parents
  • Hello,

    4) I have already installed the nRF Thread Monitor on a Linux laptop, flashed two nRF52840 Dongles and one nRF52840DK with the OpenThread CLI sample. Using the terminal, I am able to set the network configurations and see one device assuming the Leader function,

    What do you mean by this? You "see one device assuming the leader function". Do you see that in the nRF Thread Topology Monitor (TTM), or do you see it from their logs?

    when I click the scan button in the nRF Thread Monitor, I receive the error "Error - No response from Thread CLI device" every time. Any ideas why?

    Did you program a DK with the .hex file that is found in nRF_TTM-win32-x64\hex\? This application needs one node to act as the TTM device.

    1:

    However, I have 1x nRF52840DK, 1x nRF5340DK, 3x nRF9160DKs (which also have an nRF52840 SoC to run OpenThread CLI sample), 3x nRF52840 Feather Boards and 2x nRF52840 Dongles, not just the nRF52840 DK as the .bin and .hex files in those instructions are for.

    I have not tested this silk tool before (In fact I didn't know about it until now). After a brief read, it looks like you only need 6 DKs to form a thread network, so I assume you don't need to use their sample. If that is the case, and you can build up any Openthread network and use it with the Silk tool. In that case, I suggest that you try to build up a network with the boards you have. Start with everything except the nRF91 DKs, then see if you can get the nRF91 DKs attached to the openthread network in the end (I am not sure exactly how to do it. Either you need to flash the nRF52's on the nRF91 DK with the NCS\nrf\samples\openthread\coprocessor samples, and then make the nRF91 use those, or perhaps it is possible to use the nRF52840's on the nRF91 DKs directly.

    Again, I have not seen Silk before, but it looks like it does pretty much the same as the TTM application.

    Also, maybe I don’t have to flash the .hex file of OpenThread Code Labs to the Border Router, but instead, build and flash an nRF Connect SDK sample since the OpenThread CLI should be the same, am I right?

    Perhaps they are the same. I am not familiar with their codebase. You can give it a go.

    Does the nRF Thread Topology Monitor tool also allow us to simulate virtual devices and specify the coordinates of each device to be close to the real environment?

    TTM doesn't allow to simulate additional devices, as far as I know. That seemed to be part of the OTNS that you mentioned, right? I have not tested that either, but you can give it a go.

    has Nordic conducted a power consumption test of devices operating as a REED (but not as a router, i.e., ready to be a router but in fact, an end device always on)?

    The difference between a REED and a router is negligible. A router and a REED both have their radio turned on in RX mode at all times (except from exactly when it is transmitting a packet. Then it uses the radio in TX mode). The current consumption of the radio in RX and TX is almost identical, so you can assume that the radio is turned on for 100% of the time in RX mode. This means that REEDs and routers will have a base current consumption of something between 5 and 10 mA, according to the radio's electrical specification

    So if you want battery powered devices, you should look into SEDs or SEEDs, and use dedicated devices as routers, which are not battery powered. This way you know what devices will draw more current, and the rest can be battery powered. 

    Also, regarding the nRF Thread Topology Monitor tool, is there any plan to add support for MacOS (preferably arm-silicon) in the future? 

    I don't know. You would need to contact our RSM (Regional Sales Manager) for your area for roadmap details. Let me know if you want the contact details. (you can send me a PM, and link to this ticket, and verify your location (country)). 

    I believe that covers most of the questions. Let me know if I forgot something.

    Best regards,

    Edvin

  • What do you mean by this? You "see one device assuming the leader function". Do you see that in the nRF Thread Topology Monitor (TTM), or do you see it from their logs?
    I was observing the logs via the UART shell by typing "ot state." However, I realized that I can't build and flash the OpenThread CLI sample to the nRF52x SoCs if I want to connect it to the OpenThread Topology Monitor (OTTM). I don't know what Nordic did, but I am forced to use the .hex files in the OTTM program directory.

    Did you program a DK with the .hex file that is found in nRF_TTM-win32-x64\hex\? This application needs one node to act as the TTM device.

    Yes, I just realized several hours later that I have to use the .hex files and not build the OpenThread CLI sample myself and flash the .hex result to the SoCs.

    Either you need to flash the nRF52's on the nRF91 DK with the NCS\nrf\samples\openthread\coprocessor samples, and then make the nRF91 use those, or perhaps it is possible to use the nRF52840's on the nRF91 DKs directly.
    To clarify, I'll try this with the nRF9160DK. We already have two nRF9161DKs, but note that the nRF9161DK doesn't have an nRF52x SoC like the nRF9160DK does.

    The difference between a REED and a router is negligible. A router and a REED both have their radio turned on in RX mode at all times (except from exactly when it is transmitting a packet. Then it uses the radio in TX mode). The current consumption of the radio in RX and TX is almost identical, so you can assume that the radio is turned on for 100% of the time in RX mode. This means that REEDs and routers will have a base current consumption of something between 5 and 10 mA, according to the radio's electrical specification
    Thanks! I'll validate this myself using a PPK2.

    Anyway, I have now 4 devices on the network, according to the output from the OTTM. However, in the GUI, I don't see any devices or network topology, even though the software shows that the number of devices is not zero. Does anyone know what the problem could be? Only the graphical interface doesn't work; everything is blank, but the software tells me that the number of nodes is 4. NOTE: I'm running Ubuntu 22.04.4 LTS
    Regarding this issue, I was able to fix the problem several hours later. It seems there is a problem with Ubuntu 22 and Ubuntu 23 where the libgconf-2-4 library is not available.
Reply
  • What do you mean by this? You "see one device assuming the leader function". Do you see that in the nRF Thread Topology Monitor (TTM), or do you see it from their logs?
    I was observing the logs via the UART shell by typing "ot state." However, I realized that I can't build and flash the OpenThread CLI sample to the nRF52x SoCs if I want to connect it to the OpenThread Topology Monitor (OTTM). I don't know what Nordic did, but I am forced to use the .hex files in the OTTM program directory.

    Did you program a DK with the .hex file that is found in nRF_TTM-win32-x64\hex\? This application needs one node to act as the TTM device.

    Yes, I just realized several hours later that I have to use the .hex files and not build the OpenThread CLI sample myself and flash the .hex result to the SoCs.

    Either you need to flash the nRF52's on the nRF91 DK with the NCS\nrf\samples\openthread\coprocessor samples, and then make the nRF91 use those, or perhaps it is possible to use the nRF52840's on the nRF91 DKs directly.
    To clarify, I'll try this with the nRF9160DK. We already have two nRF9161DKs, but note that the nRF9161DK doesn't have an nRF52x SoC like the nRF9160DK does.

    The difference between a REED and a router is negligible. A router and a REED both have their radio turned on in RX mode at all times (except from exactly when it is transmitting a packet. Then it uses the radio in TX mode). The current consumption of the radio in RX and TX is almost identical, so you can assume that the radio is turned on for 100% of the time in RX mode. This means that REEDs and routers will have a base current consumption of something between 5 and 10 mA, according to the radio's electrical specification
    Thanks! I'll validate this myself using a PPK2.

    Anyway, I have now 4 devices on the network, according to the output from the OTTM. However, in the GUI, I don't see any devices or network topology, even though the software shows that the number of devices is not zero. Does anyone know what the problem could be? Only the graphical interface doesn't work; everything is blank, but the software tells me that the number of nodes is 4. NOTE: I'm running Ubuntu 22.04.4 LTS
    Regarding this issue, I was able to fix the problem several hours later. It seems there is a problem with Ubuntu 22 and Ubuntu 23 where the libgconf-2-4 library is not available.
Children
  • gcb said:
    .hex files in the OTTM program directory.

    They probably did some modifications to it (but I believe it is based on the CLI example from the old nRF5 SDK for Thread and Zigbee, but yes. You probably need to use the included hex files for the TTM device.

    gcb said:
    Regarding this issue, I was able to fix the problem several hours later. It seems there is a problem with Ubuntu 22 and Ubuntu 23 where the libgconf-2-4 library is not available.

    Thank you for sharing. Also, make sure to use the same channel, panid and nettwork key, but I guess you already figured out that part. 

    Best regards,

    Edvin

  • Thank you for sharing. Also, make sure to use the same channel, panid and nettwork key, but I guess you already figured out that part. 

    Yes. I was using the same channel, panid and network key. And via uart shell I managed to configure the OpenThread network in each nRF52x DK but the OpenThread Topology Monitor did not show any board or network topology even when the OTTM program show the information "Number of nodes: 4". So I thought it was a GUI issue and the OTTM program was not able to generate the graphics. Although the installation instructions here indicate that the package that must be installed is lingconf-2-4, the truth is that this package is no longer available on Ubuntu22 and Ubuntu23.

    I just runned the following command: 

    $ sudo apt-get install libgtk2.0.0 libgtk-3.0 libgbm-dev libnotify-dev libnss3 libxss1 libasound2 libxtst6 xauth xvfb

    Then I restart the OTTM program and then the program was able to generate the GUI with the boards and the connections between them. The above command is probably installing more packages than necessary, but it works.

Related