xie
2024-11-23 3fdfdea0721fe7a36f6aaa509075f01a194f6748
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#
# Copyright (C) 2016 The Android Open-Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
on boot
    mkdir /dev/usb-ffs 0770 shell shell
    mkdir /dev/usb-ffs/adb 0770 shell shell
    mount configfs none /config
    mkdir /config/usb_gadget/g1 0770 shell shell
    #aw 1f3a
    write /config/usb_gadget/g1/idVendor 0x1f3a
    write /config/usb_gadget/g1/bcdDevice 0x0440
    write /config/usb_gadget/g1/bcdUSB 0x0200
    mkdir /config/usb_gadget/g1/strings/0x409 0770
    write /config/usb_gadget/g1/strings/0x409/serialnumber ${ro.serialno}
    write /config/usb_gadget/g1/strings/0x409/manufacturer ${ro.product.manufacturer}
    write /config/usb_gadget/g1/strings/0x409/product ${ro.product.model}
    mkdir /config/usb_gadget/g1/functions/accessory.gs2
    mkdir /config/usb_gadget/g1/functions/audio_source.gs3
    mkdir /config/usb_gadget/g1/functions/ffs.adb
    mkdir /config/usb_gadget/g1/functions/ffs.mtp
    mkdir /config/usb_gadget/g1/functions/diag.diag
    mkdir /config/usb_gadget/g1/functions/cser.dun.0
    mkdir /config/usb_gadget/g1/functions/cser.nmea.1
    mkdir /config/usb_gadget/g1/functions/mtp.gs0
    mkdir /config/usb_gadget/g1/functions/ptp.gs1
    mkdir /config/usb_gadget/g1/functions/rndis.gs4
    write /config/usb_gadget/g1/functions/rndis.gs4/wceis 1
    mkdir /config/usb_gadget/g1/functions/midi.gs5
    mkdir /config/usb_gadget/g1/functions/gsi.rmnet
    mkdir /config/usb_gadget/g1/functions/gsi.rndis
    mkdir /config/usb_gadget/g1/functions/qdss.qdss
    mkdir /config/usb_gadget/g1/configs/b.1 0770 shell shell
    mkdir /config/usb_gadget/g1/configs/b.1/strings/0x409 0770 shell shell
    write /config/usb_gadget/g1/os_desc/b_vendor_code 0x1
    write /config/usb_gadget/g1/os_desc/qw_sign "MSFT100"
    write /config/usb_gadget/g1/configs/b.1/MaxPower 500
    symlink /config/usb_gadget/g1/configs/b.1 /config/usb_gadget/g1/os_desc/b.1
    mount functionfs adb /dev/usb-ffs/adb uid=2000,gid=2000
    #android-usb has two pattern, setprop this property to notify android to use linux-4.4 usb mode
    #see init.usb.configfs.rc
    setprop sys.usb.ffs.max_write 524288
    setprop sys.usb.ffs.max_read 524288
    setprop sys.usb.configfs 1
    setprop sys.usb.mtp.device_type 3
    setprop sys.usb.controller "5100000.udc-controller"
    write /sys/module/libcomposite/parameters/disable_l1_for_hs "y"
 
on property:init.svc.adbd=stopped
    setprop sys.usb.ffs.ready 0
 
#NONE
on property:sys.usb.config=none && property:sys.usb.configfs=1
    write /config/usb_gadget/g1/os_desc/use 0
    setprop sys.usb.ffs.ready 0
 
#MTP
on property:sys.usb.config=mtp && property:sys.usb.configfs=1
    write /config/usb_gadget/g1/functions/mtp.gs0/os_desc/interface.MTP/compatible_id "MTP"
    write /config/usb_gadget/g1/os_desc/use 1
    write /config/usb_gadget/g1/idProduct 0x1006
    write /config/usb_gadget/g1/idVendor 0x1f3a
 
