diff --git a/ipk-source/socat-at-bridge/CONTROL/control b/ipk-source/socat-at-bridge/CONTROL/control index 005425c..fe0ecbe 100755 --- a/ipk-source/socat-at-bridge/CONTROL/control +++ b/ipk-source/socat-at-bridge/CONTROL/control @@ -1,5 +1,5 @@ Package: socat-at-bridge -Version: 1.1.0 +Version: 1.1.1 Depends: libc socat Source: github/iamromulan/quectel-rgmii-toolkit Section: utils diff --git a/ipk-source/socat-at-bridge/CONTROL/prerm b/ipk-source/socat-at-bridge/CONTROL/prerm index 1d2b03b..0b1e05e 100755 --- a/ipk-source/socat-at-bridge/CONTROL/prerm +++ b/ipk-source/socat-at-bridge/CONTROL/prerm @@ -2,6 +2,7 @@ echo "Disabling socat-at-bridge at startup" service socat-at-bridge disable +service socat-at-bridge-smd7 disable echo "Stopping socat-at-bridge" service socat-at-bridge stop service socat-at-bridge-smd7 stop diff --git a/ipk-source/socat-at-bridge/root/etc/init.d/socat-at-bridge b/ipk-source/socat-at-bridge/root/etc/init.d/socat-at-bridge index 5ee71e9..7569dd8 100755 --- a/ipk-source/socat-at-bridge/root/etc/init.d/socat-at-bridge +++ b/ipk-source/socat-at-bridge/root/etc/init.d/socat-at-bridge @@ -1,33 +1,13 @@ #!/bin/sh /etc/rc.common -START=30 +START=05 STOP=10 USE_PROCD=1 start_service() { procd_open_instance - - # Start socat to create /dev/ttySMD11IN and /dev/ttySMD11 - procd_set_param command \ - socat -d -d pty,link=/dev/ttySMD11IN,raw,echo=0,group=20,perm=660 \ - pty,link=/dev/ttySMD11,raw,echo=1,group=20,perm=660 - procd_set_param respawn - procd_set_param stdout 1 - procd_set_param stderr 1 - procd_close_instance - - # Start cat process for /dev/smd11 to /dev/ttySMD11IN - procd_open_instance - procd_set_param command sh -c "cat /dev/smd11 > /dev/ttySMD11IN" - procd_set_param respawn - procd_set_param stdout 1 - procd_set_param stderr 1 - procd_close_instance - - # Start cat process for /dev/ttySMD11IN to /dev/smd11 - procd_open_instance - procd_set_param command sh -c "cat /dev/ttySMD11IN > /dev/smd11" + procd_set_param command /usr/sbin/socat-at-bridge.sh procd_set_param respawn procd_set_param stdout 1 procd_set_param stderr 1 diff --git a/ipk-source/socat-at-bridge/root/etc/init.d/socat-at-bridge-smd7 b/ipk-source/socat-at-bridge/root/etc/init.d/socat-at-bridge-smd7 index 708f3dc..742f4fc 100755 --- a/ipk-source/socat-at-bridge/root/etc/init.d/socat-at-bridge-smd7 +++ b/ipk-source/socat-at-bridge/root/etc/init.d/socat-at-bridge-smd7 @@ -1,33 +1,13 @@ #!/bin/sh /etc/rc.common -START=30 +START=05 STOP=10 USE_PROCD=1 start_service() { procd_open_instance - - # Start socat to create /dev/ttySMD7IN and /dev/ttySMD7 - 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 - procd_set_param stdout 1 - procd_set_param stderr 1 - procd_close_instance - - # Start cat process for /dev/smd11 to /dev/ttySMD11IN - procd_open_instance - procd_set_param command sh -c "cat /dev/smd7 > /dev/ttySMD7IN" - procd_set_param respawn - procd_set_param stdout 1 - procd_set_param stderr 1 - procd_close_instance - - # Start cat process for /dev/ttySMD7IN to /dev/smd7 - procd_open_instance - procd_set_param command sh -c "cat /dev/ttySMD7IN > /dev/smd7" + procd_set_param command /usr/sbin/socat-at-bridge-smd7.sh procd_set_param respawn procd_set_param stdout 1 procd_set_param stderr 1 diff --git a/ipk-source/socat-at-bridge/root/usr/sbin/socat-at-bridge-smd7.sh b/ipk-source/socat-at-bridge/root/usr/sbin/socat-at-bridge-smd7.sh new file mode 100755 index 0000000..ffb0da7 --- /dev/null +++ b/ipk-source/socat-at-bridge/root/usr/sbin/socat-at-bridge-smd7.sh @@ -0,0 +1,37 @@ +#!/bin/ash + +# Optional logging for debugging +LOGFILE="/var/log/socat-bridge-smd7.log" + +# Start socat to create virtual TTY devices +echo "$(date): Starting socat..." >> "$LOGFILE" +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 & +SOCAT_PID=$! + +# Allow socat to initialize +sleep 1 + +# Start forwarding data from /dev/smd7 to /dev/ttySMD7IN +echo "$(date): Starting forward from /dev/smd7 to /dev/ttySMD7IN..." >> "$LOGFILE" +cat /dev/smd7 > /dev/ttySMD7IN & +CAT1_PID=$! + +# Start forwarding data from /dev/ttySMD7IN to /dev/smd7 +echo "$(date): Starting forward from /dev/ttySMD7IN to /dev/smd7..." >> "$LOGFILE" +cat /dev/ttySMD7IN > /dev/smd7 & +CAT2_PID=$! + +# Handle script termination and cleanup +cleanup() { + echo "$(date): Cleaning up processes..." >> "$LOGFILE" + kill "$SOCAT_PID" "$CAT1_PID" "$CAT2_PID" 2>/dev/null + wait + echo "$(date): All processes stopped." >> "$LOGFILE" +} + +# Trap termination signals to run cleanup +trap cleanup INT TERM EXIT + +# Wait for all background processes to finish +wait diff --git a/ipk-source/socat-at-bridge/root/usr/sbin/socat-at-bridge.sh b/ipk-source/socat-at-bridge/root/usr/sbin/socat-at-bridge.sh new file mode 100755 index 0000000..67d4663 --- /dev/null +++ b/ipk-source/socat-at-bridge/root/usr/sbin/socat-at-bridge.sh @@ -0,0 +1,37 @@ +#!/bin/ash + +# Optional logging for debugging +LOGFILE="/var/log/socat-bridge.log" + +# Start socat to create virtual TTY devices +echo "$(date): Starting socat..." >> "$LOGFILE" +socat -d -d pty,link=/dev/ttySMD11IN,raw,echo=0,group=20,perm=660 \ + pty,link=/dev/ttySMD11,raw,echo=1,group=20,perm=660 & +SOCAT_PID=$! + +# Allow socat to initialize +sleep 1 + +# Start forwarding data from /dev/smd11 to /dev/ttySMD11IN +echo "$(date): Starting forward from /dev/smd11 to /dev/ttySMD11IN..." >> "$LOGFILE" +cat /dev/smd11 > /dev/ttySMD11IN & +CAT1_PID=$! + +# Start forwarding data from /dev/ttySMD11IN to /dev/smd11 +echo "$(date): Starting forward from /dev/ttySMD11IN to /dev/smd11..." >> "$LOGFILE" +cat /dev/ttySMD11IN > /dev/smd11 & +CAT2_PID=$! + +# Handle script termination and cleanup +cleanup() { + echo "$(date): Cleaning up processes..." >> "$LOGFILE" + kill "$SOCAT_PID" "$CAT1_PID" "$CAT2_PID" 2>/dev/null + wait + echo "$(date): All processes stopped." >> "$LOGFILE" +} + +# Trap termination signals to run cleanup +trap cleanup INT TERM EXIT + +# Wait for all background processes to finish +wait