[Unit] Description=FailureWatt Growatt Modbus RTU->TCP bridge After=network-online.target Wants=network-online.target StartLimitIntervalSec=60 StartLimitBurst=5 [Service] Type=simple Environment=DEVICE=/dev/serial/by-id/usb-YOUR_RS485_ADAPTER Environment=BRIDGE_IP=192.168.1.20 Environment=BRIDGE_PORT=5020 # Important: no unrestricted "fork" here. # One TCP client is bridged to one serial adapter. ExecStart=/usr/bin/socat -d -d \ TCP-LISTEN:${BRIDGE_PORT},bind=${BRIDGE_IP},reuseaddr \ FILE:${DEVICE},raw,b9600,cs8,parenb=0,cstopb=0 Restart=always RestartSec=10 TimeoutStopSec=5 KillMode=control-group SuccessExitStatus=143 User=root Group=dialout [Install] WantedBy=multi-user.target