uModbus
Implementation of the Modbus protocol in pure Python.
Decision gist · record as of 2026-08-14
Yes, if you need Modbus protocol support in Python. The package is mature, actively maintained, has no known vulnerabilities, and low install friction. The copyleft license (MPL 2.0) is a consideration for proprietary projects; verify compatibility with your licensing requirements before use.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires a Modbus server listening on the target host and port; RTU mode requires pyserial for serial port communication.
- Low install friction with a single runtime dependency (pyserial).
- The package is actively maintained with recent commits and has been stable since its first release in 2015.
License · maintenance · safety
MPL (copyleft) — Licensed under Mozilla Public License 2.0 (copyleft), which requires derivative works to disclose modifications and license them under the same terms; suitable for open-source projects but may constrain proprietary use.
last release 2020-08-27 (2178 days) · last repo commit 2026-04-13 · 237 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 159,886 downloads/mo, #10,684 on PyPI
Alternatives
Verify before relying
import socket
from umodbus.client import tcp
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('localhost', 502))
message = tcp.write_multiple_coils(slave_id=1, starting_address=1, values=[1, 0, 1, 1])
response = tcp.send_message(message, sock)
sock.close()- Whether the package supports Modbus protocol versions beyond V1.1b3 or extensions like Modbus Plus.
- Current compatibility with Python versions beyond 3.8 (classifiers list only up to 3.8).
- Performance characteristics for high-frequency polling or large register sets.
What it is and what it does
uModbus is a lightweight, pure-Python implementation of the Modbus protocol (MODBUS Application Protocol Specification V1.1b3) that lets you build Modbus clients and servers for both TCP and RTU communication modes. It handles the low-level protocol details—encoding requests, parsing responses, managing slave IDs and function codes—so you can focus on reading and writing coils and registers. The package supports function codes 01–06 and 15–16 for common operations like reading holding registers and writing multiple coils, plus signed and unsigned register values.
Typically used in industrial automation and embedded systems where devices communicate via Modbus over Ethernet (TCP) or serial links (RTU). You set up a server with route decorators that map slave IDs and addresses to your data store, or use the client API to send requests and receive responses from remote Modbus devices. The single runtime dependency is pyserial, needed only for RTU serial communication; TCP mode has no external dependencies beyond the standard library.
Use it for
- Build a Modbus TCP server to expose sensor or control data from an embedded system or industrial device.
- Query Modbus RTU devices over serial connections to read temperature, pressure, or status registers.
- Implement a Modbus gateway that bridges TCP clients to RTU serial devices or vice versa.
- Write integration tests for Modbus-based hardware by simulating a server or client in pure Python.
- Prototype industrial automation logic without proprietary Modbus libraries or commercial tools.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, if you need Modbus protocol support in Python.
The package is mature, actively maintained, has no known vulnerabilities, and low install friction. The copyleft license (MPL 2.0) is a consideration for proprietary projects; verify compatibility with your licensing requirements before use.
Install
umodbus on PyPI
Before you install
Low install friction with a single runtime dependency (pyserial). The package is actively maintained with recent commits and has been stable since its first release in 2015.
Requires a Modbus server listening on the target host and port; RTU mode requires pyserial for serial port communication.
License in practice
Licensed under Mozilla Public License 2.0 (copyleft), which requires derivative works to disclose modifications and license them under the same terms; suitable for open-source projects but may constrain proprietary use.
Quickstart
import socket
from umodbus.client import tcp
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('localhost', 502))
message = tcp.write_multiple_coils(slave_id=1, starting_address=1, values=[1, 0, 1, 1])
response = tcp.send_message(message, sock)
sock.close()
Verify before relying
- Whether the package supports Modbus protocol versions beyond V1.1b3 or extensions like Modbus Plus.
- Current compatibility with Python versions beyond 3.8 (classifiers list only up to 3.8).
- Performance characteristics for high-frequency polling or large register sets.
Package facts
| License | MPL copyleft |
| Python support | Not specified |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 1 packagepyserial |
| Maintenance | Actively maintained 2,178 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 159,886 / month, #10,684 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 6 - MatureIntended Audience :: DevelopersLicense :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)Operating System :: OS IndependentProgramming Language :: Python :: 2.7Programming Language :: Python :: 3.4Programming Language :: Python :: 3.5Programming Language :: Python :: 3.6Programming Language :: Python :: 3.7Programming Language :: Python :: 3.8Topic :: Software Development :: Embedded Systems |
Evidence: uModbus-1.0.4-py2.py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “modbus protocol implementation”
- uModbusuModbus is a pure Python implementation of the Modbus protocol that…
- pymodbusPyModbus is a complete Modbus protocol implementation providing…
- pyModbusTCPA pure-Python Modbus/TCP client and server library for reading and…
Give your agent the search over MCP, or paste the wish link into any chat.
More Embedded Systems packages
Provides Python abstractions and utilities for Controller Area Network (CAN) communication, supporting multiple hardware backends and message logging formats.
Install it if you need to communicate with CAN buses from Python.
Provides quaternion representation, manipulation, and rotation operations for 3D geometry and animation, with support for smooth interpolation between orientations.
Calculates CRC and checksum values from binary data using parametrized algorithms from the CRC catalogue, supporting dozens of standard CRC variants and additive/XOR checksums.
Install it if you need standard CRC calculations; avoid it only if you require active feature development or real-time performance guarantees.
esptool is a serial utility for flashing, provisioning, and interacting with Espressif microcontroller SoCs over a serial connection.
Install it if you develop or deploy firmware on Espressif SoCs.
Provides kconfig language support and IDE tooling for configuring Espressif ESP-IDF embedded projects, including configuration parsing, validation, and documentation generation.
pyOCD is a Python-based debugger and programmer for Arm Cortex-M microcontrollers that works with many debug probes across Linux, macOS, Windows, and FreeBSD.
See also async-modbus · pyModbusTCP · pymodbus · minimalmodbus · nibe · huawei-solar · goodwe · pystiebeleltron · icmplib · pymemcache