Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
orangepi-xunlong
GitHub Repository: orangepi-xunlong/orangepi-build
Path: blob/next/external/packages/bsp/sun60iw2/etc/adb_conf.sh
18131 views
1
#!/bin/bash
2
3
echo usb_device > /sys/devices/platform/soc@3000000/10.usbc0/otg_role
4
5
disable_udc="/etc/.disable_udc"
6
udc_config=/sys/kernel/config/usb_gadget/g1/UDC
7
8
function enable_udc(){
9
while [ 1 ];do
10
udc=`ls /sys/class/udc 2>/dev/null`
11
isudc=`cat $udc_config 2>/dev/null`
12
if [ "x$isudc" = "x" ] && [ -f $udc_config ]; then
13
echo $udc > $udc_config
14
fi
15
sleep 1
16
if [ -f $disable_udc ];then
17
rm $disable_udc
18
break
19
fi
20
done
21
}
22
23
function start_adb(){
24
serialnumber=$1
25
if [ "x$serialnumber" = "x" ];then
26
serialnumber="0402101560"
27
fi
28
printf "Starting adb "
29
# for adbd compatibilities
30
mkdir -p /system/
31
mkdir -p /system/bin
32
if [ ! -f /system/bin/sh ];then
33
ln -s /bin/sh /system/bin/sh
34
fi
35
36
# config ptmx
37
mkdir -p /dev/pts
38
mount -t devpts none /dev/pts
39
40
# config adb function
41
mount -t configfs none /sys/kernel/config > /dev/null 2>&1
42
mkdir -p /sys/kernel/config/usb_gadget/g1
43
echo "0x18d1" > /sys/kernel/config/usb_gadget/g1/idVendor
44
echo "0x0002" > /sys/kernel/config/usb_gadget/g1/idProduct
45
mkdir -p /sys/kernel/config/usb_gadget/g1/strings/0x409
46
echo "$serialnumber" > /sys/kernel/config/usb_gadget/g1/strings/0x409/serialnumber
47
echo "Google.Inc" > /sys/kernel/config/usb_gadget/g1/strings/0x409/manufacturer
48
echo "Configfs ffs gadget" > /sys/kernel/config/usb_gadget/g1/strings/0x409/product
49
mkdir -p /sys/kernel/config/usb_gadget/g1/functions/ffs.adb
50
mkdir -p /sys/kernel/config/usb_gadget/g1/configs/c.1
51
mkdir -p /sys/kernel/config/usb_gadget/g1/configs/c.1/strings/0x409
52
echo 0xc0 > /sys/kernel/config/usb_gadget/g1/configs/c.1/bmAttributes
53
echo 500 > /sys/kernel/config/usb_gadget/g1/configs/c.1/MaxPower
54
ln -s /sys/kernel/config/usb_gadget/g1/functions/ffs.adb/ /sys/kernel/config/usb_gadget/g1/configs/c.1/ffs.adb > /dev/null 2>&1
55
mkdir -p /dev/usb-ffs
56
mkdir -p /dev/usb-ffs/adb
57
if [ "x`ls -A /dev/usb-ffs/adb`" = "x" ];then
58
mount -o uid=2000,gid=2000 -t functionfs adb /dev/usb-ffs/adb/
59
fi
60
61
# start adbd daemon
62
adbd &
63
sleep 1
64
65
# enable udc
66
cat /sys/bus/platform/drivers/otg\ manager/10.usbc0/usb_device
67
68
enable_udc &
69
}
70
71
case "$1" in
72
start|"")
73
otg_role_file="/sys/bus/platform/drivers/otg manager/10.usbc0/otg_role"
74
[ -f "$otg_role_file" ] && otg_role=`cat "$otg_role_file"`
75
if /sbin/ifconfig > /dev/null 2>&1 && [ "x$otg_role" != "xusb_host" ];then
76
autotest=/etc/.autotest
77
[ -f $autotest ] && serialnumber=`cat $autotest`
78
start_adb $serialnumber
79
fi
80
;;
81
stop)
82
printf "Stopping adbd "
83
touch $disable_udc
84
sleep 2
85
killall adbd &
86
[ $? -eq 0 ] && echo "OK" || "FAIL"
87
;;
88
restart|reload)
89
"$0" stop
90
"$0" start
91
;;
92
*)
93
echo "Usage: $0 {start|stop|restart}"
94
exit 1
95
;;
96
esac
97
98
99