/
init.usbmode.sh
executable file
·130 lines (107 loc) · 3.14 KB
/
init.usbmode.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#!/system/bin/sh
# *********************************************************************
# * ____ _____ _ *
# * / ___| ___ _ __ _ _ | ____|_ __(_) ___ ___ ___ ___ _ __ *
# * \___ \ / _ \| '_ \| | | | | _| | '__| |/ __/ __/ __|/ _ \| '_ \ *
# * ___) | (_) | | | | |_| | | |___| | | | (__\__ \__ \ (_) | | | | *
# * |____/ \___/|_| |_|\__, | |_____|_| |_|\___|___/___/\___/|_| |_| *
# * |___/ *
# * *
# *********************************************************************
# * Copyright 2011 Sony Ericsson Mobile Communications AB. *
# * Copyright 2012 Sony Mobile Communications AB. *
# * All rights, including trade secret rights, reserved. *
# *********************************************************************
#
TAG="usb"
VENDOR_ID=0FCE
PID_PREFIX=0
get_pid_prefix()
{
case $1 in
"mass_storage")
PID_PREFIX=E
;;
"mass_storage,adb")
PID_PREFIX=6
;;
"mtp")
PID_PREFIX=0
;;
"mtp,adb")
PID_PREFIX=5
;;
"mtp,cdrom")
PID_PREFIX=4
;;
"mtp,cdrom,adb")
PID_PREFIX=4
# workaround for ICS framework. Don't enable ADB for PCC mode.
USB_FUNCTION="mtp,cdrom"
;;
"rndis")
PID_PREFIX=7
;;
"rndis,adb")
PID_PREFIX=8
;;
*)
/system/bin/log -t ${TAG} -p e "unsupported composition: $1"
return 1
;;
esac
return 0
}
set_engpid()
{
case ${PID_SUFFIX_PROP} in
"177") # products which have MDM
case $1 in
"mass_storage,adb") PID_PREFIX=A ;;
"mtp,adb") PID_PREFIX=B ;;
*)
/system/bin/log -t ${TAG} -p i "No eng PID for: $1"
return 1
;;
esac
DIAG_FUNC="diag,diag_mdm"
SERIAL_FUNC="sdio,tty"
;;
*)
case $1 in
"mass_storage,adb") PID_PREFIX=6 ;;
"mtp,adb") PID_PREFIX=5 ;;
*)
/system/bin/log -t ${TAG} -p i "No eng PID for: $1"
return 1
;;
esac
DIAG_FUNC="diag"
SERIAL_FUNC="smd,tty"
;;
esac
PID=${PID_PREFIX}146
USB_FUNCTION=${1},serial,diag
echo ${DIAG_FUNC} > /sys/class/android_usb/android0/f_diag/clients
echo ${SERIAL_FUNC} > /sys/class/android_usb/android0/f_serial/transports
return 0
}
PID_SUFFIX_PROP=$(/system/bin/getprop ro.usb.pid_suffix)
USB_FUNCTION=$(/system/bin/getprop sys.usb.config)
ENG_PROP=$(/system/bin/getprop persist.usb.eng)
get_pid_prefix ${USB_FUNCTION}
if [ $? -eq 1 ] ; then
exit 1
fi
PID=${PID_PREFIX}${PID_SUFFIX_PROP}
echo 0 > /sys/class/android_usb/android0/enable
echo ${VENDOR_ID} > /sys/class/android_usb/android0/idVendor
if [ ${ENG_PROP} -eq 1 ] ; then
set_engpid ${USB_FUNCTION}
fi
echo ${PID} > /sys/class/android_usb/android0/idProduct
/system/bin/log -t ${TAG} -p i "usb product id: ${PID}"
echo ${USB_FUNCTION} > /sys/class/android_usb/android0/functions
/system/bin/log -t ${TAG} -p i "enabled usb functions: ${USB_FUNCTION}"
echo 1 > /sys/class/android_usb/android0/enable
exit 0