Skip to content
Zhenlin Wang edited this page Sep 15, 2025 · 2 revisions

Launch script

#!/usr/bin/env bashset -e
export TERM="xterm-256color"cd /root
USB_ATTRIBUTE=0x409
USB_GROUP=sdbd
USB_SKELETON=b.1
CONFIGFS_DIR=/sys/kernel/config
USB_CONFIGFS_DIR=${CONFIGFS_DIR}/usb_gadget/${USB_GROUP}
USB_STRINGS_DIR=${USB_CONFIGFS_DIR}/strings/${USB_ATTRIBUTE}
USB_FUNCTIONS_DIR=${USB_CONFIGFS_DIR}/functions
USB_CONFIGS_DIR=${USB_CONFIGFS_DIR}/configs/${USB_SKELETON}
USB_FUNCTIONS_CNT=1
configfs_init() {
mkdir -p /dev/usb-ffs
mount -t configfs none ${CONFIGFS_DIR}
mkdir -p ${USB_CONFIGFS_DIR}echo 0x27d9 >${USB_CONFIGFS_DIR}/idVendor
echo 0x16c0 >${USB_CONFIGFS_DIR}/idProduct
echo 0x0310 >${USB_CONFIGFS_DIR}/bcdDevice
echo 0x0200 >${USB_CONFIGFS_DIR}/bcdUSB
mkdir -p ${USB_STRINGS_DIR}echo"Openbfdev">${USB_STRINGS_DIR}/manufacturer
echo"SDBD">${USB_STRINGS_DIR}/product
echo"0123456789ABCDEF">${USB_STRINGS_DIR}/serialnumber
mkdir -p ${USB_CONFIGS_DIR}
mkdir -p ${USB_CONFIGS_DIR}/strings/${USB_ATTRIBUTE}echo 0x1 >${USB_CONFIGFS_DIR}/os_desc/b_vendor_code
echo"MSFT100">${USB_CONFIGFS_DIR}/os_desc/qw_sign
echo 500 >${USB_CONFIGS_DIR}/MaxPower
ln -s ${USB_CONFIGS_DIR}${USB_CONFIGFS_DIR}/os_desc/b.1
}
syslink_function() {
ln -s ${USB_FUNCTIONS_DIR}/$1${USB_CONFIGS_DIR}/f${USB_FUNCTIONS_CNT}let USB_FUNCTIONS_CNT=USB_FUNCTIONS_CNT+1
}
# initialize usb configfstest -d ${USB_CONFIGFS_DIR}|| configfs_init
mkdir -p ${USB_FUNCTIONS_DIR}/ffs.adb
syslink_function ffs.adb
mkdir /dev/usb-ffs/adb
mount -t functionfs adb /dev/usb-ffs/adb
sdbd -dsp /run/sdbd.pid
# start usb gadget
UDC=$(ls /sys/class/udc/ | awk '{print $1}')
cat <<EOF > /run/usbd.sh#!/usr/bin/env shwhile true; do	if [ "#\$(cat ${USB_CONFIGFS_DIR}/UDC)" == "#$UDC" ]; then sleep 1 continue	fi	echo $UDC > ${USB_CONFIGFS_DIR}/UDC	sleep 0.2doneEOF
chmod +x /run/usbd.sh
nohup /run/usbd.sh >/dev/null 2>&1&

Clone this wiki locally