#MTP and ADB
on property:sys.usb.config=mtp,adb && property:sys.usb.configfs=1
    write /config/usb_gadget/g1/functions/mtp.gs0/os_desc/interface.MTP/compatible_id "MTP"
    write /config/usb_gadget/g1/os_desc/use 1
    write /config/usb_gadget/g1/idProduct 0x1007
    write /config/usb_gadget/g1/idVendor 0x1f3a
 
#ADB
on property:sys.usb.config=adb && property:sys.usb.configfs=1
    write /config/usb_gadget/g1/idProduct 0x1001
    write /config/usb_gadget/g1/idVendor 0x1f3a
 
on property:sys.usb.config=rndis && property:sys.usb.configfs=1
    write /config/usb_gadget/g1/idProduct 0x100a
    write /config/usb_gadget/g1/idVendor 0x1f3a
 
on property:sys.usb.config=rndis,adb && property:sys.usb.configfs=1
    write /config/usb_gadget/g1/idProduct 0x100b
    write /config/usb_gadget/g1/idVendor 0x1f3a
 
on property:sys.usb.config=ptp && property:sys.usb.configfs=1
    write /config/usb_gadget/g1/functions/ptp.gs1/os_desc/interface.MTP/compatible_id "PTP"
    write /config/usb_gadget/g1/os_desc/use 1
    write /config/usb_gadget/g1/idProduct 0x1008
    write /config/usb_gadget/g1/idVendor 0x1f3a
 
on property:sys.usb.config=ptp,adb && property:sys.usb.configfs=1
    write /config/usb_gadget/g1/functions/ptp.gs1/os_desc/interface.MTP/compatible_id "PTP"
    write /config/usb_gadget/g1/os_desc/use 1
    write /config/usb_gadget/g1/idProduct 0x1009
    write /config/usb_gadget/g1/idVendor 0x1f3a
 
on property:sys.usb.config=midi && property:sys.usb.configfs=1
    write /config/usb_gadget/g1/idProduct 0x4ee8
    write /config/usb_gadget/g1/idVendor 0x1f3a
 
on property:sys.usb.config=midi,adb && property:sys.usb.configfs=1
    write /config/usb_gadget/g1/idProduct 0x4ee9
    write /config/usb_gadget/g1/idVendor 0x1f3a
 
on property:sys.usb.config=accessory && property:sys.usb.configfs=1
    write /config/usb_gadget/g1/idProduct 0x2d00
    write /config/usb_gadget/g1/idVendor 0x18d1
 
on property:sys.usb.config=accessory,adb && property:sys.usb.configfs=1
    write /config/usb_gadget/g1/idProduct 0x2d01
    write /config/usb_gadget/g1/idVendor 0x18d1
 
on property:sys.usb.config=audio_source && property:sys.usb.configfs=1
    write /config/usb_gadget/g1/idProduct 0x2d02
    write /config/usb_gadget/g1/idVendor 0x18d1
 
on property:sys.usb.config=audio_source,adb && property:sys.usb.configfs=1
    write /config/usb_gadget/g1/idProduct 0x2d03
    write /config/usb_gadget/g1/idVendor 0x18d1
 
on property:sys.usb.config=accessory,audio_source && property:sys.usb.configfs=1
    write /config/usb_gadget/g1/idProduct 0x2d04
    write /config/usb_gadget/g1/idVendor 0x18d1
 
on property:sys.usb.config=accessory,audio_source,adb && property:sys.usb.configfs=1
    write /config/usb_gadget/g1/idProduct 0x2d05
    write /config/usb_gadget/g1/idVendor 0x18d1
 
 
on property:persist.sys.usb0device=1
    copy  /sys/devices/platform/soc/usbc0/usb_device   /dev/null
 
on property:persist.sys.usb0device=0
    copy  /sys/devices/platform/soc/usbc0/usb_host   /dev/null
    write /config/usb_gadget/g1/idVendor 0x18d1