91 lines
2.5 KiB
Plaintext
91 lines
2.5 KiB
Plaintext
|
#! /bin/sh
|
||
|
|
||
|
/bin/mount -a
|
||
|
/bin/busybox --install
|
||
|
/bin/mount -t sysfs none /sys
|
||
|
/bin/mount -t debugfs debugfs /sys/kernel/debug
|
||
|
/bin/mount -t tracefs tracefs /sys/kernel/debug/tracing > /dev/null 2>&1
|
||
|
/sbin/mdev -s
|
||
|
/bin/echo /sbin/mdev > /proc/sys/kernel/hotplug
|
||
|
|
||
|
# This is necessary to emulate the android environment expected by adbd
|
||
|
echo "Configuring the Kdev environment to support 'adb shell' ..."
|
||
|
mkdir /dev/pts
|
||
|
mount -t devpts devpts /dev/pts
|
||
|
chmod 0666 /dev/ptmx
|
||
|
mkdir -p /system/bin
|
||
|
ln -s /bin/sh /system/bin/sh
|
||
|
chmod 4755 /bin/su
|
||
|
|
||
|
# get soc platform
|
||
|
if [ -f /sys/devices/soc0/hw_platform ]; then
|
||
|
socplatform=`cat /sys/devices/soc0/machine` 2> /dev/null
|
||
|
else
|
||
|
socplatform=`cat /sys/devices/system/soc/soc0/machine` 2> /dev/null
|
||
|
fi
|
||
|
echo "soc:" $socplatform
|
||
|
|
||
|
# find serialno from cmdline
|
||
|
cmdline=`cat /proc/cmdline` 2> /dev/null
|
||
|
strsearch="androidboot.serialno="
|
||
|
if echo "$cmdline" | grep -q "$strsearch"; then
|
||
|
startsearch=${cmdline#*$strsearch}
|
||
|
pos=$(( ${#cmdline} - ${#startsearch}))
|
||
|
serialno=${cmdline:$pos:8}
|
||
|
else
|
||
|
echo "serialno not found with cmdline, use default"
|
||
|
serialno="12345678"
|
||
|
fi
|
||
|
|
||
|
echo "serialno:" $serialno
|
||
|
mount -t configfs none /sys/kernel/config
|
||
|
if [ -d /sys/kernel/config/usb_gadget ]; then
|
||
|
echo "Configuring the USB gadget using ConfigFS..."
|
||
|
cd /sys/kernel/config/usb_gadget
|
||
|
mkdir g1
|
||
|
cd g1
|
||
|
mkdir strings/0x409
|
||
|
mkdir configs/c.1
|
||
|
mkdir configs/c.1/strings/0x409
|
||
|
mkdir functions/ffs.adb
|
||
|
|
||
|
echo "$serialno" > strings/0x409/serialnumber
|
||
|
echo "QCOM" > strings/0x409/manufacturer
|
||
|
echo "$socplatform" > strings/0x409/product
|
||
|
echo 0x18d1 > /sys/kernel/config/usb_gadget/g1/idVendor
|
||
|
echo 0x4E11 > /sys/kernel/config/usb_gadget/g1/idProduct
|
||
|
echo "ADB" > configs/c.1/strings/0x409/configuration
|
||
|
else
|
||
|
echo "Configuring the USB gadget using legcy method..."
|
||
|
cd /sys/class/android_usb/android0/
|
||
|
echo 0 > enable
|
||
|
echo 05C6 > idVendor
|
||
|
echo 901D > idProduct
|
||
|
echo "$serialno" > iSerial
|
||
|
echo "QCOM" > iManufacturer
|
||
|
echo "$socplatform" > iProduct
|
||
|
echo diag > f_diag/clients
|
||
|
echo diag,ffs > functions
|
||
|
echo 1 > enable
|
||
|
fi
|
||
|
|
||
|
echo "Configuring FunctionFS endpoints for adbd..."
|
||
|
if [ ! -d /dev/usb-ffs/adb ]; then
|
||
|
mkdir -p /dev/usb-ffs/adb
|
||
|
fi
|
||
|
if [ ! -e /dev/usb-ffs/adb/ep0 ]; then
|
||
|
mount -o uid=2000,gid=2000 -t functionfs adb /dev/usb-ffs/adb
|
||
|
fi
|
||
|
|
||
|
echo "Launching adbd..."
|
||
|
/sbin/adbd &
|
||
|
|
||
|
if [ -d /sys/kernel/config/usb_gadget ]; then
|
||
|
ln -s functions/ffs.adb configs/c.1/f1
|
||
|
sleep 1
|
||
|
udcname=`ls -1 /sys/class/udc | head -n 1`
|
||
|
echo "binding UDC with Gadget..." $udcname
|
||
|
echo $udcname > UDC
|
||
|
fi
|
||
|
|