summaryrefslogtreecommitdiff
path: root/conf/init.gs101.usb.rc
blob: 69bbf4931683981c294fbac04fd6c69171f3c254 (plain)
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
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
on early-boot
    mkdir /config/usb_gadget/g1
    mkdir /config/usb_gadget/g1/strings/0x409
    mkdir /config/usb_gadget/g1/configs/b.1
    write /config/usb_gadget/g1/idVendor 0x18d1
    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}
    write /config/usb_gadget/g1/configs/b.1/MaxPower 0x384
    write /config/usb_gadget/g1/os_desc/b_vendor_code 0x1
    write /config/usb_gadget/g1/os_desc/qw_sign "MSFT100"

    # ffs function
    mkdir /config/usb_gadget/g1/functions/ffs.adb 0770 shell shell
    mkdir /config/usb_gadget/g1/functions/ffs.mtp
    mkdir /config/usb_gadget/g1/functions/ffs.ptp
    mkdir /dev/usb-ffs 0775 shell shell
    mkdir /dev/usb-ffs/adb 0770 shell shell
    mkdir /dev/usb-ffs/mtp 0770 mtp mtp
    mkdir /dev/usb-ffs/ptp 0770 mtp mtp
    mount functionfs adb /dev/usb-ffs/adb rmode=0770,fmode=0660,uid=2000,gid=2000,no_disconnect=1
    mount functionfs mtp /dev/usb-ffs/mtp rmode=0770,fmode=0660,uid=1024,gid=1024,no_disconnect=1
    mount functionfs ptp /dev/usb-ffs/ptp rmode=0770,fmode=0660,uid=1024,gid=1024,no_disconnect=1
    setprop sys.usb.mtp.device_type 3
    setprop sys.usb.mtp.batchcancel true
    symlink /config/usb_gadget/g1/configs/b.1 /config/usb_gadget/g1/os_desc/b.1

    # mtp function
    mkdir /config/usb_gadget/g1/functions/mtp.gs0

    # ptp function
    mkdir /config/usb_gadget/g1/functions/ptp.gs1

    # accessory function
    mkdir /config/usb_gadget/g1/functions/accessory.gs2

    # audio_source function
    mkdir /config/usb_gadget/g1/functions/audio_source.gs3

    # rndis function
    mkdir /config/usb_gadget/g1/functions/rndis.gs4
    # Modify class/subclass/protocol for rndis.gs4
    # Remote NDIS: Class: Wireless Controller (0xe0), Subclass: 0x1, Protocol: 0x3
    write /config/usb_gadget/g1/functions/rndis.gs4/class e0
    write /config/usb_gadget/g1/functions/rndis.gs4/subclass 01
    write /config/usb_gadget/g1/functions/rndis.gs4/protocol 03
    write /config/usb_gadget/g1/functions/rndis.gs4/os_desc/interface.ncm/compatible_id RNDIS
    write /config/usb_gadget/g1/functions/rndis.gs4/ifname rndis%d
    setprop vendor.usb.rndis.config rndis.gs4

    # midi function
    mkdir /config/usb_gadget/g1/functions/midi.gs5

    # acm function
    mkdir /config/usb_gadget/g1/functions/acm.gs6

    # dm function
    mkdir /config/usb_gadget/g1/functions/dm.gs7

    # uts function
    mkdir /config/usb_gadget/g1/functions/uts.gs8

    # ncm function
    mkdir /config/usb_gadget/g1/functions/ncm.gs9
    write /config/usb_gadget/g1/functions/ncm.gs9/os_desc/interface.ncm/compatible_id WINNCM
    write /config/usb_gadget/g1/functions/ncm.gs9/ifname ncm%d

    # etr_miu function
    mkdir /config/usb_gadget/g1/functions/etr_miu.gs11

    # acm function for uwb
    mkdir /config/usb_gadget/g1/functions/acm.uwb0

    # uvc function
    mkdir /config/usb_gadget/g1/functions/uvc.0
    write /config/usb_gadget/g1/functions/uvc.0/function_name "Android Webcam"
    write /config/usb_gadget/g1/functions/uvc.0/streaming_maxpacket 3072
    # write /config/usb_gadget/g1/functions/uvc.0/streaming_maxburst 5
    # write /config/usb_gadget/g1/functions/uvc.0/streaming_interval 2
    # setup control params
    mkdir /config/usb_gadget/g1/functions/uvc.0/control/header/h
    symlink /config/usb_gadget/g1/functions/uvc.0/control/header/h /config/usb_gadget/g1/functions/uvc.0/control/class/fs/h
    symlink /config/usb_gadget/g1/functions/uvc.0/control/header/h /config/usb_gadget/g1/functions/uvc.0/control/class/ss/h
    mkdir /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m
    # advertise 360p resolution for webcam encoded as mjpeg
    mkdir /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/360p
    write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/360p/wHeight 360
    write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/360p/wWidth 640
    write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/360p/dwMaxVideoFrameBufferSize 460800
    write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/360p/dwDefaultFrameInterval 333333
    write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/360p/dwFrameInterval "166666
