smpmgr
Simple Management Protocol (SMP) Manager for remotely managing MCU firmware
What it is and what it does
smpmgr is a command-line interface for communicating with microcontroller firmware using the Simple Management Protocol (SMP), a standardized protocol for device management. It connects over serial (UART or USB), Bluetooth Low Energy (BLE), or UDP and serves as a reference implementation for the smp and smpclient libraries. The tool is designed for developers working with embedded systems who need to interact with or update MCU firmware from the command line.
The package depends on readchar for terminal input, smpclient for SMP protocol handling, and typer for CLI framework construction. It supports user-provided plugins to handle proprietary SMP groups, making it extensible for custom device management workflows. The tool is distributed as a portable executable for Windows, Linux, and macOS, or installable via PyPI for Python 3.11+.
Use it for:
- Update or query firmware on embedded devices connected via serial port or USB during development.
- Manage Bluetooth-connected MCUs remotely without writing custom SMP client code.
- Test SMP protocol implementations by using smpmgr as a reference client.
- Automate firmware management tasks over UDP in networked embedded systems.
- Extend with custom SMP groups via plugins to handle proprietary device management commands.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
CLI tool for managing microcontroller firmware over serial, Bluetooth, or UDP connections using the Simple Management Protocol (SMP).
Yes, if you work with embedded systems and need a command-line tool for SMP-based firmware management. The low install friction, active maintenance, permissive license, and plugin extensibility make it a practical choice. Install via pipx rather than pip if you plan to use it as a standalone CLI tool.
Install
smpmgr on PyPI
pip
pip install smpmgruv
uv add smpmgrpoetry
poetry add smpmgrInstalling smpmgr
Before you install
Low install friction with a pure-Python wheel distribution. Actively maintained as of 80 days ago. Requires Python 3.11 or later and three straightforward runtime dependencies (readchar, smpclient, typer).
License in practice
Apache-2.0 permissive license allows use in commercial and proprietary projects with minimal restrictions; you must retain license and copyright notices.
Quickstart
pip install smpmgr
smpmgr --help
Requires Python 3.11 or later. For serial/USB connections, your system must have the appropriate drivers installed; for BLE, your OS must support Bluetooth connectivity.
Verify before relying
- Whether the package works reliably across all advertised connection types (serial, BLE, UDP) in production environments.
- Performance characteristics and latency for large firmware transfers.
- Whether plugin system is stable and well-documented for custom SMP group development.
Package facts
| License | Apache-2.0 (permissive) |
| Python support | supports the current Python release (<4,>=3.11) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 3 — readchar, smpclient, typer |
| Maintenance | actively maintained — 80 days since the last release |
| First released | |
| Downloads | 80,785/month — #14,272 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: smpmgr-0.18.1-py3-none-any.whl
Tags
More Monitoring packages
Wraps any iterable to display a real-time…
copyleft · top 100 on PyPI
opentelemetry-semantic-conventionsProvides generated Python code for…
permissive · top 100 on PyPI
opentelemetry-sdkProvides the reference implementation of the…
permissive · top 100 on PyPI
opentelemetry-apiProvides the abstract API and interfaces for…
permissive · top 100 on PyPI
opentelemetry-exporter-otlp-proto-httpExports OpenTelemetry observability data to an…
permissive · top 1,000 on PyPI
opentelemetry-instrumentationProvides automatic instrumentation commands and…
permissive · top 1,000 on PyPI
smpSerializes and deserializes the Simple…
permissive · top 15,000 on PyPI
smpclientImplements the transport layer for the Simple…
permissive · top 15,000 on PyPI
esphomeESPHome configures and controls…
permissive · top 15,000 on PyPI
tockloaderTockloader is a command-line tool for…
unclear · top 15,000 on PyPI
uart-devicesProvides a Python interface to interact with…
permissive · top 15,000 on PyPI
xiaomi-bleManages Xiaomi BLE (Bluetooth Low Energy)…
permissive · top 15,000 on PyPI
bumbleBumble is a full-featured Bluetooth stack…
permissive · top 15,000 on PyPI
govee-bleProvides Python bindings to discover, connect…
permissive · top 15,000 on PyPI
imgtoolimgtool signs and manages cryptographic keys…
permissive · top 5,000 on PyPI
platformioPlatformIO Core is a command-line build system…
permissive · top 5,000 on PyPI