blob: 7373fc29f33af592bfbc6f095f48ff3a6cc6a3ca [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- This is broken by doc revisioning.
-->
<link rel="shortcut icon" href="../../../img/favicon.ico">
<title>toc - Apache Mynewt</title>
<link href="../../../css/bootstrap-3.0.3.min.css" rel="stylesheet">
<link rel="stylesheet" href="../../../css/highlight.css">
<link href="../../../css/base.css" rel="stylesheet">
<link href="../../../css/custom.css" rel="stylesheet">
<link href="../../../css/v2.css" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
<![endif]-->
<script>
(function(i, s, o, g, r, a, m) {
i["GoogleAnalyticsObject"] = r;
(i[r] =
i[r] ||
function() {
(i[r].q = i[r].q || []).push(arguments);
}),
(i[r].l = 1 * new Date());
(a = s.createElement(o)), (m = s.getElementsByTagName(o)[0]);
a.async = 1;
a.src = g;
m.parentNode.insertBefore(a, m);
})(window, document, "script", "//www.google-analytics.com/analytics.js", "ga");
ga("create", "UA-72162311-1", "auto");
ga("send", "pageview");
</script>
</head>
<body class="toc">
<div class="container">
<div class="row v2-main-banner">
<a class="logo-cell" href="/">
<img class="logo" src="/img/logo.png">
</a>
<div class="tagline-cell">
<h4 class="tagline">An OS to build, deploy and securely manage billions of devices</h4>
</div>
<div class="news-cell">
<div class="well">
<h4>Latest News:</h4> <a href="/download">Apache Mynewt 1.11.0, Apache NimBLE 1.6.0 </a> released (September 7, 2023)
</div>
</div>
</div>
</div>
<nav id="navbar" class="navbar navbar-inverse affix-top" data-spy="affix" data-offset-top="150" role="navigation">
<div class="container">
<!-- Collapsed navigation -->
<div class="navbar-header">
<!-- Expander button -->
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<!-- Expanded navigation -->
<div class="navbar-collapse collapse">
<!-- Main navigation -->
<ul class="nav navbar-nav navbar-right">
<li
class=""
>
<a href="/"><i class="fa fa-home" style="font-size: larger;"></i></a>
</li>
<li
class="important"
>
<a href="/quick-start/">Quick Start</a>
</li>
<li
class=""
>
<a href="/about/">About</a>
</li>
<li
class=""
>
<a href="/talks/">Talks</a>
</li>
<li
class="active"
>
<a href="/documentation/">Documentation</a>
</li>
<li
class=""
>
<a href="/download/">Download</a>
</li>
<li
class=""
>
<a href="/community/">Community</a>
</li>
<li
class=""
>
<a href="/events/">Events</a>
</li>
</ul>
</div>
</div>
</nav>
<div class="container">
<div class="row">
<div class="col-md-3 v2-sidebar sidebar-container"><div id="docSidebar" class="hidden-print" role="complementary">
<div class="top">
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
<div class="form-group">
<input type="text" name="q" class="form-control" placeholder="Search documentation" />
</div>
</form>
</div>
</div>
<ul class="toc-nav">
<li class="doc-version"><select class="form-control" onchange="if (this.value) window.location.href=this.value">
<option value="/latest">
Version: master
</option>
<option value="/v1_11_0/" >
Version: 1.11.0
</option>
<option value="/v1_10_0/" >
Version: 1.10.0
</option>
<option value="/v1_9_0/" >
Version: 1.9.0
</option>
<option value="/v1_8_0/" >
Version: 1.8.0
</option>
<option value="/v1_7_0/" >
Version: 1.7.0
</option>
<option value="/v1_6_0/" >
Version: 1.6.0
</option>
<option value="/v1_5_0/" >
Version: 1.5.0
</option>
<option value="/v1_4_0/" >
Version: 1.4.0
</option>
<option value="/v1_3_0/os/introduction" selected="selected" >
Version: 1.3.0
</option>
<option value="/v1_2_0/os/introduction" >
Version: 1.2.0
</option>
<option value="/v1_1_0/os/introduction" >
Version: 1.1.0
</option>
<option value="/v1_0_0/os/introduction" >
Version: 1.0.0
</option>
<option value="/v0_9_0/os/introduction" >
Version: 0.9.0
</option>
</select></li>
<li ><a href="../../../os/introduction/">Mynewt Documentation</a>
<ul>
<li ><a href="../../../os/get_started/get_started/">Basic Setup</a>
</li>
<li >
<a href="../../../os/get_started/vocabulary/">Concepts</a>
</li>
<li ><a href="../../../os/tutorials/tutorials/">Tutorials</a>
</li>
<li ><a href="../../../os/os_user_guide/">OS User Guide</a>
</li>
<li><a href="
../ble_intro/
">BLE User Guide</a>
<ul>
<li >
<a href="../ble_intro/">NimBLE Introduction</a>
</li>
<li >
<a href="../ble_sec/">NimBLE Security</a>
</li>
<li ><a href="../ble_setup/ble_setup_intro/">NimBLE Setup</a>
</li>
<li ><a href="../ble_hs/ble_hs/">NimBLE Host API</a>
</li>
<li ><a href="../btshell/btshell_api/">btshell Usage API</a>
</li>
<li class="active"><a href="./">Bluetooth Mesh</a>
<ul>
<li >
<a href="../ble_blemesh/">blemesh sample</a>
</li>
</ul>
</li>
</ul>
</li>
<li ><a href="../../../newt/newt_intro/">Newt Tool Guide</a>
</li>
<li ><a href="../../../newtmgr/overview/">Newt Manager Guide</a>
</li>
<li >
<a href="../../../known_issues/">Known Issues</a>
</li>
</ul>
</li>
<li><a href="
../../../newt/install/prev_releases/
">Appendix</a>
</li>
</ul>
</div></div>
<div class="col-md-9" role="main">
<div class="doc-header">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="/documentation/">Docs</a></li>
<li>&raquo; Bluetooth Mesh</li>
<li>&raquo; <a href="network/ble/ble_intro/">BLE User Guide</a></li>
<li>&raquo; <a href="os/introduction/">Mynewt Documentation</a></li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/apache/mynewt-site/blob/master/docs/network/ble/ble_mesh.md"
class="icon icon-github"> Edit on GitHub</a>
</li>
</ul>
</div>
</div>
<div class="alert alert-warning">
<p>
Version 1.3.0 is not the most recent version of the Apache Mynewt
documentation. Click <a href="/latest">here</a> to read the latest
version.
</p>
</div>
<h2 id="bluetooth-mesh">Bluetooth Mesh</h2>
<h3 id="introduction-to-mesh">Introduction to Mesh</h3>
<p>Bluetooth Mesh is a new standard from Bluetooth SIG that was released in 2017. It
enables many-to-many device communication (as opposed to point-to-point approach
in BLE) and is optimised for large-scale networks like building automation or
sensors network. It utilizes managed flood based approach where only
mains-powered nodes relay messages making it very power efficient (battery
powered low-power nodes that don't relay messages can operate in mesh network
for years).</p>
<p>Bluetooth Mesh is complementary to Bluetooth specification and requires
features from 4.0 release only. This allows deployment of networks using hardware
already available on the market. </p>
<h3 id="topology">Topology</h3>
<p><img alt="picture alt" src="../mesh_topology.jpg" title="Bluetooth Mesh Topology (source: Mesh Profile Specification 1.0)" /></p>
<p><br>
<br></p>
<p>Bluetooth Mesh defines few features (roles) for devices in network. Those are:</p>
<ul>
<li>Relay - receive and retransmit mesh messages over the advertising bearer to
enable larger networks</li>
<li>Proxy - receive and retransmit mesh messages between GATT and advertising
bearers.</li>
<li>Low Power - operate within a mesh network at significantly reduced receiver
duty cycles only in conjunction with a node supporting the Friend feature</li>
<li>Friend - the ability to help a node supporting the Low Power feature to
operate by storing messages destined for those nodes </li>
</ul>
<h3 id="bearers">Bearers</h3>
<p>Mesh Profile specification allows two kinds of bearers for transmitting data:</p>
<ul>
<li>Advertising Bearer<ul>
<li>Uses LE advertising to broadcast messages to all nodes that are listening
at this time</li>
<li>Uses non-connectable advertising only</li>
<li>29 octets of network message</li>
</ul>
</li>
<li>GATT Bearer<ul>
<li>Uses LE Connections to send messages</li>
<li>Uses standard GATT service (one for Provisioning and one for Proxy)</li>
</ul>
</li>
</ul>
<h3 id="provisioning">Provisioning</h3>
<p>Provisioning is a process of adding an unprovisioned device to a mesh network
managed by a Provisioner. A Provisioner provides the unprovisioned device with
provisioning data that allows it to become a mesh node (network key, current IV
index and unicast address). A Provisioner is typically a smart phone or other
mobile computing device.</p>
<h3 id="models">Models</h3>
<p>Models define basic functionality of nodes on a mesh network. Mesh Profile
Specification defines foundation models used to configure and manage network.
Mesh Model Specification includes models defininig functionality that is
standard across device types. Those consists of:</p>
<ul>
<li>Generics - root models<ul>
<li>On/Off</li>
<li>Level</li>
<li>Battery Server</li>
<li>Location</li>
<li>Client Property</li>
<li>and others</li>
</ul>
</li>
<li>Sensors - defines a standard way of interfacing with sensors</li>
<li>Time and Scenes - defines a set of functionalities related to time and
saved states on devices </li>
<li>Lighting - defines a set functionalities related to lighting control</li>
</ul>
<p>Complex models e.g. Lighting may contain other models eg Generic On/Off. The following
image shows an example of Light Lightness Server Model.</p>
<p><img alt="picture alt" src="../mesh_lightning_model.jpg" title="Light Lightness Server model (source: Mesh Model Specification 1.0)" /></p>
<h2 id="mesh-node-features-supported-by-apache-mynewt">Mesh Node features supported by Apache Mynewt</h2>
<ul>
<li>Advertising and GATT bearers</li>
<li>PB-GATT and PB-ADV provisioning</li>
<li>Foundation Models (server role)</li>
<li>Relay support</li>
<li>GATT Proxy</li>
</ul>
<div class="row">
<ul class="nav nav-pills" style="margin-bottom: 10px">
<li>
</li>
<li class="pull-right">
</li>
</ul>
</div>
<footer class="row">
<div class="col-xs-12">
<p class="copyright">Apache Mynewt is available under Apache License, version 2.0.</p>
</div>
<div class="col-xs-12">
<div class="logos">
<a href="https://www.apache.org/">
<img src="/img/asf_logo_wide_small.png" alt="Apache" title="Apache">
</a>
<p>
Copyright © 2015-2021 The Apache Software Foundation.<br>
<small class="footnote">
Apache Mynewt, Mynewt, Apache, the Apache feather logo, and the Apache Mynewt
project logo are either registered trademarks or trademarks of the Apache
Software Foundation in the United States and other countries.
</small>
</p>
<a href="">
<img src="https://www.countit.com/images/add_to_slack.png" alt="Slack Icon" title="Join our Slack Community" />
</a>
</div>
</div>
<a href="https://www.apache.org/licenses/">
<button class="button-footer-asf">
License
</button>
</a>
<a href="https://www.apache.org/foundation/sponsorship.html">
<button class="button-footer-asf">
Sponsorship
</button>
</a>
<a href="https://www.apache.org/foundation/thanks.html">
<button class="button-footer-asf">
Thanks
</button>
</a>
<a href="https://www.apache.org/security/">
<button class="button-footer-asf">
Security
</button>
</a>
<a href="https://apache.org/events/current-event">
<button class="button-footer-asf">
ASF Events
</button>
</a>
</footer>
</div>
</div>
</div>
<script src="../../../js/jquery-1.10.2.min.js"></script>
<script src="../../../js/bootstrap-3.0.3.min.js"></script>
<script src="../../../js/highlight.pack.js"></script>
<script src="../../../js/base.js"></script>
<script src="../../../js/custom.js"></script>
<script src="search/main.js"></script>
</body>
</html>