QModMaster vs mbpoll: GUI or Command Line?
QModMaster gives you a Qt graphical interface with live register tables and a Bus Monitor for watching raw frames. mbpoll, by Pascal JEAN, is a command-line utility that talks to Modbus slaves over RTU or TCP, built on libmodbus and released under the GPL-3.0 license. Both are free, both read and write Modbus registers — so which one should you reach for? It depends on where you sit: at a desktop, or on a headless box.
The short answer
Desktop, interactive debugging, first contact with an unknown device → QModMaster. Fill in the connection dialog, see values update live, flip the display between hex, integer and float, and open the Bus Monitor when something looks wrong.
Raspberry Pi, headless server, cron job, automated test script → mbpoll. It is a single tiny binary (Debian and Ubuntu ship it as the mbpoll package; macOS users can brew install mbpoll), it runs fine with no display attached, and its output pipes straight into your scripts.
Side by side
- Interface: QModMaster — graphical register tables and dialogs. mbpoll — one-liners in the terminal.
- Best for: QModMaster — exploring an unknown device, watching values change, teaching. mbpoll — scheduled polling, logging, CI checks, remote SSH sessions.
- Frame-level debugging: QModMaster’s Bus Monitor shows raw request/response frames in the GUI. mbpoll prints poll statistics when you stop it with Ctrl-C, and you can capture its traffic with standard network tools.
- Footprint: QModMaster is a full Qt GUI application. mbpoll is a single small command-line binary that runs on Linux (x86, x86_64, armhf, arm64 — including Armbian/Raspbian on the Pi), Windows and macOS.
- What it can do: both read discrete inputs, read and write coils, read input registers, and read and write holding registers, with values shown in decimal, hexadecimal or single-precision float.
- License: QModMaster — LGPLv3 (upstream project). mbpoll — GPL-3.0.
The same read, two ways
Reading 10 holding registers from slave 1 over a serial link at 9600 baud. In QModMaster: open the connection dialog, pick the serial port, set the unit ID to 1, choose “Read Holding Registers”, start address and count — the values appear in the table. In mbpoll, the equivalent is one command (flags follow the documented mbpoll -h help):
# Read 10 holding registers (-t 4) of slave 1 (-a 1),
# start reference 1 (-r 1), count 10 (-c 10), 9600 baud RTU:
mbpoll -a 1 -b 9600 -t 4 -r 1 -c 10 /dev/ttyUSB0
# Same idea over Modbus TCP (TCP is mbpoll's default mode):
mbpoll -m tcp -a 1 -t 4 -r 1 -c 10 -p 502 192.168.1.100
# Poll just once instead of looping, quieter output:
mbpoll -1 -a 1 -t 4 -r 1 -c 10 192.168.1.100
Handy flags worth knowing: -t 4:float reads a 32-bit float pair, -B switches 32-bit values to big-endian word order, -l sets the poll interval in milliseconds, and -o sets the timeout. Run mbpoll -h (or man mbpoll on Linux) for the complete list — the syntax deliberately resembles the classic proconX modpoll tool, though mbpoll is an independent codebase.
Use them together: the practical workflow
- 1. Probe interactively in QModMaster. Find the right slave ID, the right function code and addresses, and confirm the byte order of multi-register values (see our float byte-order guide if numbers look insane).
- 2. Freeze the working parameters into an mbpoll one-liner for cron, logging scripts or a Pi that has no monitor.
- 3. When the script misbehaves, go back to QModMaster’s Bus Monitor to see the raw frames again. GUI for diagnosis, CLI for automation — they complement each other.
