finds.dev← search

// the find

3cky/mbusd

★ 666 · C · BSD-3-Clause · updated Apr 2026

Open-source Modbus TCP to Modbus RTU (RS-232/485) gateway.

mbusd is a Modbus TCP gateway that bridges TCP masters to RTU slave devices over RS-232/485. It runs on Linux, including embedded SBCs, and handles multi-master access to a single serial bus. If you have industrial sensors, PLCs, or meters on a serial bus that need to talk to modern network-connected software, this is the glue.

1. Multi-master support is genuinely useful — most hardware gateways are single-master, so being able to route multiple TCP connections to one serial bus without buying expensive hardware is the core value here. 2. RS-485 direction control is handled properly with multiple strategies (kernel RS-485 mode, RTS toggle active-high/active-low, sysfs pin) — RS-485 half-duplex direction switching is where cheap software gateways usually fail silently. 3. systemd templated unit file (`mbusd@ttyUSB0.service`) lets you run multiple instances cleanly with per-port config files, which is exactly what you need in production with multiple serial buses. 4. Docker image is published and the config mount pattern is correct — you can drop this into an IoT edge stack without compiling from source.

1. Only Modbus RTU on the serial side — no ASCII mode support. Older industrial gear sometimes only speaks ASCII, and you'll hit a wall. 2. No TLS on the TCP side. Standard Modbus TCP is unauthenticated and unencrypted by design, and mbusd does nothing to change that — fine on a closed LAN, a real problem if you're routing this anywhere near the internet. 3. CRC retry logic exists but there's no configurable inter-message delay per slave ID, which matters when you have mixed-speed slaves on the same bus — you'll have to tune the global `-R` pause conservatively for the slowest device. 4. The test suite uses Python with socat to simulate the serial port, which is better than nothing, but it only exercises the happy path for the supported function codes; failure modes and CRC retry behavior aren't covered.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →