#!/bin/sh /etc/rc.common START=05 STOP=10 USE_PROCD=1 start_service() { # Instance 1: create PTY pair procd_open_instance procd_set_param command socat -d -d pty,link=/dev/ttySMD7IN,raw,echo=0,group=20,perm=660 \ pty,link=/dev/ttySMD7,raw,echo=1,group=20,perm=660 procd_set_param respawn 0 0 0 procd_set_param stdout 1 procd_set_param stderr 1 procd_close_instance # Instance 2: forward /dev/smd7 → /dev/ttySMD7IN procd_open_instance procd_set_param command /bin/sh -c ' while [ ! -e /dev/ttySMD7IN ]; do sleep 0.1; done exec cat /dev/smd7 > /dev/ttySMD7IN ' procd_set_param respawn 0 0 0 procd_set_param stdout 1 procd_set_param stderr 1 procd_close_instance # Instance 3: forward /dev/ttySMD7IN → /dev/smd7 procd_open_instance procd_set_param command /bin/sh -c ' while [ ! -e /dev/ttySMD7IN ]; do sleep 0.1; done exec cat /dev/ttySMD7IN > /dev/smd7 ' procd_set_param respawn 0 0 0 procd_set_param stdout 1 procd_set_param stderr 1 procd_close_instance } stop_service() { echo "Stopping socat bridge and cleaning up..." rm -f /dev/ttySMD7 /dev/ttySMD7IN }