What they are
The Simple Management Protocol is how Zephyr devices are managed over a wire — firmware upgrade, file transfer, reset, statistics. It is specified by the Zephyr Project.
smpclient is a Python library that implements the transport layer of SMP over serial (UART or USB), Bluetooth Low Energy and UDP, with abstractions for the routines everyone needs, firmware upgrade first among them. If you want to handle transport yourself, use the lower-level smp library instead.
smpmgr is the command-line application built on it. It talks to a device over the same three transports, and it doubles as the reference implementation if you are writing your own SMP tooling. It ships as a portable executable for Windows, Linux and macOS, and on PyPI.
Both support plugins for proprietary SMP groups, so a team with its own commands can add them without forking anything.
Why we wrote them
Field upgrade is where connected products go wrong, and the problem does not stop at the protocol. Our Enso project needed a bootloader that upgraded two separate chips at once, because no vendor supported that arrangement. The work that goes into getting an update path right is the same work every time, so we made it reusable and gave it away.
Using them
pip install smpclient[all]
The repositories carry the full documentation, the plugin examples and the releases.
Testing firmware tooling without hardware covers how we test them: SMP servers that run as host processes, so the whole client can be exercised in CI without a board on a desk.







