Re: OpenThread development guide

Benjamin Lindqvist

Thanks, I really appreciate the response and especially the PR reference. Will check it out.

On Mon, Sep 2, 2019 at 12:51 PM Lubos, Robert <Robert.Lubos@...> wrote:

Hi Benjamin,


Sorry for late reply, I’ve just came back from holiday. See my responses inline.





From: devel@... [mailto:devel@...] On Behalf Of Benjamin Lindqvist via Lists.Zephyrproject.Org
Sent: Tuesday, August 27, 2019 13:31
To: devel@...
Cc: devel@...
Subject: [Zephyr-devel] OpenThread development guide




I've verified basic OT functionality using the echo_client/server samples with the openthread overlays. That's nice, but it's not obvious to me how I proceed after this. A few things that had me confused:


- how do I configure my Zephyr device as a sleepy end device?


It is not possible to configure Sleepy End Device on current master, there is a PR that adds this functionality though ( It’s been open for some time now, feel free to comment in there if it’s a desired feature for you.


- can I setup my west.yml to clone openthread + dependencies as a module to prevent cmake from doing it at build every time?


This has already been done recently, make sure to check out the current master. West will now download OpenThread for you as a Zephyr module, and use it during OT samples builds.


- can I modify the network credentials at run-time? Or in other words, does Zephyr support anything but hardcoded OT commissioning?


Zephyr supports two ways of obtaining network credentials (commissioning):

  1. Use a preconfigured, hardcoded defaults, specified by Kconfig (good for samples, not really for real applications),
  2. Or perform a commissioning procedure defined by Thread specification during startup (see CONFIG_OPENTHREAD_JOINER_AUTOSTART option).


Both methods will configure your device during initial startup, and store network parameters in the flash. If, for whatever reason, you’d want to modify the network credentials afterwards, you’d need to call OpenThread API directly, there’s no support in Zephyr for that. See for available API functions. Just note, that in order to use OT API directly, you’d need to obtain OT context first from the OT network interface.


- can I build NCP firmware for a border router using Zephyr?


No, Zephyr cannot be configured as a NCP. For a NCP application, check the OpenThread repository.


etc. Right now I get the impression that the openthread integration is in a sort of proof-of-concept stage. Is this the case? If not, it would be nice with some more documentation, perhaps even a sample app...


Well, for sure I’d not call it a proof-of-concept at this point, yet indeed there’s still work to do. Lack of time/resources to push it forward is the only answer I can provide for now.

Join to automatically receive all group messages.