init.usb.rc revision 05e04a134e2a7f854f99186306c8033e02328fc0
1# Copyright (C) 2012 The Android Open Source Project
2#
3# USB configuration common for all android devices
4#
5
6on post-fs-data
7    chown system system /sys/class/android_usb/android0/f_mass_storage/lun/file
8    chmod 0660 /sys/class/android_usb/android0/f_mass_storage/lun/file
9    chown system system /sys/class/android_usb/android0/f_rndis/ethaddr
10    chmod 0660 /sys/class/android_usb/android0/f_rndis/ethaddr
11    mkdir /data/misc/adb 02750 system shell
12    mkdir /data/adb 0700 root root
13
14# adbd is controlled via property triggers in init.<platform>.usb.rc
15service adbd /sbin/adbd --root_seclabel=u:r:su:s0
16    class core
17    socket adbd stream 660 system system
18    disabled
19    seclabel u:r:adbd:s0
20
21# adbd on at boot in emulator
22on property:ro.kernel.qemu=1
23    start adbd
24
25on boot
26    setprop sys.usb.configfs 0
27
28# Used to disable USB when switching states
29on property:sys.usb.config=none && property:sys.usb.configfs=0
30    stop adbd
31    write /sys/class/android_usb/android0/enable 0
32    write /sys/class/android_usb/android0/bDeviceClass 0
33    setprop sys.usb.state ${sys.usb.config}
34
35# adb only USB configuration
36# This is the fallback configuration if the
37# USB manager fails to set a standard configuration
38on property:sys.usb.config=adb && property:sys.usb.configfs=0
39    write /sys/class/android_usb/android0/enable 0
40    write /sys/class/android_usb/android0/idVendor 18d1
41    write /sys/class/android_usb/android0/idProduct 4EE7
42    write /sys/class/android_usb/android0/functions ${sys.usb.config}
43    write /sys/class/android_usb/android0/enable 1
44    start adbd
45    setprop sys.usb.state ${sys.usb.config}
46
47# USB accessory configuration
48on property:sys.usb.config=accessory && property:sys.usb.configfs=0
49    write /sys/class/android_usb/android0/enable 0
50    write /sys/class/android_usb/android0/idVendor 18d1
51    write /sys/class/android_usb/android0/idProduct 2d00
52    write /sys/class/android_usb/android0/functions ${sys.usb.config}
53    write /sys/class/android_usb/android0/enable 1
54    setprop sys.usb.state ${sys.usb.config}
55
56# USB accessory configuration, with adb
57on property:sys.usb.config=accessory,adb && property:sys.usb.configfs=0
58    write /sys/class/android_usb/android0/enable 0
59    write /sys/class/android_usb/android0/idVendor 18d1
60    write /sys/class/android_usb/android0/idProduct 2d01
61    write /sys/class/android_usb/android0/functions ${sys.usb.config}
62    write /sys/class/android_usb/android0/enable 1
63    start adbd
64    setprop sys.usb.state ${sys.usb.config}
65
66# audio accessory configuration
67on property:sys.usb.config=audio_source && property:sys.usb.configfs=0
68    write /sys/class/android_usb/android0/enable 0
69    write /sys/class/android_usb/android0/idVendor 18d1
70    write /sys/class/android_usb/android0/idProduct 2d02
71    write /sys/class/android_usb/android0/functions ${sys.usb.config}
72    write /sys/class/android_usb/android0/enable 1
73    setprop sys.usb.state ${sys.usb.config}
74
75# audio accessory configuration, with adb
76on property:sys.usb.config=audio_source,adb && property:sys.usb.configfs=0
77    write /sys/class/android_usb/android0/enable 0
78    write /sys/class/android_usb/android0/idVendor 18d1
79    write /sys/class/android_usb/android0/idProduct 2d03
80    write /sys/class/android_usb/android0/functions ${sys.usb.config}
81    write /sys/class/android_usb/android0/enable 1
82    start adbd
83    setprop sys.usb.state ${sys.usb.config}
84
85# USB and audio accessory configuration
86on property:sys.usb.config=accessory,audio_source && property:sys.usb.configfs=0
87    write /sys/class/android_usb/android0/enable 0
88    write /sys/class/android_usb/android0/idVendor 18d1
89    write /sys/class/android_usb/android0/idProduct 2d04
90    write /sys/class/android_usb/android0/functions ${sys.usb.config}
91    write /sys/class/android_usb/android0/enable 1
92    setprop sys.usb.state ${sys.usb.config}
93
94# USB and audio accessory configuration, with adb
95on property:sys.usb.config=accessory,audio_source,adb && property:sys.usb.configfs=0
96    write /sys/class/android_usb/android0/enable 0
97    write /sys/class/android_usb/android0/idVendor 18d1
98    write /sys/class/android_usb/android0/idProduct 2d05
99    write /sys/class/android_usb/android0/functions ${sys.usb.config}
100    write /sys/class/android_usb/android0/enable 1
101    start adbd
102    setprop sys.usb.state ${sys.usb.config}
103
104# Used to set USB configuration at boot and to switch the configuration
105# when changing the default configuration
106on boot && property:persist.sys.usb.config=*
107    setprop sys.usb.config ${persist.sys.usb.config}
108
109#
110# USB type C
111#
112
113# USB mode changes
114on property:sys.usb.typec.mode=dfp
115    write /sys/class/dual_role_usb/otg_default/mode ${sys.usb.typec.mode}
116    setprop sys.usb.typec.state ${sys.usb.typec.mode}
117
118on property:sys.usb.typec.mode=ufp
119    write /sys/class/dual_role_usb/otg_default/mode ${sys.usb.typec.mode}
120    setprop sys.usb.typec.state ${sys.usb.typec.mode}
121
122# USB data role changes
123on property:sys.usb.typec.data_role=device
124    write /sys/class/dual_role_usb/otg_default/data_role ${sys.usb.typec.data_role}
125    setprop sys.usb.typec.state ${sys.usb.typec.data_role}
126
127on property:sys.usb.typec.data_role=host
128    write /sys/class/dual_role_usb/otg_default/data_role ${sys.usb.typec.data_role}
129    setprop sys.usb.typec.state ${sys.usb.typec.data_role}
130
131# USB power role changes
132on property:sys.usb.typec.power_role=source
133    write /sys/class/dual_role_usb/otg_default/power_role ${sys.usb.typec.power_role}
134    setprop sys.usb.typec.state ${sys.usb.typec.power_role}
135
136on property:sys.usb.typec.power_role=sink
137    write /sys/class/dual_role_usb/otg_default/power_role ${sys.usb.typec.power_role}
138    setprop sys.usb.typec.state ${sys.usb.typec.power_role}
139