uzbek-plus/b12/b12q/alpine-overlay/etc/init.d/aurora-ncm

22 lines
1.3 KiB
Text

#!/sbin/openrc-run
# B12Q: usb_up + telnetd from the LFS init (DEVELOPMENT IDs 18d1:d001, NCM 172.16.42.1/24, root telnet bound to NCM only). Unchanged logic.
description="Aurora USB NCM management + telnetd"
depend() { after aurora-ro; }
start() {
ebegin "USB NCM gadget"
grep -q " /sys/kernel/config " /proc/mounts || mount -t configfs configfs /sys/kernel/config
for i in $(seq 1 50); do udc=$(ls /sys/class/udc 2>/dev/null | head -1); [ -n "$udc" ] && break; sleep 0.2; done
[ -n "$udc" ] || { eend 1 "no UDC"; return 1; }
G=/sys/kernel/config/usb_gadget/aurora
if [ ! -d $G ]; then
mkdir -p $G; echo 0x18d1 > $G/idVendor; echo 0xd001 > $G/idProduct
mkdir -p $G/strings/0x409; echo Aurora > $G/strings/0x409/manufacturer; echo "Aurora RAM Boot" > $G/strings/0x409/product; echo <EMMC_SERIAL> > $G/strings/0x409/serialnumber
mkdir -p $G/functions/ncm.usb0 $G/configs/c.1/strings/0x409; echo NCM > $G/configs/c.1/strings/0x409/configuration
ln -s $G/functions/ncm.usb0 $G/configs/c.1/
fi
[ -n "$(cat $G/UDC)" ] || echo "$udc" > $G/UDC || { eend 1 "bind UDC"; return 1; }
ifc=$(cat $G/functions/ncm.usb0/ifname)
ip link set lo up; ip addr show dev "$ifc" | grep -q " 172.16.42.1/24 " || ip addr add 172.16.42.1/24 dev "$ifc"; ip link set "$ifc" up
pidof telnetd >/dev/null || telnetd -l /bin/sh -b 172.16.42.1 -p 23
eend $? "telnetd"
}