2 # Workarunod for USB unknow device issue
3 # USB would switch correct function when set properity sys.usb.config
4 # update usb vid 0E8D to 1BBB by SCDTABLET.(lilin.liu@jrdcom.com), PR1005181 05/18/2015
5 setprop sys.usb.vid 1BBB
6 write /sys/class/android_usb/android0/iSerial $ro.serialno
7 write /sys/class/android_usb/android0/idVendor $sys.usb.vid
11 mkdir /dev/usb-ffs 0770 shell shell
12 mkdir /dev/usb-ffs/adb 0770 shell shell
13 mount functionfs adb /dev/usb-ffs/adb uid=2000,gid=2000
14 write /sys/class/android_usb/android0/f_ffs/aliases adb
17 chown system system /sys/class/android_usb/android0/f_mass_storage/lun/file
18 chmod 0660 /sys/class/android_usb/android0/f_mass_storage/lun/file
19 chown system system /sys/class/android_usb/android0/f_rndis/ethaddr
20 chmod 0660 /sys/class/android_usb/android0/f_rndis/ethaddr
22 write /sys/class/android_usb/android0/f_rndis/wceis 1
23 write /sys/class/android_usb/android0/f_rndis/manufacturer MediaTek
24 write /sys/class/android_usb/android0/f_rndis/vendorID $sys.usb.vid
26 # Used to set USB configuration at boot and to switch the configuration
27 # when changing the default configuration
28 on property:persist.sys.usb.config=*
29 setprop sys.usb.config $persist.sys.usb.config
31 # Used to disable USB when switching states
32 on property:sys.usb.config=none
34 write /sys/class/android_usb/android0/enable 0
35 write /sys/class/android_usb/android0/bDeviceClass 0
36 setprop sys.usb.state $sys.usb.config
39 on property:sys.usb.config=acm
40 write /sys/class/android_usb/android0/enable 0
41 write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
42 write /sys/class/android_usb/android0/idProduct 2007
43 write /sys/class/android_usb/android0/f_acm/instances 1
44 write /sys/class/android_usb/android0/functions ${sys.usb.config}
45 write /sys/class/android_usb/android0/bDeviceClass 02
46 write /sys/class/android_usb/android0/enable 1
47 setprop sys.usb.state ${sys.usb.config}
50 on property:sys.usb.config=adb
51 write /sys/class/android_usb/android0/enable 0
52 write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
53 write /sys/class/android_usb/android0/idProduct 201C
54 write /sys/class/android_usb/android0/functions ${sys.usb.config}
55 write /sys/class/android_usb/android0/enable 1
57 setprop sys.usb.state ${sys.usb.config}
60 on property:sys.usb.config=adb,acm
61 write /sys/class/android_usb/android0/enable 0
62 write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
63 write /sys/class/android_usb/android0/idProduct 200E
64 write /sys/class/android_usb/android0/f_acm/instances 1
65 write /sys/class/android_usb/android0/functions ${sys.usb.config}
66 write /sys/class/android_usb/android0/enable 1
68 setprop sys.usb.state ${sys.usb.config}
71 on property:sys.usb.config=mass_storage
72 write /sys/class/android_usb/android0/enable 0
73 write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
74 write /sys/class/android_usb/android0/idProduct 2002
75 write /sys/class/android_usb/android0/functions ${sys.usb.config}
76 write /sys/class/android_usb/android0/enable 1
77 setprop sys.usb.state ${sys.usb.config}
80 on property:sys.usb.config=mass_storage,adb
81 write /sys/class/android_usb/android0/enable 0
82 write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
83 write /sys/class/android_usb/android0/idProduct 2003
84 write /sys/class/android_usb/android0/functions ${sys.usb.config}
85 write /sys/class/android_usb/android0/enable 1
87 setprop sys.usb.state ${sys.usb.config}
90 on property:sys.usb.config=mtp
91 write /sys/class/android_usb/android0/enable 0
92 write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
93 write /sys/class/android_usb/android0/idProduct 2008
94 write /sys/class/android_usb/android0/functions ${sys.usb.config}
95 write /sys/class/android_usb/android0/enable 1
96 setprop sys.usb.state ${sys.usb.config}
99 on property:sys.usb.config=mtp,acm
100 write /sys/class/android_usb/android0/enable 0
101 write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
102 write /sys/class/android_usb/android0/idProduct 2012
103 write /sys/class/android_usb/android0/f_acm/instances 1
104 write /sys/class/android_usb/android0/functions ${sys.usb.config}
105 write /sys/class/android_usb/android0/enable 1
106 setprop sys.usb.state ${sys.usb.config}
109 on property:sys.usb.config=mtp,adb
110 write /sys/class/android_usb/android0/enable 0
111 write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
112 write /sys/class/android_usb/android0/idProduct 201D
113 write /sys/class/android_usb/android0/functions mtp,adb
114 write /sys/class/android_usb/android0/enable 1
116 setprop sys.usb.state ${sys.usb.config}
119 on property:sys.usb.config=mtp,adb,acm
120 write /sys/class/android_usb/android0/enable 0
121 write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
122 write /sys/class/android_usb/android0/idProduct 200A
123 write /sys/class/android_usb/android0/f_acm/instances 1
124 write /sys/class/android_usb/android0/functions ${sys.usb.config}
125 write /sys/class/android_usb/android0/enable 1
127 setprop sys.usb.state ${sys.usb.config}
130 on property:sys.usb.config=mtp,mass_storage
131 write /sys/class/android_usb/android0/enable 0
132 write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
133 write /sys/class/android_usb/android0/idProduct 2016
134 write /sys/class/android_usb/android0/functions ${sys.usb.config}
135 write /sys/class/android_usb/android0/enable 1
136 setprop sys.usb.state ${sys.usb.config}
138 #11.mtp,mass_storage,adb
139 on property:sys.usb.config=mtp,mass_storage,adb
140 write /sys/class/android_usb/android0/enable 0
141 write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
142 write /sys/class/android_usb/android0/idProduct 2017
143 write /sys/class/android_usb/android0/functions ${sys.usb.config}
144 write /sys/class/android_usb/android0/enable 1
146 setprop sys.usb.state ${sys.usb.config}
149 on property:sys.usb.config=ptp
150 write /sys/class/android_usb/android0/enable 0
151 write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
152 write /sys/class/android_usb/android0/idProduct 200B
153 write /sys/class/android_usb/android0/functions ${sys.usb.config}
154 write /sys/class/android_usb/android0/enable 1
155 setprop sys.usb.state ${sys.usb.config}
158 on property:sys.usb.config=ptp,acm
159 write /sys/class/android_usb/android0/enable 0
160 write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
161 write /sys/class/android_usb/android0/idProduct 2013
162 write /sys/class/android_usb/android0/f_acm/instances 1
163 write /sys/class/android_usb/android0/functions ${sys.usb.config}
164 write /sys/class/android_usb/android0/enable 1
165 setprop sys.usb.state ${sys.usb.config}
168 on property:sys.usb.config=ptp,adb
169 write /sys/class/android_usb/android0/enable 0
170 write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
171 write /sys/class/android_usb/android0/idProduct 200C
172 write /sys/class/android_usb/android0/functions ${sys.usb.config}
173 write /sys/class/android_usb/android0/enable 1
175 setprop sys.usb.state ${sys.usb.config}
178 on property:sys.usb.config=ptp,adb,acm
179 write /sys/class/android_usb/android0/enable 0
180 write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
181 write /sys/class/android_usb/android0/idProduct 200D
182 write /sys/class/android_usb/android0/f_acm/instances 1
183 write /sys/class/android_usb/android0/functions ${sys.usb.config}
184 write /sys/class/android_usb/android0/enable 1
186 setprop sys.usb.state ${sys.usb.config}
189 on property:sys.usb.config=ptp,mass_storage
190 write /sys/class/android_usb/android0/enable 0
191 write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
192 write /sys/class/android_usb/android0/idProduct 2015
193 write /sys/class/android_usb/android0/functions ${sys.usb.config}
194 write /sys/class/android_usb/android0/enable 1
195 setprop sys.usb.state ${sys.usb.config}
197 #17.ptp,mass_storage,adb
198 on property:sys.usb.config=ptp,mass_storage,adb
199 write /sys/class/android_usb/android0/enable 0
200 write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
201 write /sys/class/android_usb/android0/idProduct 2014
202 write /sys/class/android_usb/android0/functions ${sys.usb.config}
203 write /sys/class/android_usb/android0/enable 1
205 setprop sys.usb.state ${sys.usb.config}
208 on property:sys.usb.config=rndis
209 write /sys/class/android_usb/android0/enable 0
210 write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
211 write /sys/class/android_usb/android0/idProduct 2004
212 write /sys/class/android_usb/android0/functions ${sys.usb.config}
213 write /sys/class/android_usb/android0/bDeviceClass 224
214 write /sys/class/android_usb/android0/enable 1
215 setprop sys.usb.state ${sys.usb.config}
218 on property:sys.usb.config=rndis,acm
219 write /sys/class/android_usb/android0/enable 0
220 write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
221 write /sys/class/android_usb/android0/idProduct 2011
222 write /sys/class/android_usb/android0/f_acm/instances 1
223 write /sys/class/android_usb/android0/functions ${sys.usb.config}
224 write /sys/class/android_usb/android0/enable 1
225 setprop sys.usb.state ${sys.usb.config}
228 on property:sys.usb.config=rndis,adb
229 write /sys/class/android_usb/android0/enable 0
230 write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
231 write /sys/class/android_usb/android0/idProduct 2005
232 write /sys/class/android_usb/android0/functions ${sys.usb.config}
233 write /sys/class/android_usb/android0/enable 1
235 setprop sys.usb.state ${sys.usb.config}
238 on property:sys.usb.config=rndis,adb,acm
239 write /sys/class/android_usb/android0/enable 0
240 write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
241 write /sys/class/android_usb/android0/idProduct 2010
242 write /sys/class/android_usb/android0/f_acm/instances 1
243 write /sys/class/android_usb/android0/functions ${sys.usb.config}
244 write /sys/class/android_usb/android0/enable 1
246 setprop sys.usb.state ${sys.usb.config}
249 on property:sys.usb.config=mass_storage,acm
250 write /sys/class/android_usb/android0/enable 0
251 write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
252 write /sys/class/android_usb/android0/idProduct 200F
253 write /sys/class/android_usb/android0/f_acm/instances 1
254 write /sys/class/android_usb/android0/functions ${sys.usb.config}
255 write /sys/class/android_usb/android0/enable 1
256 setprop sys.usb.state ${sys.usb.config}
258 #23.mass_storage,adb,acm
259 on property:sys.usb.config=mass_storage,adb,acm
260 write /sys/class/android_usb/android0/enable 0
261 write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
262 write /sys/class/android_usb/android0/idProduct 2006
263 write /sys/class/android_usb/android0/f_acm/instances 1
264 write /sys/class/android_usb/android0/functions ${sys.usb.config}
265 write /sys/class/android_usb/android0/enable 1
267 setprop sys.usb.state ${sys.usb.config}
269 #24.mtp,mass_storage,acm
270 on property:sys.usb.config=mtp,mass_storage,acm
271 write /sys/class/android_usb/android0/enable 0
272 write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
273 write /sys/class/android_usb/android0/idProduct 2018
274 write /sys/class/android_usb/android0/f_acm/instances 1
275 write /sys/class/android_usb/android0/functions ${sys.usb.config}
276 write /sys/class/android_usb/android0/enable 1
277 setprop sys.usb.state ${sys.usb.config}
279 #25.mtp,mass_storage,adb,acm
280 on property:sys.usb.config=mtp,mass_storage,adb,acm
281 write /sys/class/android_usb/android0/enable 0
282 write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
283 write /sys/class/android_usb/android0/idProduct 2019
284 write /sys/class/android_usb/android0/f_acm/instances 1
285 write /sys/class/android_usb/android0/functions ${sys.usb.config}
286 write /sys/class/android_usb/android0/enable 1
288 setprop sys.usb.state ${sys.usb.config}
290 #26.ptp,mass_storage,acm
291 on property:sys.usb.config=ptp,mass_storage,acm
292 write /sys/class/android_usb/android0/enable 0
293 write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
294 write /sys/class/android_usb/android0/idProduct 201A
295 write /sys/class/android_usb/android0/f_acm/instances 1
296 write /sys/class/android_usb/android0/functions ${sys.usb.config}
297 write /sys/class/android_usb/android0/enable 1
298 setprop sys.usb.state ${sys.usb.config}
300 #27.ptp,mass_storage,adb,acm
301 on property:sys.usb.config=ptp,mass_storage,adb,acm
302 write /sys/class/android_usb/android0/enable 0
303 write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
304 write /sys/class/android_usb/android0/idProduct 201B
305 write /sys/class/android_usb/android0/f_acm/instances 1
306 write /sys/class/android_usb/android0/functions ${sys.usb.config}
307 write /sys/class/android_usb/android0/enable 1
309 setprop sys.usb.state ${sys.usb.config}
311 # duplicate of init.usb.rc
313 #28. USB accessory configuration
314 #on property:sys.usb.config=accessory
315 # write /sys/class/android_usb/android0/enable 0
316 # write /sys/class/android_usb/android0/idVendor 18d1
317 # write /sys/class/android_usb/android0/idProduct 2d00
318 # write /sys/class/android_usb/android0/functions ${sys.usb.config}
319 # write /sys/class/android_usb/android0/enable 1
320 # setprop sys.usb.state ${sys.usb.config}
322 #39. USB accessory configuration, with adb
323 #on property:sys.usb.config=accessory,adb
324 # write /sys/class/android_usb/android0/enable 0
325 # write /sys/class/android_usb/android0/idVendor 18d1
326 # write /sys/class/android_usb/android0/idProduct 2d01
327 # write /sys/class/android_usb/android0/functions ${sys.usb.config}
328 # write /sys/class/android_usb/android0/enable 1
330 # setprop sys.usb.state ${sys.usb.config}
332 #30. audio accessory configuration
333 #on property:sys.usb.config=audio_source
334 # write /sys/class/android_usb/android0/enable 0
335 # write /sys/class/android_usb/android0/idVendor 18d1
336 # write /sys/class/android_usb/android0/idProduct 2d02
337 # write /sys/class/android_usb/android0/functions ${sys.usb.config}
338 # write /sys/class/android_usb/android0/enable 1
339 # setprop sys.usb.state ${sys.usb.config}
341 #31. audio accessory configuration, with adb
342 #on property:sys.usb.config=audio_source,adb
343 # write /sys/class/android_usb/android0/enable 0
344 # write /sys/class/android_usb/android0/idVendor 18d1
345 # write /sys/class/android_usb/android0/idProduct 2d03
346 # write /sys/class/android_usb/android0/functions ${sys.usb.config}
347 # write /sys/class/android_usb/android0/enable 1
349 # setprop sys.usb.state ${sys.usb.config}
351 #32. USB and audio accessory configuration
352 #on property:sys.usb.config=accessory,audio_source
353 # write /sys/class/android_usb/android0/enable 0
354 # write /sys/class/android_usb/android0/idVendor 18d1
355 # write /sys/class/android_usb/android0/idProduct 2d04
356 # write /sys/class/android_usb/android0/functions ${sys.usb.config}
357 # write /sys/class/android_usb/android0/enable 1
358 # setprop sys.usb.state ${sys.usb.config}
360 #33. USB and audio accessory configuration, with adb
361 #on property:sys.usb.config=accessory,audio_source,adb
362 # write /sys/class/android_usb/android0/enable 0
363 # write /sys/class/android_usb/android0/idVendor 18d1
364 # write /sys/class/android_usb/android0/idProduct 2d05
365 # write /sys/class/android_usb/android0/functions ${sys.usb.config}
366 # write /sys/class/android_usb/android0/enable 1
368 # setprop sys.usb.state ${sys.usb.config}
370 #34.USB Charging Only configuration
371 on property:sys.usb.config=charging
372 setprop sys.usb.state ${sys.usb.config}
373 setprop sys.usb.charging yes
375 on property:sys.usb.charging=yes
376 write /sys/devices/platform/mt_usb/cmode 2
378 on property:sys.usb.charging=no
379 write /sys/devices/platform/mt_usb/cmode 1
381 #35.USB BICR configuration(mass_storage)
382 on property:sys.usb.config=bicr
383 write /sys/class/android_usb/android0/enable 0
384 write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
385 write /sys/class/android_usb/android0/idProduct 2002
386 write /sys/class/android_usb/android0/functions mass_storage
387 write /sys/class/android_usb/android0/f_mass_storage/bicr 1
388 write /sys/class/android_usb/android0/f_mass_storage/lun/file "/dev/block/loop0"
389 write /sys/class/android_usb/android0/enable 1
390 setprop sys.usb.state ${sys.usb.config}
392 #36.USB BICR configuration(mass_storage+adb)
393 on property:sys.usb.config=bicr,adb
394 write /sys/class/android_usb/android0/enable 0
395 write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
396 write /sys/class/android_usb/android0/idProduct 2003
397 write /sys/class/android_usb/android0/functions mass_storage,adb
398 write /sys/class/android_usb/android0/f_mass_storage/bicr 1
399 write /sys/class/android_usb/android0/f_mass_storage/lun/file "/dev/block/loop0"
400 write /sys/class/android_usb/android0/enable 1
402 setprop sys.usb.state ${sys.usb.config}
404 #37.USB BICR configuration(mass_storage+adb+acm)
405 on property:sys.usb.config=bicr,adb,acm
406 write /sys/class/android_usb/android0/enable 0
407 write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
408 write /sys/class/android_usb/android0/idProduct 2006
409 write /sys/class/android_usb/android0/f_acm/instances 1
410 write /sys/class/android_usb/android0/functions mass_storage,adb,acm
411 write /sys/class/android_usb/android0/f_mass_storage/bicr 1
412 write /sys/class/android_usb/android0/f_mass_storage/lun/file "/dev/block/loop0"
413 write /sys/class/android_usb/android0/enable 1
415 setprop sys.usb.state ${sys.usb.config}
417 #38.USB BICR configuration(mass_storage+acm)
418 on property:sys.usb.config=bicr,acm
419 write /sys/class/android_usb/android0/enable 0
420 write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
421 write /sys/class/android_usb/android0/idProduct 200F
422 write /sys/class/android_usb/android0/f_acm/instances 1
423 write /sys/class/android_usb/android0/functions mass_storage,acm
424 write /sys/class/android_usb/android0/f_mass_storage/bicr 1
425 write /sys/class/android_usb/android0/f_mass_storage/lun/file "/dev/block/loop0"
426 write /sys/class/android_usb/android0/enable 1
427 setprop sys.usb.state ${sys.usb.config}
430 on property:sys.usb.config=eem
431 write /sys/class/android_usb/android0/enable 0
432 write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
433 write /sys/class/android_usb/android0/idProduct 2026
434 write /sys/class/android_usb/android0/functions ${sys.usb.config}
435 write /sys/class/android_usb/android0/bDeviceClass 224
436 write /sys/class/android_usb/android0/enable 1
437 setprop sys.usb.state ${sys.usb.config}
440 on property:sys.usb.config=eem,acm
441 write /sys/class/android_usb/android0/enable 0
442 write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
443 write /sys/class/android_usb/android0/idProduct 2027
444 write /sys/class/android_usb/android0/f_acm/instances 1
445 write /sys/class/android_usb/android0/functions ${sys.usb.config}
446 write /sys/class/android_usb/android0/enable 1
447 setprop sys.usb.state ${sys.usb.config}
450 on property:sys.usb.config=eem,adb
451 write /sys/class/android_usb/android0/enable 0
452 write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
453 write /sys/class/android_usb/android0/idProduct 2028
454 write /sys/class/android_usb/android0/functions ${sys.usb.config}
455 write /sys/class/android_usb/android0/enable 1
457 setprop sys.usb.state ${sys.usb.config}
460 on property:sys.usb.config=eem,adb,acm
461 write /sys/class/android_usb/android0/enable 0
462 write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
463 write /sys/class/android_usb/android0/idProduct 2030
464 write /sys/class/android_usb/android0/f_acm/instances 1
465 write /sys/class/android_usb/android0/functions ${sys.usb.config}
466 write /sys/class/android_usb/android0/enable 1
468 setprop sys.usb.state ${sys.usb.config}
470 on property:sys.usb.bicr=yes
471 write /sys/class/android_usb/android0/f_mass_storage/bicr 1
472 write /sys/class/android_usb/android0/f_mass_storage/lun/file "/dev/block/loop0"
474 on property:sys.usb.bicr=no
475 write /sys/class/android_usb/android0/f_mass_storage/bicr 0
476 write /sys/class/android_usb/android0/f_mass_storage/lun/file "0"
478 on property:mediatek.usb.port.mode=usb
479 write /sys/devices/platform/mt_usb/portmode 0
481 on property:mediatek.usb.port.mode=uart
482 write /sys/devices/platform/mt_usb/portmode 1