333333
416666
666666"
    # advertise 480p resolution for webcam encoded as mjpeg
    mkdir /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/480p
    write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/480p/wHeight 480
    write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/480p/wWidth 640
    write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/480p/dwMaxVideoFrameBufferSize 614400
    write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/480p/dwDefaultFrameInterval 333333
    write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/480p/dwFrameInterval "166666
333333
416666
666666"
    # advertise 720p resolution for webcam encoded as mjpeg
    mkdir /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p
    write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/wHeight 720
    write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/wWidth 1280
    write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/dwMaxVideoFrameBufferSize 1843200
    write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/dwDefaultFrameInterval 333333
    write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/dwFrameInterval "166666
333333
416666
666666"
    # advertise 1080p resolution for webcam encoded as mjpeg
    mkdir /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p
    write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/wHeight 1080
    write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/wWidth 1920
    write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/dwMaxVideoFrameBufferSize 4147200
    write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/dwDefaultFrameInterval 333333
    write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/dwFrameInterval "166666
333333
416666
666666"
    # TODO: Add uncompressed streams
    # setup streaming params
    mkdir /config/usb_gadget/g1/functions/uvc.0/streaming/header/h
    symlink /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m /config/usb_gadget/g1/functions/uvc.0/streaming/header/h/m
    symlink /config/usb_gadget/g1/functions/uvc.0/streaming/header/h /config/usb_gadget/g1/functions/uvc.0/streaming/class/fs/h
    symlink /config/usb_gadget/g1/functions/uvc.0/streaming/header/h /config/usb_gadget/g1/functions/uvc.0/streaming/class/hs/h
    symlink /config/usb_gadget/g1/functions/uvc.0/streaming/header/h /config/usb_gadget/g1/functions/uvc.0/streaming/class/ss/h
    # remove write permissions for 'others'
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/control/header/h/bcdUVC
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/control/header/h/dwClockFrequency
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/control/terminal/output/default/bSourceID
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/function_name
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming_interval
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming_maxburst
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming_maxpacket
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/bmCapabilities
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/dwDefaultFrameInterval
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/dwFrameInterval
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/dwMaxBitRate
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/dwMaxVideoFrameBufferSize
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/dwMinBitRate
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/wHeight
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/wWidth
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/360p/bmCapabilities
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/360p/dwDefaultFrameInterval
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/360p/dwFrameInterval
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/360p/dwMaxBitRate
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/360p/dwMaxVideoFrameBufferSize
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/360p/dwMinBitRate
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/360p/wHeight
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/360p/wWidth
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/480p/bmCapabilities
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/480p/dwDefaultFrameInterval
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/480p/dwFrameInterval
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/480p/dwMaxBitRate
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/480p/dwMaxVideoFrameBufferSize
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/480p/dwMinBitRate
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/480p/wHeight
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/480p/wWidth
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/bmCapabilities
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/dwDefaultFrameInterval
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/dwFrameInterval
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/dwMaxBitRate
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/dwMaxVideoFrameBufferSize
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/dwMinBitRate
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/wHeight
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/wWidth
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/bDefaultFrameIndex
    chmod 664 /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/bmaControls

    # chown file/folder permission
    chown system system /config/usb_gadget/
    chown system system /config/usb_gadget/g1
    chown system system /config/usb_gadget/g1/UDC
    chown system system /config/usb_gadget/g1/bDeviceClass
    chown system system /config/usb_gadget/g1/bDeviceProtocol
    chown system system /config/usb_gadget/g1/bDeviceSubClass
    chown system system /config/usb_gadget/g1/bMaxPacketSize0
    chown system system /config/usb_gadget/g1/bcdDevice
    chown system system /config/usb_gadget/g1/bcdUSB
    chown system system /config/usb_gadget/g1/configs
    chown system system /config/usb_gadget/g1/configs/b.1
    chown system system /config/usb_gadget/g1/configs/b.1/MaxPower
    chown system system /config/usb_gadget/g1/configs/b.1/bmAttributes
    chown system system /config/usb_gadget/g1/configs/b.1/strings
    chown system system /config/usb_gadget/g1/functions
    chown system system /config/usb_gadget/g1/functions/accessory.gs2
    chown system system /config/usb_gadget/g1/functions/acm.gs6
    chown system system /config/usb_gadget/g1/functions/acm.gs6/port_num
    chown system system /config/usb_gadget/g1/functions/acm.uwb0
    chown system system /config/usb_gadget/g1/functions/acm.uwb0/port_num
    chown system system /config/usb_gadget/g1/functions/audio_source.gs3
    chown system system /config/usb_gadget/g1/functions/dm.gs7
    chown system system /config/usb_gadget/g1/functions/ffs.adb
    chown system system /config/usb_gadget/g1/functions/ffs.mtp
    chown system system /config/usb_gadget/g1/functions/ffs.ptp
    chown system system /config/usb_gadget/g1/functions/midi.gs5
    chown system system /config/usb_gadget/g1/functions/midi.gs5/buflen
    chown system system /config/usb_gadget/g1/functions/midi.gs5/id
    chown system system /config/usb_gadget/g1/functions/midi.gs5/in_ports
    chown system system /config/usb_gadget/g1/functions/midi.gs5/index
    chown system system /config/usb_gadget/g1/functions/midi.gs5/out_ports
    chown system system /config/usb_gadget/g1/functions/midi.gs5/qlen
    chown system system /config/usb_gadget/g1/functions/mtp.gs0
    chown system system /config/usb_gadget/g1/functions/mtp.gs0/os_desc
    chown system system /config/usb_gadget/g1/functions/mtp.gs0/os_desc/interface.MTP
    chown system system /config/usb_gadget/g1/functions/mtp.gs0/os_desc/interface.MTP/compatible_id
    chown system system /config/usb_gadget/g1/functions/mtp.gs0/os_desc/interface.MTP/sub_compatible_id
    chown system system /config/usb_gadget/g1/functions/ncm.gs9
    chown system system /config/usb_gadget/g1/functions/ncm.gs9/dev_addr
    chown system system /config/usb_gadget/g1/functions/ncm.gs9/host_addr
    chown system system /config/usb_gadget/g1/functions/ncm.gs9/ifname
    chown system system /config/usb_gadget/g1/functions/ncm.gs9/os_desc
    chown system system /config/usb_gadget/g1/functions/ncm.gs9/os_desc/interface.ncm
    chown system system /config/usb_gadget/g1/functions/ncm.gs9/os_desc/interface.ncm/compatible_id
    chown system system /config/usb_gadget/g1/functions/ncm.gs9/os_desc/interface.ncm/sub_compatible_id
    chown system system /config/usb_gadget/g1/functions/ncm.gs9/qmult
    chown system system /config/usb_gadget/g1/functions/ptp.gs1
    chown system system /config/usb_gadget/g1/functions/ptp.gs1/os_desc
    chown system system /config/usb_gadget/g1/functions/ptp.gs1/os_desc/interface.MTP
    chown system system /config/usb_gadget/g1/functions/ptp.gs1/os_desc/interface.MTP/compatible_id
    chown system system /config/usb_gadget/g1/functions/ptp.gs1/os_desc/interface.MTP/sub_compatible_id
    chown system system /config/usb_gadget/g1/functions/rndis.gs4
    chown system system /config/usb_gadget/g1/functions/rndis.gs4/class
    chown system system /config/usb_gadget/g1/functions/rndis.gs4/dev_addr
    chown system system /config/usb_gadget/g1/functions/rndis.gs4/host_addr
    chown system system /config/usb_gadget/g1/functions/rndis.gs4/ifname
    chown system system /config/usb_gadget/g1/functions/rndis.gs4/os_desc
    chown system system /config/usb_gadget/g1/functions/rndis.gs4/os_desc/interface.rndis
    chown system system /config/usb_gadget/g1/functions/rndis.gs4/os_desc/interface.rndis/compatible_id
    chown system system /config/usb_gadget/g1/functions/rndis.gs4/os_desc/interface.rndis/sub_compatible_id
    chown system system /config/usb_gadget/g1/functions/rndis.gs4/protocol
    chown system system /config/usb_gadget/g1/functions/rndis.gs4/qmult
    chown system system /config/usb_gadget/g1/functions/rndis.gs4/subclass
    chown system system /config/usb_gadget/g1/functions/uvc.0
    chown system system /config/usb_gadget/g1/functions/uvc.0/control
    chown system system /config/usb_gadget/g1/functions/uvc.0/control/bInterfaceNumber
    chown system system /config/usb_gadget/g1/functions/uvc.0/control/class
    chown system system /config/usb_gadget/g1/functions/uvc.0/control/class/fs
    chown system system /config/usb_gadget/g1/functions/uvc.0/control/class/fs/h
    chown system system /config/usb_gadget/g1/functions/uvc.0/control/class/ss
    chown system system /config/usb_gadget/g1/functions/uvc.0/control/class/ss/h
    chown system system /config/usb_gadget/g1/functions/uvc.0/control/header
    chown system system /config/usb_gadget/g1/functions/uvc.0/control/header/h
    chown system system /config/usb_gadget/g1/functions/uvc.0/control/header/h/bcdUVC
    chown system system /config/usb_gadget/g1/functions/uvc.0/control/header/h/dwClockFrequency
    chown system system /config/usb_gadget/g1/functions/uvc.0/control/processing
    chown system system /config/usb_gadget/g1/functions/uvc.0/control/processing/default
    chown system system /config/usb_gadget/g1/functions/uvc.0/control/processing/default/bmControls
    chown system system /config/usb_gadget/g1/functions/uvc.0/control/processing/default/bSourceID
    chown system system /config/usb_gadget/g1/functions/uvc.0/control/processing/default/bUnitID
    chown system system /config/usb_gadget/g1/functions/uvc.0/control/processing/default/iProcessing
    chown system system /config/usb_gadget/g1/functions/uvc.0/control/processing/default/wMaxMultiplier
    chown system system /config/usb_gadget/g1/functions/uvc.0/control/terminal
    chown system system /config/usb_gadget/g1/functions/uvc.0/control/terminal/camera
    chown system system /config/usb_gadget/g1/functions/uvc.0/control/terminal/camera/default
    chown system system /config/usb_gadget/g1/functions/uvc.0/control/terminal/camera/default/bAssocTerminal
    chown system system /config/usb_gadget/g1/functions/uvc.0/control/terminal/camera/default/bmControls
    chown system system /config/usb_gadget/g1/functions/uvc.0/control/terminal/camera/default/bTerminalID
    chown system system /config/usb_gadget/g1/functions/uvc.0/control/terminal/camera/default/iTerminal
    chown system system /config/usb_gadget/g1/functions/uvc.0/control/terminal/camera/default/wObjectiveFocalLengthMax
    chown system system /config/usb_gadget/g1/functions/uvc.0/control/terminal/camera/default/wObjectiveFocalLengthMin
    chown system system /config/usb_gadget/g1/functions/uvc.0/control/terminal/camera/default/wOcularFocalLength
    chown system system /config/usb_gadget/g1/functions/uvc.0/control/terminal/camera/default/wTerminalType
    chown system system /config/usb_gadget/g1/functions/uvc.0/control/terminal/output
    chown system system /config/usb_gadget/g1/functions/uvc.0/control/terminal/output/default
    chown system system /config/usb_gadget/g1/functions/uvc.0/control/terminal/output/default/bAssocTerminal
    chown system system /config/usb_gadget/g1/functions/uvc.0/control/terminal/output/default/bSourceID
    chown system system /config/usb_gadget/g1/functions/uvc.0/control/terminal/output/default/bTerminalID
    chown system system /config/usb_gadget/g1/functions/uvc.0/control/terminal/output/default/iTerminal
    chown system system /config/usb_gadget/g1/functions/uvc.0/control/terminal/output/default/wTerminalType
    chown system system /config/usb_gadget/g1/functions/uvc.0/function_name
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming_interval
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming_maxburst
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming_maxpacket
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/bInterfaceNumber
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/class
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/class/fs
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/class/fs/h
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/class/hs
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/class/hs/h
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/class/ss
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/class/ss/h
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/color_matching
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/color_matching/default
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/color_matching/default/bColorPrimaries
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/color_matching/default/bMatrixCoefficients
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/color_matching/default/bTransferCharacteristics
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/header
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/header/h
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/header/h/bmInfo
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/header/h/bStillCaptureMethod
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/header/h/bTerminalLink
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/header/h/bTriggerSupport
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/header/h/bTriggerUsage
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/header/h/m
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/bFrameIndex
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/bmCapabilities
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/dwDefaultFrameInterval
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/dwFrameInterval
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/dwMaxBitRate
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/dwMaxVideoFrameBufferSize
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/dwMinBitRate
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/wHeight
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/wWidth
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/360p
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/360p/bFrameIndex
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/360p/bmCapabilities
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/360p/dwDefaultFrameInterval
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/360p/dwFrameInterval
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/360p/dwMaxBitRate
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/360p/dwMaxVideoFrameBufferSize
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/360p/dwMinBitRate
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/360p/wHeight
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/360p/wWidth
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/480p
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/480p/bFrameIndex
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/480p/bmCapabilities
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/480p/dwDefaultFrameInterval
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/480p/dwFrameInterval
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/480p/dwMaxBitRate
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/480p/dwMaxVideoFrameBufferSize
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/480p/dwMinBitRate
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/480p/wHeight
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/480p/wWidth
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/bFrameIndex
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/bmCapabilities
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/dwDefaultFrameInterval
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/dwFrameInterval
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/dwMaxBitRate
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/dwMaxVideoFrameBufferSize
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/dwMinBitRate
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/wHeight
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/wWidth
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/bAspectRatioX
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/bAspectRatioY
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/bDefaultFrameIndex
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/bFormatIndex
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/bmaControls
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/bmFlags
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/bmInterlaceFlags
    chown system system /config/usb_gadget/g1/functions/uvc.0/streaming/uncompressed
    chown system system /config/usb_gadget/g1/idProduct
    chown system system /config/usb_gadget/g1/idVendor
    chown system system /config/usb_gadget/g1/max_speed
    chown system system /config/usb_gadget/g1/os_desc
    chown system system /config/usb_gadget/g1/os_desc/b.1
    chown system system /config/usb_gadget/g1/os_desc/b_vendor_code
    chown system system /config/usb_gadget/g1/os_desc/qw_sign
    chown system system /config/usb_gadget/g1/os_desc/use
    chown system system /config/usb_gadget/g1/strings
    chown system system /config/usb_gadget/g1/strings/0x409
    chown system system /config/usb_gadget/g1/strings/0x409/manufacturer
    chown system system /config/usb_gadget/g1/strings/0x409/product
    chown system system /config/usb_gadget/g1/strings/0x409/serialnumber
    setprop vendor.usb.functions.ready 1

