{"id":23125,"library":"minimalmodbus","title":"minimalmodbus","description":"Easy-to-use Modbus RTU and Modbus ASCII implementation for Python. Version 2.1.1 supports Python >=3.8. Released semi-regularly, with a focus on simplicity and reliability for talking to Modbus devices over serial ports.","status":"active","version":"2.1.1","language":"python","source_language":"en","source_url":"https://github.com/pyhys/minimalmodbus","tags":["modbus","rtu","ascii","serial","industrial","instrumentation"],"install":[{"cmd":"pip install minimalmodbus","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"Required for serial communication","package":"pyserial","optional":false}],"imports":[{"note":"Wrong usage is uncommon but direct import is standard.","wrong":"import minimalmodbus; inst = minimalmodbus.Instrument(...)","symbol":"Instrument","correct":"from minimalmodbus import Instrument"}],"quickstart":{"code":"import minimalmodbus\nimport serial\n\ninstrument = minimalmodbus.Instrument('/dev/ttyUSB0', 1)  # port, slave address\ninstrument.serial.baudrate = 9600\ninstrument.serial.bytesize = 8\ninstrument.serial.parity = serial.PARITY_NONE\ninstrument.serial.stopbits = 1\ninstrument.serial.timeout = 0.5\n\n# Read temperature (register 0, signed 16-bit)\ntemperature = instrument.read_register(0, 0, signed=True)\nprint(temperature)","lang":"python","description":"Quick example reading a Modbus register."},"warnings":[{"fix":"Set serial parameters via the instrument.serial attribute after creation.","message":"In version 2.0.0, the 'minimalmodbus' module was restructured. The 'Instrument' class now requires explicit serial configuration. Old code using positional arguments for baudrate, parity etc. must be updated.","severity":"breaking","affected_versions":">=2.0.0"},{"fix":"Subtract 1 from usual Modbus addresses.","message":"Modbus addresses are often 1-based in documentation but minimalmodbus uses 0-based register addresses. For example, holding register 40001 in Modbus maps to register address 0 in the library.","severity":"gotcha","affected_versions":"all"},{"fix":"Use pymodbus for Modbus TCP, or use a serial-to-TCP converter.","message":"The library does not support Modbus TCP natively; it is serial-only. Users often try to pass a hostname and port, which fails.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Use a slave address in range 1-247.","cause":"Slave address must be between 1 and 247. Address 0 is reserved for broadcast.","error":"ValueError: The slaveaddress 0 cannot be used."},{"fix":"Check the correct port name (e.g., /dev/ttyUSB0, COM3). On Linux, ensure user has dialout group permissions.","cause":"Serial port does not exist or is not accessible.","error":"serial.serialutil.SerialException: [Errno 2] could not open port /dev/ttyUSB0: [Errno 2] No such file or directory: '/dev/ttyUSB0'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}