Open-source project
sanny32/OpenModScan avatar
sanny32/OpenModScan

OpenModScan, a Modbus master utility for reading and writing registers

Open ModScan is a Free Modbus Master (Client) Utility

726 stars112 forksC++MIT

At a glance

What is it?
OpenModScan is a Qt desktop client for Modbus-TCP and Modbus-RTU, built for engineers who need to poke at a device by hand: read and write coils and registers, log the traffic, scan an address range and parse raw frames. It is free under the MIT licence and ships as Windows installers, DEB, RPM and Flatpak packages.
Who is it for?
OpenModScan fits field engineers and developers who need a hands-on Modbus master on a laptop, on a serial-to-USB line, or against a device that answers on a TCP port, and it is a good fit for a bench where you want to see the raw frames as well as the decoded values.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 6 days ago.
What is it written in?
Mainly C++, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 24, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A Modbus master for poking at a device by hand

OpenModScan is described as a free and open-source Modbus Master, also called a client, utility. That word master is the important one: the program sits on the initiator side of the conversation, the side that sends requests and reads the replies. It is the tool you reach for when a device has just been installed and someone needs to know whether register 40001 actually holds what the documentation claims, or when a field fault comes down to a single register and you want to read it without writing a script. The project is written in C++ with a Qt interface, and it speaks both Modbus-TCP and Modbus-RTU, which covers the two transport styles you will meet on a serial line and on an Ethernet network. The intended user is an engineer at a terminal, not a service running in a plant.

The function code list shows exactly what you can do

The README lists the supported Modbus functions in two groups, and reading that list tells you what the tool is and is not. On the discrete side it supports 0x01 Read Coils, 0x02 Read Discrete Inputs, 0x05 Write Single Coil and 0x0F Write Multiple Coils. On the register side it supports 0x03 Read Holding Registers, 0x04 Read Input Registers, 0x06 Write Single Register, 0x10 Write Multiple Registers and 0x16 Mask Write Register. So this is a complete read and write client for the standard data model rather than a read-only monitor. Mask Write Register is the least commonly used of the eight and is the one worth checking first against your device, since not every slave implements it. The list is also the boundary of the tool: it is Modbus and nothing else, with no Modbus ASCII and no vendor-specific protocol extensions.

Building from source with cmake, Qt 5 or Qt 6

Building is done through cmake with Qt 5.15 or above, or through Qt Creator, and both Windows and Linux are supported. On Linux the sequence is short:

bash
git clone https://github.com/sanny32/OpenModScan.git
bash
cd OpenModScan
bash
./build.sh

The build script takes a parameter when you need to pin the Qt major version, and the README gives both forms as `./build.sh -qt5` or `./build.sh -qt6`. On Windows the procedure is longer and needs a PowerShell terminal run as Administrator, because the build script is a PowerShell script and execution policy has to be relaxed for the process. You clone the repository, change into the OpenModScan folder, and then:

powershell
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
powershell
.\build.ps1

The same parameter convention applies, with `.\build.ps1 -qt5` or `.\build.ps1 -qt6`. One constraint is worth knowing before you plan a build: the script supports building the application only for 64-bit architecture, even though 32-bit binaries are published for download. The minimum supported Windows version for building from sources is Windows 10, which is a higher floor than the Windows 7 runtime support listed further down.

Installing from packages on six Linux families

Most users will take a binary rather than build. On Debian, Ubuntu, Mint, Zorin and Astra Linux the DEB package installs with apt, and a separate Qt5 build exists alongside the Qt6 one:

bash
sudo apt install ./qt6-omodscan_1.16.1-1_amd64.deb

Removal is the mirror image, using `sudo apt remove qt6-omodscan` or `sudo apt remove qt5-omodscan`. On the RedHat, Fedora, Rocky and RedOS side the RPM goes in through dnf, and on Alt Linux the README gives an apt-get command for the same RPM file, which is unusual enough to double-check before you rely on it. SUSE and OpenSUSE use zypper, and they need the signing key imported first:

bash
sudo rpm --import qt6-omodscan.rpm.pubkey
bash
sudo zypper install ./qt6-omodscan_1.16.1-1.x86_64.rpm

The Flatpak route installs the Flathub remote and then the app, and the README notes that a serial port connection needs extra handling, which is worth reading before assuming a USB serial adapter will appear inside the sandbox.

bash
flatpak remote-add --user --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
bash
flatpak install --user io.github.sanny32.omodscan.flatpak

Windows users run an installer, with 32-bit and 64-bit builds named separately and both Qt variants for 64-bit.