on boot
    write /config/usb_gadget/g1/bcdDevice 0x0510
    # Use USB Gadget HAL
    setprop sys.usb.configfs 2
    # Enable in-kernel media-presence polling for SD cards
    write /sys/module/block/parameters/events_dfl_poll_msecs 2000

on property:sys.usb.ffs.ready=1 && property:sys.usb.config=adb && property:sys.usb.configfs=1
    write /config/usb_gadget/g1/idProduct 0x4EE7
    write /config/usb_gadget/g1/idVendor 0x18D1

on property:vendor.usb.config=*
   start usbd

on property:persist.vendor.usb.usbradio.config=*
   start usbd

on charger
    mkdir /config/usb_gadget/g1
    mkdir /config/usb_gadget/g1/strings/0x409
    mkdir /config/usb_gadget/g1/configs/b.1
    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}
    write /config/usb_gadget/g1/configs/b.1/MaxPower 0x384
    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/bcdDevice 0x0510
    mkdir /config/usb_gadget/g1/functions/midi.gs5
    symlink /config/usb_gadget/g1/configs/b.1 /config/usb_gadget/g1/os_desc/b.1
    setprop sys.usb.controller "11110000.dwc3"
    setprop sys.usb.configfs 1

on property:ro.bootmode=charger
    setprop sys.usb.config charger

on property:sys.usb.config=charger && property:sys.usb.configfs=1
    write /config/usb_gadget/g1/idVendor 0x18d1
    write /config/usb_gadget/g1/idProduct 0x4eea
    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "midi"
    symlink /config/usb_gadget/g1/functions/midi.gs5 /config/usb_gadget/g1/configs/b.1/f1
    write /config/usb_gadget/g1/UDC ${sys.usb.controller}
    write /sys/class/typec/port0/device/update_sdp_enum_timeout 0x1
    setprop sys.usb.state ${sys.usb.config}

on property:vendor.usb.contaminantdisable=true
    exec /vendor/bin/hw/disable_contaminant_detection.sh

on property:ro.bootmode=usbuwb
    setprop persist.vendor.usb.usbradio.config uwb_acm