Skip to main content

Python API for Zephyr's MCUmgr protocol

Project description

MCUmgr Client for Zephyr

Crates.io PyPI - Version PyPI - Downloads License Build Status Docs Status

This library provides a Rust-based Python API for Zephyr's MCUmgr protocol.

It might be compatible with other MCUmgr/SMP-based systems, but it is developed with Zephyr in mind.

Its primary design goals are:

  • Completeness
    • cover all use cases of Zephyr's MCUmgr
    • for implementation progress, see this tracking issue
  • Performance
    • use static memory and large buffers to prioritize performance over memory footprint
    • see further down for more information regarding performance optimizations required on Zephyr side

Usage Example

Connect to a serial port:

from mcumgr_toolkit import MCUmgrClient

with MCUmgrClient.serial("/dev/ttyACM0") as client:
    client.use_auto_frame_size()

    print(client.os_echo("Hello world!"))
Hello world!

Or a USB-based serial port:

from mcumgr_toolkit import MCUmgrClient

with MCUmgrClient.usb_serial("2fe3:0004") as client:
    client.use_auto_frame_size()

    print(client.os_echo("Hello world!"))
Hello world!

For more information, take a look at the API reference.

Performance

Zephyr's default buffer sizes are quite small and reduce the read/write performance drastically.

The central most important setting is MCUMGR_TRANSPORT_NETBUF_SIZE. Its default of 384 bytes is very limiting, both for performance and as cutoff for large responses, like os_task_statistics() or some shell commands.

Be aware that changing this value also requires an increase of MCUMGR_TRANSPORT_WORKQUEUE_STACK_SIZE to prevent overflow crashes.

In practice, I found that the following values work quite well (on i.MX RT1060) and give me 410 KB/s read and 120 KB/s write throughput, which is an order of magnitude faster than the default settings.

CONFIG_MCUMGR_TRANSPORT_NETBUF_SIZE=4096
CONFIG_MCUMGR_TRANSPORT_WORKQUEUE_STACK_SIZE=8192

If the experience differs on other chips, please open an issue and let me know.

Contributions

Contributions are welcome!

I primarily wrote this crate for myself, so any ideas for improvements are greatly appreciated.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

mcumgr_toolkit-0.12.1-cp310-abi3-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.10+Windows x86-64

mcumgr_toolkit-0.12.1-cp310-abi3-win32.whl (1.1 MB view details)

Uploaded CPython 3.10+Windows x86

mcumgr_toolkit-0.12.1-cp310-abi3-musllinux_1_2_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ x86-64

