From 7d2bd84b94d493d45186d88aa4a511d8d720380d Mon Sep 17 00:00:00 2001 From: "minda.chen" Date: Thu, 25 Aug 2022 09:01:36 +0800 Subject: [PATCH] usb: device: add usb device configfs script including start/stop, mass storage disk img create and delete script. Signed-off-by: minda.chen --- package/android-tools/android-tools.mk | 1 + package/android-tools/usb_device.sh | 140 +++++++++++++++++++++++++ 2 files changed, 141 insertions(+) create mode 100644 package/android-tools/usb_device.sh diff --git a/package/android-tools/android-tools.mk b/package/android-tools/android-tools.mk index 3d5c76a3..73f5b56f 100644 --- a/package/android-tools/android-tools.mk +++ b/package/android-tools/android-tools.mk @@ -89,6 +89,7 @@ endef define ANDROID_TOOLS_INSTALL_TARGET_CMDS $(foreach t,$(ANDROID_TOOLS_TARGETS),\ + $(INSTALL) -D -m 0755 package/android-tools/usb_device.sh $(TARGET_DIR)/root/ && \ $(INSTALL) -D -m 0755 $(@D)/build-$(t)/$(t) $(TARGET_DIR)/usr/bin/$(t)$(sep)) endef diff --git a/package/android-tools/usb_device.sh b/package/android-tools/usb_device.sh new file mode 100644 index 00000000..65dcca4b --- /dev/null +++ b/package/android-tools/usb_device.sh @@ -0,0 +1,140 @@ +#!/bin/sh + +mass_storage_create() +{ + mkdir -p /var/sdcard/sda + cd /var/sdcard + dd if=/dev/zero of=/var/sdcard/disk.img bs=1M count=$1 + mkdosfs -F 32 disk.img +} + +mass_storage_delete() +{ + echo "" > /sys/kernel/config/usb_gadget/mass_storage/functions/mass_storage.0/lun.0/file + umount /var/sdcard/sda + rm -rf /var/sdcard/disk.img +} + +mass_storage_start() +{ + cd /sys/kernel/config/usb_gadget + mkdir -p mass_storage + cd mass_storage + echo 0x0300 > bcdUSB + echo "0x1d6b" > idVendor + echo "0x1100" > idProduct + mkdir -p strings/0x409 + echo "01234567" > strings/0x409/serialnumber + echo "starfive" > strings/0x409/manufacturer + echo "udisk" > strings/0x409/product + mkdir -p configs/config.1 + echo 120 > configs/config.1/MaxPower + mkdir -p configs/config.1/strings/0x409 + echo "mass_storage" > configs/config.1/strings/0x409/configuration + sleep 1 + mkdir -p functions/mass_storage.0 + echo "/var/sdcard/disk.img" > functions/mass_storage.0/lun.0/file + echo 1 > functions/mass_storage.0/lun.0/removable + echo 0 > functions/mass_storage.0/lun.0/nofua + ln -s functions/mass_storage.0 configs/config.1 + sleep 1 + echo `ls /sys/class/udc` > UDC +} + +mass_storage_stop() +{ + cd /sys/kernel/config/usb_gadget/mass_storage + echo "" > UDC + echo "" > functions/mass_storage.0/lun.0/file + umount /var/sdcard/sda + rm -rf configs/config.1/mass_storage.0 + echo "" > configs/config.1/strings/0x409/configuration +} + +mass_storage_process() +{ + case "$1" in + start) + mass_storage_start + ;; + stop) + mass_storage_stop + ;; + create) + mass_storage_create $2 + ;; + delete) + mass_storage_delete + ;; + esac +} + +adb_start() +{ + cd /sys/kernel/config/usb_gadget + mkdir -p adb + cd adb + echo 0x0300 > bcdUSB + echo "0x1d6b"> idVendor + echo "0x1100" > idProduct + mkdir -p strings/0x409 + echo "76543210" > strings/0x409/serialnumber + echo "starfive" > strings/0x409/manufacturer + echo "adb_device" > strings/0x409/product + mkdir -p configs/config.1 + echo 120 > configs/config.1/MaxPower + mkdir -p configs/config.1/strings/0x409 + echo "adb" > configs/config.1/strings/0x409/configuration + sleep 1 + mkdir functions/ffs.adb + ln -s functions/ffs.adb configs/config.1 + mkdir -p /dev/usb-ffs/adb + mount -o uid=2000,gid=2000 -t functionfs adb /dev/usb-ffs/adb + adbd & + sleep 1 + echo `ls /sys/class/udc` > UDC +} + +adb_stop() +{ + echo "" > /sys/kernel/config/usb_gadget/adb/UDC + killall adbd + sleep 1 + umount adb + cd /sys/kernel/config/usb_gadget/adb + rm -rf configs/config.1/ffs.adb + rm -rf functions/ffs.adb/ + echo "" > configs/config.1/strings/0x409/configuration +} + + +adb_process() +{ + case "$1" in + start) + adb_start + ;; + stop) + adb_stop + ;; + esac +} + +CONFIGFS=`mount | grep configfs` +if [ "$CONFIGFS" == "" ] +then + mount -t configfs none /sys/kernel/config/ +fi + +case "$1" in + adb) + adb_process $2 + ;; + mass_storage) + mass_storage_process $2 $3 + ;; + *) + echo "Usage: $0 {adb|mass_storage} {*}" + exit 1 +esac +