1# Copyright 2015 The Android Open Source Project
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7#      http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15on init
16    write /sys/class/android_usb/android0/f_rndis/manufacturer LGE
17    write /sys/class/android_usb/android0/f_rndis/vendorID 18D1
18    write /sys/class/android_usb/android0/f_rndis/wceis 1
19
20on boot
21    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
22    write /sys/class/android_usb/android0/iManufacturer ${ro.product.manufacturer}
23    write /sys/class/android_usb/android0/iProduct ${ro.product.model}
24
25on post-fs
26    mkdir /dev/usb-ffs 0770 shell shell
27    mkdir /dev/usb-ffs/adb 0770 shell shell
28    mount functionfs adb /dev/usb-ffs/adb uid=2000,gid=2000
29    write /sys/class/android_usb/android0/f_ffs/aliases adb
30
31on post-fs-data
32    write /sys/module/rndis_ipa/parameters/min_cpu_freq 1036800
33    write /sys/class/android_usb/android0/f_rndis_qc/rndis_transports BAM2BAM_IPA
34
35# MTP
36on property:sys.usb.config=mtp
37    stop adbd
38    write /sys/class/android_usb/android0/enable 0
39    write /sys/class/android_usb/android0/idVendor 18D1
40    write /sys/class/android_usb/android0/idProduct 4EE1
41    write /sys/class/android_usb/android0/bDeviceClass 0
42    write /sys/class/android_usb/android0/bDeviceSubClass 0
43    write /sys/class/android_usb/android0/bDeviceProtocol 0
44    write /sys/class/android_usb/android0/functions mtp
45    write /sys/module/g_android/parameters/mtp_rx_req_len 131072
46    write /sys/module/g_android/parameters/mtp_tx_reqs 32
47    write /sys/class/android_usb/android0/enable 1
48    setprop sys.usb.state ${sys.usb.config}
49
50on property:sys.usb.config=mtp,adb
51    write /sys/class/android_usb/android0/enable 0
52    write /sys/class/android_usb/android0/idVendor 18D1
53    write /sys/class/android_usb/android0/idProduct 4EE2
54    write /sys/class/android_usb/android0/bDeviceClass 0
55    write /sys/class/android_usb/android0/bDeviceSubClass 0
56    write /sys/class/android_usb/android0/bDeviceProtocol 0
57    write /sys/class/android_usb/android0/functions mtp,adb
58    write /sys/module/g_android/parameters/mtp_rx_req_len 131072
59    write /sys/module/g_android/parameters/mtp_tx_reqs 32
60    write /sys/class/android_usb/android0/enable 1
61    start adbd
62    setprop sys.usb.state ${sys.usb.config}
63
64# rndis
65on property:sys.usb.config=rndis
66    stop adbd
67    write /sys/class/android_usb/android0/enable 0
68    write /sys/class/android_usb/android0/idVendor 18D1
69    write /sys/class/android_usb/android0/idProduct 4EE3
70    write /sys/class/android_usb/android0/bDeviceClass 239
71    write /sys/class/android_usb/android0/bDeviceSubClass 2
72    write /sys/class/android_usb/android0/bDeviceProtocol 1
73    write /sys/class/android_usb/android0/functions rndis
74    write /sys/class/android_usb/android0/enable 1
75    setprop sys.usb.state ${sys.usb.config}
76
77on property:sys.usb.config=rndis,adb
78    write /sys/class/android_usb/android0/enable 0
79    write /sys/class/android_usb/android0/idVendor 18D1
80    write /sys/class/android_usb/android0/idProduct 4EE4
81    write /sys/class/android_usb/android0/bDeviceClass 239
82    write /sys/class/android_usb/android0/bDeviceSubClass 2
83    write /sys/class/android_usb/android0/bDeviceProtocol 1
84    write /sys/class/android_usb/android0/functions rndis,adb
85    write /sys/class/android_usb/android0/enable 1
86    start adbd
87    setprop sys.usb.state ${sys.usb.config}
88
89# PTP
90on property:sys.usb.config=ptp
91    stop adbd
92    write /sys/class/android_usb/android0/enable 0
93    write /sys/class/android_usb/android0/idVendor 18D1
94    write /sys/class/android_usb/android0/idProduct 4EE5
95    write /sys/class/android_usb/android0/bDeviceClass 0
96    write /sys/class/android_usb/android0/bDeviceSubClass 0
97    write /sys/class/android_usb/android0/bDeviceProtocol 0
98    write /sys/class/android_usb/android0/functions ptp
99    write /sys/class/android_usb/android0/enable 1
100    setprop sys.usb.state ${sys.usb.config}
101
102on property:sys.usb.config=ptp,adb
103    write /sys/class/android_usb/android0/enable 0
104    write /sys/class/android_usb/android0/idVendor 18D1
105    write /sys/class/android_usb/android0/idProduct 4EE6
106    write /sys/class/android_usb/android0/bDeviceClass 0
107    write /sys/class/android_usb/android0/bDeviceSubClass 0
108    write /sys/class/android_usb/android0/bDeviceProtocol 0
109    write /sys/class/android_usb/android0/functions ptp,adb
110    write /sys/class/android_usb/android0/enable 1
111    start adbd
112    setprop sys.usb.state ${sys.usb.config}
113
114# diag
115on property:sys.usb.config=diag
116    stop adbd
117    write /sys/class/android_usb/android0/enable 0
118    write /sys/class/android_usb/android0/idVendor 05C6
119    write /sys/class/android_usb/android0/idProduct 903D
120    write /sys/class/android_usb/android0/bDeviceClass 0
121    write /sys/class/android_usb/android0/bDeviceSubClass 0
122    write /sys/class/android_usb/android0/bDeviceProtocol 0
123    write /sys/class/android_usb/android0/f_diag/clients diag
124    write /sys/class/android_usb/android0/f_acm/acm_transports smd,tty
125    write /sys/class/android_usb/android0/f_rmnet/transports qti,bam2bam_ipa
126    write /sys/class/android_usb/android0/functions diag,adb,acm,rmnet
127    write /sys/class/android_usb/android0/enable 1
128    start adbd
129    setprop sys.usb.state ${sys.usb.config}
130
131on property:sys.usb.config=diag,adb
132    stop adbd
133    write /sys/class/android_usb/android0/enable 0
134    write /sys/class/android_usb/android0/idVendor 05C6
135    write /sys/class/android_usb/android0/idProduct 903D
136    write /sys/class/android_usb/android0/bDeviceClass 0
137    write /sys/class/android_usb/android0/bDeviceSubClass 0
138    write /sys/class/android_usb/android0/bDeviceProtocol 0
139    write /sys/class/android_usb/android0/f_diag/clients diag
140    write /sys/class/android_usb/android0/f_acm/acm_transports smd,tty
141    write /sys/class/android_usb/android0/f_rmnet/transports qti,bam2bam_ipa
142    write /sys/class/android_usb/android0/functions diag,adb,acm,rmnet
143    write /sys/class/android_usb/android0/enable 1
144    start adbd
145    setprop sys.usb.state ${sys.usb.config}
146
147# USB midi configuration
148on property:sys.usb.config=midi
149    stop adbd
150    write /sys/class/android_usb/android0/enable 0
151    write /sys/class/android_usb/android0/idVendor 18D1
152    write /sys/class/android_usb/android0/idProduct 4EE8
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}
156
157# USB midi configuration, with adb
158on property:sys.usb.config=midi,adb
159    write /sys/class/android_usb/android0/enable 0
160    write /sys/class/android_usb/android0/idVendor 18D1
161    write /sys/class/android_usb/android0/idProduct 4EE9
162    write /sys/class/android_usb/android0/functions ${sys.usb.config}
163    write /sys/class/android_usb/android0/enable 1
164    start adbd
165    setprop sys.usb.state ${sys.usb.config}
166