mcumgr_toolkit-0.12.1-cp310-abi3-musllinux_1_2_i686.whl (1.5 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ i686

mcumgr_toolkit-0.12.1-cp310-abi3-musllinux_1_2_armv7l.whl (1.5 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARMv7l

mcumgr_toolkit-0.12.1-cp310-abi3-musllinux_1_2_aarch64.whl (1.4 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARM64

mcumgr_toolkit-0.12.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ x86-64

mcumgr_toolkit-0.12.1-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.4 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ s390x

mcumgr_toolkit-0.12.1-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.3 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ppc64le

mcumgr_toolkit-0.12.1-cp310-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (1.4 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ppc64

mcumgr_toolkit-0.12.1-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl (1.3 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ i686

mcumgr_toolkit-0.12.1-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.2 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARMv7l

mcumgr_toolkit-0.12.1-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARM64

mcumgr_toolkit-0.12.1-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (2.4 MB view details)

Uploaded CPython 3.10+macOS 10.12+ universal2 (ARM64, x86-64)macOS 10.12+ x86-64macOS 11.0+ ARM64

File details

Details for the file mcumgr_toolkit-0.12.1-cp310-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for mcumgr_toolkit-0.12.1-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 b46ab5b76b28d26cd05c2f3dd70b9425f82d97cd73c1313e9a09c060f8d5bfd9
MD5 34928691f349f3b49275b9ba731b3f62
BLAKE2b-256 4622249b5a64b68140c4e082c772cf51002b79de03b799e3783516eed74a0452

See more details on using hashes here.

File details

Details for the file mcumgr_toolkit-0.12.1-cp310-abi3-win32.whl.

File metadata

  • Download URL: mcumgr_toolkit-0.12.1-cp310-abi3-win32.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.10+, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for mcumgr_toolkit-0.12.1-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 339050e4b5b61c08a50316bd5a90d339cff39f67da1d6efbdb44e03268d731d5
MD5 3121bdf4b83d4b0b18ea66c691356de5
BLAKE2b-256 abcfb0ba84af4cf7d1cbedbe42cf46953f70ff1bdc339992f64328cc854b526a

See more details on using hashes here.

File details

Details for the file mcumgr_toolkit-0.12.1-cp310-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for mcumgr_toolkit-0.12.1-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7bc59a82bd14f5757c01733cdd7ade6d7f910d889522844f5588be623b944fcc
MD5 eaf6f178f931adf7f254665ca76e07a2
BLAKE2b-256 9503f6ba544e416a86fc55f2fe67c8542a742350842f5d905839ca7352ad48c8

See more details on using hashes here.

File details

Details for the file mcumgr_toolkit-0.12.1-cp310-abi3-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for mcumgr_toolkit-0.12.1-cp310-abi3-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 f8224741ab4f6122e464088319e32f39452e25295c94dc7dc53f8a277b1cfb95
MD5 8e65cbf62784456c02a2b48a053ad454
BLAKE2b-256 79d05531590eef0fc7f61fdd7d2420d64cbe19f296fef04373b418c2b20e3ec4

See more details on using hashes here.

File details

Details for the file mcumgr_toolkit-0.12.1-cp310-abi3-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for mcumgr_toolkit-0.12.1-cp310-abi3-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 e29202a34dd402958f775a85b5b210e204c4b4fa2b907a043734404b790473cd
MD5 585ca698e7c75656ccf740850f81819c
BLAKE2b-256 0f4ec67b81cd83a1ead05ed30d16fdf093e14bdd83504a4ea8e72a981dee1a6a

See more details on using hashes here.

File details

Details for the file mcumgr_toolkit-0.12.1-cp310-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for mcumgr_toolkit-0.12.1-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 8e600065ac083ef220051f1dcf38c2a9df343e03cc54c4f3869524361cee9f15
MD5 e9da95afd794982a68f5e85a4b188320
BLAKE2b-256 ff85041f0ccb9f8173c4b80578d0598f6e99c5864b6c110223cdedabab4bf96a

See more details on using hashes here.

File details

Details for the file mcumgr_toolkit-0.12.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for mcumgr_toolkit-0.12.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 973c0b33a747a91009ff9b844ec570533bc548f08caa7263c193f19f90447eff
MD5 c24f08219b670f2967c0992774d261b4
BLAKE2b-256 d1288903ae300f2943a5019fc241da63b2722d52fa3e5113e085e7c50cea14cc

See more details on using hashes here.

File details

Details for the file mcumgr_toolkit-0.12.1-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for mcumgr_toolkit-0.12.1-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 fe41f7a12bae16dfebf7866382e27bf222546789373fe01c5bf843d7c140e4d7
MD5 fb545667869418c4545d4653129f7b0c
BLAKE2b-256 01160c1f2d7217294989d91286aa6e567c5ada4cb2244eef267b631e16d24ac4

See more details on using hashes here.

File details

Details for the file mcumgr_toolkit-0.12.1-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for mcumgr_toolkit-0.12.1-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 f994785bb0affaf04b9ecbdcc90c2bc49c4b9645273b28cd9926df0cadc132b2
MD5 1645a2f3e07470c86a024abb6860fd9c
BLAKE2b-256 f0db2eacda4a09eca0ccb8ca4be0616e570468a2d03f1b2a95701d9993992dc9

See more details on using hashes here.

File details

Details for the file mcumgr_toolkit-0.12.1-cp310-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl.

File metadata

File hashes

Hashes for mcumgr_toolkit-0.12.1-cp310-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 01a1e59ceb5f932720a4b7a328e30a2c5a0a4c0657cd7423c44ef31208ca2e72
MD5 e48ea145f124ab0de7e9dc044d1c1a57
BLAKE2b-256 141893ca148ec4af73895b2e96053fe5a36287eb6ebe180a56afc35384919b28

See more details on using hashes here.

File details

Details for the file mcumgr_toolkit-0.12.1-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for mcumgr_toolkit-0.12.1-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 3459556dd9752ebe0dd8bb85cd99d2cb12314bf28620b76272d7a1529986cd25
MD5 ea61e82c38a3e1fbb911e3b4ebabaa34
BLAKE2b-256 13d56e4e16961adba792533fa539b89bb1f2fda3b6f2b0afac6703da3a9fdd6c

See more details on using hashes here.

File details

Details for the file mcumgr_toolkit-0.12.1-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for mcumgr_toolkit-0.12.1-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 69d9cdb26d9cd751e6cab15932b09ea147ce5a9b7ce4112f707635b5e38b59fa
MD5 8658eca7e6c15c8d3bf5d0b464b71bb3
BLAKE2b-256 8222d1df876516ccfe524b9c183f2e6f2ddf01989e8643e81ebd56ed4b2ddd80

See more details on using hashes here.

File details

Details for the file mcumgr_toolkit-0.12.1-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for mcumgr_toolkit-0.12.1-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ea324fe1d03be890e7ac7901fb5f7d60b871f7244f919c62b87f4d466420761e
MD5 763e9fe0d08d6ec647651c16cf65d52b
BLAKE2b-256 c3e2a1b27d75594ca7f68be3f7634b23eb195095290e75e461857738177377a2

See more details on using hashes here.

File details

Details for the file mcumgr_toolkit-0.12.1-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for mcumgr_toolkit-0.12.1-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 16bef3077aa02f43a9bad0b8f999e7470649a14b76144caa07fcf31ac3b9c690
MD5 428a08ffb1f7bb80991d60919141f3ad
BLAKE2b-256 a2b4483f65484a23181c11d00c6ae17d95440befae3b426885ccf641bd82ee64

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page