Modbus/TCP firmware for Cytron IRIV IO using Rust
Modbus/TCP firmware for Cytron IRIV IO using Rust
Introduction

iriv-io-modbus-tcp is an open-source firmware project that aims to run a Modbus/TCP server on the Cytron IRIV IO Controller—a compact industrial I/O device with isolated inputs/outputs and Ethernet. The project is written in Rust using Embassy (async embedded framework) and is currently described as “partial feature parity, in development.”
Note: This is a community project and not created by WIZnet.
Author introduction
The repository is maintained by andergisomon (Ander). From their GitHub profile, they’re an Electrical & Electronics Engineering undergrad (Universiti Teknologi PETRONAS) with interests spanning embedded systems and related areas.
Project description (what it does)
At a high level, this project is targeting:
- Modbus/TCP over Ethernet on IRIV IO (typical Modbus TCP port is 502).
- A Rust + Embassy architecture (good fit for responsive, non-blocking networking + I/O).
- Active development status: there’s an open issue to “debug and complete all current modbus request impls,” which suggests ongoing work to finish/validate function handling.
- Licensing: the repo is published under GPL-3.0.
Repository also includes helper/test artifacts (for example, a Python client script filename appears in the repo root)
About IRIV IO (hardware context)

Cytron IRIV IO Controller is an Industry 4.0–style I/O controller built around the Raspberry Pi RP2350 and includes a 10/100 Ethernet port implemented via the WIZnet W5500. It’s designed for lightweight automation and “I/O expander / data gatherer / gateway” style roles.
Common industrial-facing capabilities include:
- 11× isolated digital inputs (up to 50V) and 4× isolated digital outputs (up to 50V)
- 2× analog inputs (voltage or current selectable)
- Industrial-friendly packaging like a DIN-rail mountable metal enclosure (per product ecosystem descriptions)
Why WIZnet is used (in this stack)
IRIV IO’s Ethernet is based on the WIZnet W5500, which provides a hardwired TCP/IP stack plus integrated MAC+PHY—so the MCU/firmware can focus on application logic (Modbus register mapping, I/O control, scheduling) rather than running a full software TCP/IP stack.
This is especially relevant for Modbus/TCP devices where you want:
- stable socket behavior,
- predictable memory use,
- and simpler embedded networking integration
How it can benefit
- Real industrial use case visibility: Modbus/TCP I/O modules are a classic industrial Ethernet workload, and this project is explicitly positioned in that space on W5500-based hardware.
- Rust ecosystem pull: A Rust/Embassy-based networking firmware on W5500 hardware is a nice “modern embedded” story and can attract developers who don’t want to start from C examples.

