blob: 855bdbb0c6840eec4e1012a25ac7d2edaa5ddf49 [file] [log] [blame]
Mynewt FAQ - Newt Manager
=========================
.. contents::
:local:
:depth: 1
Connection Profile with ``newtmgr``
-----------------------------------
**Q**: Im 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.
**A**: A connection profile tells newtmgr how to communicate with your device. You can create one using the
``newtmgr conn add`` 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.
For BLE, you can send an echo command to your device with something like this:
.. code-block:: console
newtmgr --conntype ble --connstring peer_name=nimble-bleprph echo Hello
That ``peer_name string`` is correct if your device is running the ``bleprph`` app. You'll need to adjust
it if your device has a different BLE name. The ``--conntype ble --connstring peer_name=nimble-bleprph`` 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.
NMP
---
**Q**: What does NMP stand for?
**A**: Newtmgr Management Protocol
Communicate with a Device based on ``peer_id``
----------------------------------------------
**Q**: How do I communicate with a device using the newtmgr tool based on ``peer_id``?
**A**: The command to use is:
.. code-block:: console
newtmgr -c myprofile --connstring peer_id=aa:bb:cc:dd:ee:ff image list
Where device address has to be lowercase You can also create connection profile so you do not need to specify address each time:
.. code-block:: console
newtmgr conn add mypeerprofile type=ble connstring="peer_id=aa:bb:cc:dd:ee:ff:"
Afterwards, you can then use:
.. code-block:: console
newtmgr -c mypeerprofile image list
Just be aware that ``peer_id`` has an OS-specific meaning. In Linux, it is the peer's Bluetooth address. In macOS, it is the ``UUID`` that the OS chooses to assign to the peer.
If you prefer to forgo connection profiles and see everything on the command line here is an alternative method:
.. code-block:: console
newtmgr --conntype ble --connstring peer_id=aa:bb:cc:dd:ee:ff image list
Newt Manager with the Adafruit nRF52DK
--------------------------------------
**Q**: I'm having issues using Newt Manager with the Adafruit nRF52DK. What do I do?
You can specify the reduced MTU by adding ``mtu=128`` 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.
**A**: There are two things you will need to do to fix any issues you encounter when working with the Adafruit nRF52DK and Newt Manager:
**1. Specify a reduced MTU**:
You can specify the reduced MTU by adding ``mtu=128`` 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.
**2. Indicate that the existing image should not be erased**:
This is accomplished with the ``-e`` command line option. Your command line should look similar to the following:
.. code-block:: console
$ newtmgr --conntype serial --connextra 'dev=/dev/ttyUSB0,mtu=128' image upload -e <image-path>
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.