Project import
2380 files changed
tree: 195e072ae2f167824e2e69fc05637f2f07edb78d
  1. .appveyor/
  2. .astyle/
  3. .github/
  4. .travis/
  5. doc/
  6. etc/
  7. examples/
  8. include/
  9. src/
  10. tests/
  11. third_party/
  12. tools/
  13. .appveyor.yml
  14. .codecov.yml
  15. .default-version
  16. .gitattributes
  17. .travis.yml
  18. AUTHORS
  19. bootstrap
  20. CODE_OF_CONDUCT.md
  21. configure.ac
  22. CONTRIBUTING.md
  23. LICENSE
  24. Makefile.am
  25. NOTICE
  26. README.md
  27. STYLE_GUIDE.md
README.md

OpenThread
Build Status
Build Status
Coverage Status


What is OpenThread?

OpenThread is...

...an open-source implementation of the Thread networking protocol. Nest has released OpenThread to make the technology used in Nest products more broadly available to developers to accelerate the development of products for the connected home.

...OS and platform agnostic, with a narrow platform abstraction layer and a small memory footprint, making it highly portable.

...a Thread Certified Component, implementing all features defined in the Thread 1.1.1 specification. This specification defines an IPv6-based reliable, secure and low-power wireless device-to-device communication protocol for home applications.

More information about Thread can be found on threadgroup.org.

Get started with OpenThread

Want to try OpenThread? The quickest way to get started is to run through our Simulation Codelab, which covers all the basics, without the need for test hardware. Using VirtualBox and Vagrant on a Mac or Linux machine, you will learn:

  • How to set up the OpenThread build toolchain
  • How to simulate a Thread network
  • How to authenticate Thread nodes with Commissioning
  • How to use wpantund to manage a simulated Thread network featuring an NCP

Next Steps

The Codelab shows you how easy it is use to OpenThread to simulate a Thread network. Once complete:

  1. Learn more about the OpenThread architecture and features
  2. Get familiar with platforms and devices that support OpenThread
  3. See what testing tools are available
  4. Learn where to get help and how to contribute to the ongoing development of OpenThread

OpenThread Features

OpenThread implements all features defined in the Thread 1.1.1 specification, including all Thread networking layers (IPv6, 6LoWPAN, IEEE 802.15.4 with MAC security, Mesh Link Establishment, Mesh Routing) and device roles, as well as Border Router support.

OpenThread supports both system-on-chip (SoC) and network co-processor (NCP) designs. Other features and enhancements include:

  • Application support and services
    • IPv6 configuration and raw data interface
    • UDP sockets
    • CoAP client and server
    • DHCPv6 client and server
    • DNSv6 client
    • Command Line Interface (CLI)
  • NCP support
    • Spinel - general purpose NCP protocol
    • wpantund - user-space NCP network interface driver/daemon
    • Sniffer support via NCP Spinel nodes
  • Border Router
    • Web UI for configuration and management
    • Thread Border Agent to support an External Commissioner
    • NAT64 for connecting to IPv4 networks
    • Thread interface driver using wpantund

What's coming?

The development of OpenThread is ongoing to provide additional features not available in the standard. Check back regularly for new updates, or visit the openthread-announce Google Group.

Who supports OpenThread?

Led by Nest, the following companies are contributing to the ongoing development of OpenThread:

OpenThread has been ported to several devices and platforms by both the OpenThread team and the community. Build examples for all supported platforms are included in the OpenThread project.

IEEE 802.15.4 Platform Support

See the Wiki Platform page for more detailed information on supported platforms.

Desktop Support

Desktop platforms can also be used to control and interface with a Thread network using OpenThread:

  • Unixwpantund provides an interface to an NCP
  • Windows 10universal drivers to interface with devices running OpenThread

Porting

If you are interested in porting OpenThread to a new platform, see the Porting Guide for hardware requirements and detailed porting instructions.

Border Router

A Border Router connects a Thread network to networks at different layers, such as WiFi or Ethernet. OpenThread Border Router provides end-to-end IP via routing between Thread devices and other external IP networks, as well as external Thread Commissioning.

What tools are available for testing?

Certification Testing

Certification testing is done with the GRL Thread Test Harness software, available for download to Thread member companies.

Additional tools that extend the Test Harness are included in the OpenThread project:

  • Thread Harness Automation — automates the Thread Test Harness software
  • Thread Harness THCI for OpenThread — allows the Thread Test Harness to control OpenThread-based reference devices directly
    • CC2538 example included in the GRL Thread Test Hardness software
    • Library version can be modified by developers for use on other platforms

Sniffer

OpenThread also provides a sniffer on the NCP build. The sniffer is exposed by the Spinel protocol and features:

  • Monitor mode — capture packets during operation
  • Promiscuous mode — dedicated sniffer
  • Host-side support — wpantund
  • pcap stream output

Need help?

Wiki

Explore the OpenThread Wiki for more in-depth documentation on building, testing, automation and tools.

Interact

There are numerous avenues for OpenThread support:

Directory Structure

The OpenThread repository is structured as follows:

FolderContents
docSpinel docs and Doxygen build file
etcConfiguration files for other build systems (e.g. Visual Studio)
examplesSample applications and platforms demonstrating OpenThread
includePublic API header files
srcCore implementation of the Thread standard and related add-ons
testsUnit and Thread conformance tests
third_partyThird-party code used by OpenThread
toolsHelpful utilities related to the OpenThread project

Want to contribute?

We would love for you to contribute to OpenThread and help make it even better than it is today! See the CONTRIBUTING.md file for more information.

Versioning

OpenThread follows the Semantic Versioning guidelines for release cycle transparency and to maintain backwards compatibility. OpenThread's versioning is independent of the Thread protocol specification version but will clearly indicate which version of the specification it currently supports.

License

OpenThread is released under the BSD 3-Clause license. See the LICENSE file for more information.

Please only use the OpenThread name and marks when accurately referencing this software distribution. Do not use the marks in a way that suggests you are endorsed by or otherwise affiliated with Nest, Google, or The Thread Group.