blob: da92189e543a0a551478c4a007e2cb7a3c46916c [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">
<title>Mynewt FAQ - Newt Manager &mdash; Apache Mynewt latest documentation</title>
<link rel="shortcut icon" href="../_static/mynewt-logo-only-newt32x32.png"/>
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/sphinx_theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/bootstrap-3.0.3.min.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/v2.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/custom.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/restructuredtext.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/overrides.css" type="text/css" />
<link rel="index" title="Index"
href="../genindex.html"/>
<link rel="search" title="Search" href="../search.html"/>
<link rel="top" title="Apache Mynewt latest documentation" href="../index.html"/>
<link rel="up" title="Mynewt FAQ" href="index.html"/>
<link rel="next" title="Mynewt FAQ - Porting Mynewt" href="port_faq.html"/>
<link rel="prev" title="Mynewt FAQ - Newt" href="newt_faq.html"/>
<script src="../_static/js/modernizr.min.js"></script>
<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="not-front page-documentation" role="document" >
<div id="wrapper">
<div class="container">
<div id="banner" class="row v2-main-banner">
<a class="logo-cell" href="/">
<img class="logo" src="../_static/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>
<header>
<nav id="navbar" class="navbar navbar-inverse" 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>
<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>
<a href="/about/">About</a>
</li>
<li>
<a href="/talks/">Talks</a>
</li>
<li class="active">
<a href="/documentation/">Documentation</a>
</li>
<li>
<a href="/download/">Download</a>
</li>
<li>
<a href="/community/">Community</a>
</li>
<li>
<a href="/events/">Events</a>
</li>
</ul>
<!-- Search, Navigation and Repo links -->
<ul class="nav navbar-nav navbar-right">
</ul>
</div>
</div>
</nav>
</header>
<!-- STARTS MAIN CONTENT -->
<div id="main-content">
<div id="breadcrumb">
<div class="container">
<a href="/documentation/">Docs</a> /
<a href="index.html">Mynewt FAQ</a> /
Mynewt FAQ - Newt Manager
<div class="sourcelink">
<a href="https://github.com/apache/mynewt-documentation/edit/master/docs/mynewt_faq/newtmgr_faq.rst" class="icon icon-github"
rel="nofollow"> Edit on GitHub</a>
</div>
</div>
</div>
<!-- STARTS CONTAINER -->
<div class="container">
<!-- STARTS .content -->
<div id="content" class="row">
<!-- STARTS .container-sidebar -->
<div class="container-sidebar col-xs-12 col-sm-3">
<div id="docSidebar" class="sticky-container">
<div role="search" class="sphinx-search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search documentation" class="search-documentation" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
<!-- Note: only works when deployed -->
<select class="form-control" onchange="if (this.value) window.location.href=this.value">
<option value="/latest" selected>
Version: latest
</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" selected="selected" >
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" >
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>
<div class="region region-sidebar">
<div class="docs-menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/index.html">Setup &amp; Get Started</a></li>
<li class="toctree-l1"><a class="reference internal" href="../concepts.html">Concepts</a></li>
<li class="toctree-l1"><a class="reference internal" href="../tutorials/tutorials.html">Tutorials</a></li>
<li class="toctree-l1"><a class="reference internal" href="../external_links.html">Third-party Resources</a></li>
<li class="toctree-l1"><a class="reference internal" href="../os/os_user_guide.html">OS User Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../network/index.html">BLE User Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../newt/index.html">Newt Tool Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../newtmgr/index.html">Newt Manager Guide</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Mynewt FAQ</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="admin_faq.html">Administrative</a></li>
<li class="toctree-l2"><a class="reference internal" href="bluetooth_faq.html">Bluetooth</a></li>
<li class="toctree-l2"><a class="reference internal" href="boot_faq.html">Bootloader and Firmware Upgrade</a></li>
<li class="toctree-l2"><a class="reference internal" href="modules_faq.html">Drivers and Modules</a></li>
<li class="toctree-l2"><a class="reference internal" href="fs_faq.html">File System</a></li>
<li class="toctree-l2"><a class="reference internal" href="hardware_faq.html">Hardware-Specific</a></li>
<li class="toctree-l2"><a class="reference internal" href="syntax_faq.html">Mynewt Syntax and Semantics</a></li>
<li class="toctree-l2"><a class="reference internal" href="nfc_faq.html">NFC</a></li>
<li class="toctree-l2"><a class="reference internal" href="newt_faq.html">Newt</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Newt Manager</a></li>
<li class="toctree-l2"><a class="reference internal" href="port_faq.html">Porting Mynewt</a></li>
<li class="toctree-l2"><a class="reference internal" href="troubleshoot_faq.html">Troubleshooting</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../misc/index.html">Appendix</a></li>
</ul>
</div>
</div>
</div>
<!-- ENDS STICKY CONTAINER -->
</div>
<!-- ENDS .container-sidebar -->
<div class="col-xs-12 col-sm-9">
<div class="alert alert-warning">
<p>
Version 1.9.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>
<div class="">
<div class="rst-content">
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="mynewt-faq-newt-manager">
<h1>Mynewt FAQ - Newt Manager<a class="headerlink" href="#mynewt-faq-newt-manager" title="Permalink to this headline"></a></h1>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><p><a class="reference internal" href="#connection-profile-with-newtmgr" id="id1">Connection Profile with <code class="docutils literal notranslate"><span class="pre">newtmgr</span></code></a></p></li>
<li><p><a class="reference internal" href="#nmp" id="id2">NMP</a></p></li>
<li><p><a class="reference internal" href="#communicate-with-a-device-based-on-peer-id" id="id3">Communicate with a Device based on <code class="docutils literal notranslate"><span class="pre">peer_id</span></code></a></p></li>
<li><p><a class="reference internal" href="#newt-manager-with-the-adafruit-nrf52dk" id="id4">Newt Manager with the Adafruit nRF52DK</a></p></li>
</ul>
</div>
<div class="section" id="connection-profile-with-newtmgr">
<h2><a class="toc-backref" href="#id1">Connection Profile with <code class="docutils literal notranslate"><span class="pre">newtmgr</span></code></a><a class="headerlink" href="#connection-profile-with-newtmgr" title="Permalink to this headline"></a></h2>
<p><strong>Q</strong>: I’m trying to connect to an Adafruit nRF52 Feather Pro running Mynewt via the newtmgr tool on MacOS.
I have the device powered via micro USB to my Mac. How do I find the “connection profile” of the device so
I can connect to it? I want to communicate over BLE and not serial.</p>
<p><strong>A</strong>: A connection profile tells newtmgr how to communicate with your device. You can create one using the
<code class="docutils literal notranslate"><span class="pre">newtmgr</span> <span class="pre">conn</span> <span class="pre">add</span></code> command. Try talking to your device without a connection profile first. If that works,
you can create a profile to make it easier to communicate with the device going forward.</p>
<p>For BLE, you can send an echo command to your device with something like this:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">newtmgr --conntype ble --connstring peer_name=nimble-bleprph echo Hello</span>
</pre></div>
</div>
<p>That <code class="docutils literal notranslate"><span class="pre">peer_name</span> <span class="pre">string</span></code> is correct if your device is running the <code class="docutils literal notranslate"><span class="pre">bleprph</span></code> app. You’ll need to adjust
it if your device has a different BLE name. The <code class="docutils literal notranslate"><span class="pre">--conntype</span> <span class="pre">ble</span> <span class="pre">--connstring</span> <span class="pre">peer_name=nimble-bleprph</span></code> part
is what would go in a connection profile. If you create one, then you can just specify the profile’s name rather
than typing that long string each time you send a command.</p>
</div>
<div class="section" id="nmp">
<h2><a class="toc-backref" href="#id2">NMP</a><a class="headerlink" href="#nmp" title="Permalink to this headline"></a></h2>
<p><strong>Q</strong>: What does NMP stand for?</p>
<p><strong>A</strong>: Newtmgr Management Protocol</p>
</div>
<div class="section" id="communicate-with-a-device-based-on-peer-id">
<h2><a class="toc-backref" href="#id3">Communicate with a Device based on <code class="docutils literal notranslate"><span class="pre">peer_id</span></code></a><a class="headerlink" href="#communicate-with-a-device-based-on-peer-id" title="Permalink to this headline"></a></h2>
<p><strong>Q</strong>: How do I communicate with a device using the newtmgr tool based on <code class="docutils literal notranslate"><span class="pre">peer_id</span></code>?</p>
<p><strong>A</strong>: The command to use is:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">newtmgr -c myprofile --connstring peer_id=aa:bb:cc:dd:ee:ff image list</span>
</pre></div>
</div>
<p>Where device address has to be lowercase You can also create connection profile so you do not need to specify address each time:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">newtmgr conn add mypeerprofile type=ble connstring=&quot;peer_id=aa:bb:cc:dd:ee:ff:&quot;</span>
</pre></div>
</div>
<p>Afterwards, you can then use:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">newtmgr -c mypeerprofile image list</span>
</pre></div>
</div>
<p>Just be aware that <code class="docutils literal notranslate"><span class="pre">peer_id</span></code> has an OS-specific meaning. In Linux, it is the peer’s Bluetooth address. In macOS, it is the <code class="docutils literal notranslate"><span class="pre">UUID</span></code> that the OS chooses to assign to the peer.</p>
<p>If you prefer to forgo connection profiles and see everything on the command line here is an alternative method:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">newtmgr --conntype ble --connstring peer_id=aa:bb:cc:dd:ee:ff image list</span>
</pre></div>
</div>
</div>
<div class="section" id="newt-manager-with-the-adafruit-nrf52dk">
<h2><a class="toc-backref" href="#id4">Newt Manager with the Adafruit nRF52DK</a><a class="headerlink" href="#newt-manager-with-the-adafruit-nrf52dk" title="Permalink to this headline"></a></h2>
<p><strong>Q</strong>: I’m having issues using Newt Manager with the Adafruit nRF52DK. What do I do?</p>
<p>You can specify the reduced MTU by adding <code class="docutils literal notranslate"><span class="pre">mtu=128</span></code> to your connection string. The reason for this change is that
MTU is the serial boot loader used to have a smaller receive buffer (128 bytes). The newtmgr tool sends larger image
chunks by default, so specifying the MTU will reduce the image size.</p>
<p><strong>A</strong>: There are two things you will need to do to fix any issues you encounter when working with the Adafruit nRF52DK and Newt Manager:</p>
<p><strong>1. Specify a reduced MTU</strong>:
You can specify the reduced MTU by adding <code class="docutils literal notranslate"><span class="pre">mtu=128</span></code> to your connection string. The reason for this change is that
MTU is the serial boot loader used to have a smaller receive buffer (128 bytes). The newtmgr tool sends larger image
chunks by default, so specifying the MTU will reduce the image size.</p>
<p><strong>2. Indicate that the existing image should not be erased</strong>:
This is accomplished with the <code class="docutils literal notranslate"><span class="pre">-e</span></code> command line option. Your command line should look similar to the following:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>newtmgr<span class="w"> </span>--conntype<span class="w"> </span>serial<span class="w"> </span>--connextra<span class="w"> </span><span class="s1">&#39;dev=/dev/ttyUSB0,mtu=128&#39;</span><span class="w"> </span>image<span class="w"> </span>upload<span class="w"> </span>-e<span class="w"> </span>&lt;image-path&gt;
</pre></div>
</div>
<p>This change is needed because the serial boot loader doesn’t support the standalone “erase image” command - as a result,
it drops the request. The newtmgr image upload command starts by sending an erase command, then times out when it doesn’t
receive a response. The older version of newtmgr would use smaller chunk size for images, and it did not send the standalone
erase command. When newtmgr was changed in versions 1.2 and 1.3, the serial boot loader changed along with it. The latest
newtmgr is not compatible with an older version of the boot loader (which your board will probably ship with) without the
above workarounds.</p>
</div>
</div>
</div>
</div>
<div class="rst-footer-buttons row" role="navigation" aria-label="footer navigation">
<a href="port_faq.html" class="btn btn-neutral float-right" title="Mynewt FAQ - Porting Mynewt" accesskey="n">Next: Mynewt FAQ - Porting Mynewt <span class="fa fa-arrow-circle-right"></span></a>
<a href="newt_faq.html" class="btn btn-neutral" title="Mynewt FAQ - Newt" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous: Mynewt FAQ - Newt</a>
</div>
</div>
</div>
</div>
<!-- ENDS CONTENT SECTION -->
</div>
<!-- ENDS .content -->
</div>
</div>
<footer>
<div class="container">
<div 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">
<img src="../_static/img/asf_logo_wide_small.png" alt="Apache" title="Apache">
<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>
<a href="">
<img src="../_static/img/add_to_slack.png" alt="Slack Icon" title="Join our Slack Community" />
</a>
</div>
</div>
</div>
</div>
</footer>
</div>
<!-- ENDS #wrapper -->
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../',
VERSION:'latest',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true,
SOURCELINK_SUFFIX: '.txt',
LINK_SUFFIX: '.html'
};
</script>
<script type="text/javascript" src="../_static/jquery.js"></script>
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<script type="text/javascript" src="../_static/js/bootstrap-3.0.3.min.js"></script>
<script type="text/javascript" src="../_static/js/affix.js"></script>
<script type="text/javascript" src="../_static/js/main.js"></script>
</body>
</html>