Address scan, scanner, message parser and user messages

The extended features are what separate this from a plain register viewer, and they are the parts that matter when a device does not behave as documented. The Modbus Address Scan probes a range of addresses to find what answers and what does not, which is the fastest way to map a device whose register map you do not have. The Modbus Scanner goes further and supports Modbus RTU, Modbus TCP and Modbus RTU over TCP, so it can sweep a serial bus and a network from one tool. The Modbus Message Parser takes a raw frame and decodes it field by field, which turns a hex dump into something readable. The Modbus User Message feature lets you compose and send a message yourself rather than choosing from a fixed function code, and that is the escape hatch for the slave with a quirk in its protocol implementation. Together these four cover the common field problems: unknown address map, mixed transports, and frames you cannot interpret at a glance.

Logging and the operating system floor

The Modbus Logging feature records the request and response traffic, and the README shows it as its own screen. For a tool whose main job is diagnosing a device that misbehaves only sometimes, the log is arguably the most valuable part of the interface, since it is what lets you separate a wrong setting on your side from a wrong answer from the device. The supported operating system list is explicit about minimum versions: Microsoft Windows 7, Debian Linux 11, Ubuntu Linux 22.04, Mint Linux 22, Zorin OS 18, Fedora Linux 41, Rocky Linux 9.7, OpenSUSE Linux 15.6, Alt Linux 11, Astra Linux 1.7 and RedOS 8. That range tells you the project is tested against a wide set of distributions including several Russian ones, which is unusual for a hobby-scale utility and suggests real field use rather than a desktop toy. Note the gap between the runtime floors and the build floor, since building from source needs Windows 10 while running a downloaded binary on Windows 7 is still supported.

Where OpenModScan is the wrong tool

The main wrong-tool case is production. OpenModScan is an interactive operator tool with a GUI, a log viewer and a message composer, and none of that belongs inside a service that has to poll a device on a schedule, retry on failure and report status upward. Writing that against a Modbus client library in your own language is a different design with different failure handling, and a GUI utility offers you none of that. The second limitation is protocol scope, since only Modbus is covered, with no Modbus ASCII, no proprietary vendor protocol and no other fieldbus such as Profinet or EtherNet/IP. The third is that a full-featured Modbus client with scripting, a database of device profiles and scheduling would be a different program. A subtler limitation is that the Windows build script only produces 64-bit binaries, so a 32-bit target means using the published installer rather than your own build.

Editorial conclusion

OpenModScan fits field engineers and developers who need a hands-on Modbus master on a laptop, on a serial-to-USB line, or against a device that answers on a TCP port, and it is a good fit for a bench where you want to see the raw frames as well as the decoded values. It is the wrong tool for continuous polling inside a running control system, for Modbus ASCII, or for any protocol other than Modbus, and it is no substitute for a properly configured client library in production code. Before you install, confirm the package flavour matches your Qt libraries and distribution, since the DEB and RPM artifacts ship as separate qt5 and qt6 builds, and check that your device's serial port is exposed on the machine you run it from. The last push was on 2026-10-19 and version 1.16.1 was published on 2026-09-29, so the tool is still moving.

Frequently asked questions

What protocols does OpenModScan support?

It supports both Modbus-TCP and Modbus-RTU, and the Modbus Scanner feature adds Modbus RTU over TCP. The protocol coverage is Modbus only.

Which Modbus function codes can OpenModScan read and write?

It supports 0x01, 0x02, 0x05 and 0x0F on the coil and discrete input side, and 0x03, 0x04, 0x06, 0x10 and 0x16 on the register side, covering reads, single and multiple writes and mask write register.

How do I build OpenModScan on Linux?

Clone the repository, change into the OpenModScan folder and run ./build.sh. Building uses cmake with Qt 5.15 or above, and the script accepts -qt5 or -qt6 to pick the Qt major version.

How do I install OpenModScan as a Flatpak?

Add the Flathub remote with flatpak remote-add --user --if-not-exists flathub, then run flatpak install --user io.github.sanny32.omodscan.flatpak. The README notes that using a serial port connection needs additional handling.

What is the license of OpenModScan?

The project is released under the MIT License, with LICENSE.md in the repository root. The Windows, DEB, RPM and Flatpak builds are distributed from the repository releases page.

Official sources

  1. License: MIT
  2. Project website
  3. README
  4. Releases
  5. sanny32/OpenModScan on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/sanny32-openmodscan.svg)](https://hysenlabs.com/projects/sanny32-openmodscan)

Was this useful?