Skip to content

🐍 ModbusSniffer – Free Modbus RTU Analyzer with GUI (Python / PyQt6)

A lightweight and user-friendly Modbus RTU sniffer tool with a graphical interface.
Easily analyze and debug communication between PLCs, HMIs, and other Modbus RTU devices via serial ports.

GitHub release License: MIT

ModbusSniffer GUI demo

Live preview of ModbusSniffer GUI in action


πŸš€ Why ModbusSniffer (This Fork)?

πŸ” General Highlights

  • 🧰 Sniffs raw Modbus RTU frames from serial ports (RS-485, USB)
  • πŸ–₯️ Graphical User Interface (PyQt6) β€” no terminal needed
  • πŸ“‹ Frame table: Real-time view with decoded address, function code, and data
  • 🌈 Live Logging: Color-coded request–response pairs, unmatched requests highlighted
  • πŸͺŸ Cross-platform: Windows & Linux
  • πŸ†“ Free & Open Source (MIT license)

πŸ› οΈ Why This Fork (What's New)

  • πŸ’» Modular code refactor β€” clear separation into modules and classes
  • 🧠 Rewritten Modbus parser (ModbusParser class) with clean structure
  • πŸ–₯️ Fully integrated GUI (previously only CLI)
  • πŸ”„ All command-line functionality preserved and upgraded into the GUI

πŸ†• What’s New

See the full CHANGELOG.md for details.


πŸ”§ ToDo

  • Improve GUI with:
  • Add frame filtering
  • Add posibility to set log files path

πŸ—ΊοΈ Roadmap

  • Support for Modbus TCP
  • Custom function code decoding
  • Advanced filtering and analysis tools
  • Plugin system for extensions

πŸ“š Documentation & Support

  • Detailed documentation will be available in the docs/ folder soon.
  • Questions or issues? Open an issue or join the Discussions.

πŸ§ͺ Testing

Run tests with pytest:

pip install -e .[dev]
pytest

Coverage report:

pytest --cov=modbus_sniffer


🀝 Contributing

Contributions are welcome!

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature-name)
  3. Commit your changes (git commit -m "Add feature")
  4. Push to branch (git push origin feature-name)
  5. Open a Pull Request

After cloning the repository and setting up a virtual environment, you can install all development tools (used in CI/CD pipeline and for local testing, linting, and packaging) with:

pip install -e .[dev]
This includes formatters, linters, type checkers, test runners, and build tools.


🀝 Acknowledgments

Thanks to the original author BADAndrea for the initial ModbusSniffer implementation.
Special thanks to all contributors and the open-source community for feedback and improvements.


πŸ“œ License

This project is licensed under the MIT License β€” see the LICENSE file.

This project is a fork of BADAndrea ModbusSniffer
Fork maintained by niwciu with enhancements described above.


❀️ Thank you for using this version of ModbusSniffer!

--- myEmbeddedWayBanerWhiteSmaller ---