mirror of
https://gitee.com/bianbu-linux/buildroot-ext
synced 2025-06-27 17:10:54 -04:00
97 lines
2.9 KiB
Bash
Executable file
97 lines
2.9 KiB
Bash
Executable file
#!/bin/sh
|
|
VENDOR_ID="0x361c"
|
|
PRODUC_ID="0x0008"
|
|
SERNUM_STR="20211102"
|
|
MANUAF_STR="Spacemit"
|
|
PRODUC_STR="K1 ADB"
|
|
DEFAULT_UDC="c0900100.udc"
|
|
|
|
[ -e /sys/class/net/eth0 ] && ADB_MAC_SN=$(sed 's/://g' /sys/class/net/eth0/address)
|
|
[ "$ADB_MAC_SN" ] && SERNUM_STR=$ADB_MAC_SN
|
|
[ "$ADB_BOARD_SN" ] || ADB_BOARD_SN=$(cat /proc/device-tree/serial-number)
|
|
[ "$ADB_BOARD_SN" ] && SERNUM_STR=$ADB_BOARD_SN
|
|
|
|
config_gadget()
|
|
{
|
|
echo "$0: config $VENDOR_ID/$PRODUC_ID/$SERNUM_STR/$MANUAF_STR/$PRODUC_STR."
|
|
# mount /dev/mmcblk0 /mnt/SDCARD
|
|
mount -t configfs none /sys/kernel/config
|
|
mkdir /sys/kernel/config/usb_gadget/g1
|
|
echo $VENDOR_ID > /sys/kernel/config/usb_gadget/g1/idVendor
|
|
echo $PRODUC_ID > /sys/kernel/config/usb_gadget/g1/idProduct
|
|
mkdir /sys/kernel/config/usb_gadget/g1/strings/0x409
|
|
echo $SERNUM_STR > /sys/kernel/config/usb_gadget/g1/strings/0x409/serialnumber
|
|
echo $MANUAF_STR > /sys/kernel/config/usb_gadget/g1/strings/0x409/manufacturer
|
|
echo $PRODUC_STR > /sys/kernel/config/usb_gadget/g1/strings/0x409/product
|
|
mkdir /sys/kernel/config/usb_gadget/g1/configs/c.1
|
|
echo 0xc0 > /sys/kernel/config/usb_gadget/g1/configs/c.1/bmAttributes
|
|
echo 500 > /sys/kernel/config/usb_gadget/g1/configs/c.1/MaxPower
|
|
mkdir /sys/kernel/config/usb_gadget/g1/configs/c.1/strings/0x409
|
|
}
|
|
clean_gadget()
|
|
{
|
|
# Remove strings:
|
|
echo "gadget-setup: remove strings of c.1."
|
|
rmdir /sys/kernel/config/usb_gadget/g1/configs/c.1/strings/0x409
|
|
# Remove config:
|
|
echo "gadget-setup: remove configs c.1."
|
|
rmdir /sys/kernel/config/usb_gadget/g1/configs/c.1
|
|
# Remove string in gadget
|
|
echo "gadget-setup: remove strings of g1."
|
|
rmdir /sys/kernel/config/usb_gadget/g1/strings/0x409
|
|
# Remove gadget
|
|
echo "gadget-setup: remove g1."
|
|
rmdir /sys/kernel/config/usb_gadget/g1
|
|
}
|
|
setup()
|
|
{
|
|
mkdir /sys/kernel/config/usb_gadget/g1/functions/ffs.adb
|
|
ln -s /sys/kernel/config/usb_gadget/g1/functions/ffs.adb/ /sys/kernel/config/usb_gadget/g1/configs/c.1/ffs.adb
|
|
mkdir /dev/usb-ffs
|
|
mkdir /dev/usb-ffs/adb
|
|
mount -o uid=2000,gid=2000 -t functionfs adb /dev/usb-ffs/adb/
|
|
adbd &
|
|
}
|
|
udc()
|
|
{
|
|
echo `ls /sys/class/udc | grep ${DEFAULT_UDC}` > /sys/kernel/config/usb_gadget/g1/UDC
|
|
}
|
|
noudc()
|
|
{
|
|
echo > /sys/kernel/config/usb_gadget/g1/UDC
|
|
}
|
|
clean()
|
|
{
|
|
kill `pidof adbd`
|
|
rm -f /sys/kernel/config/usb_gadget/g1/configs/c.1/ffs.adb
|
|
rmdir /sys/kernel/config/usb_gadget/g1/functions/ffs.adb
|
|
umount /dev/usb-ffs/adb/
|
|
rmdir /dev/usb-ffs/adb
|
|
rmdir /dev/usb-ffs
|
|
}
|
|
OPT=$1
|
|
case "$1" in
|
|
start)
|
|
config_gadget
|
|
setup
|
|
sleep 1
|
|
udc
|
|
;;
|
|
stop)
|
|
noudc
|
|
clean
|
|
clean_gadget
|
|
;;
|
|
restart|reload)
|
|
noudc
|
|
clean
|
|
clean_gadget
|
|
config_gadget
|
|
setup
|
|
udc
|
|
;;
|
|
*)
|
|
echo "Usage: $0 {start|stop|reload}"
|
|
exit 1
|
|
esac
|
|
exit $?
|