• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 encryption=Require
13
14# adbd is controlled via property triggers in init.<platform>.usb.rc
15service adbd /system/bin/adbd --root_seclabel=u:r:su:s0
16    class core
17    socket adbd seqpacket 660 system system
18    disabled
19    updatable
20    seclabel u:r:adbd:s0
21
22# Set default value on sys.usb.configfs early in boot sequence. It will be
23# overridden in `on boot` action of init.hardware.rc.
24on init
25    setprop sys.usb.configfs 0
26
27# Used to disable USB when switching states
28on property:sys.usb.config=none && property:sys.usb.configfs=0
29    stop adbd
30    write /sys/class/android_usb/android0/enable 0
31    write /sys/class/android_usb/android0/bDeviceClass 0
32    setprop sys.usb.state ${sys.usb.config}
33
34# adb only USB configuration
35# This is the fallback configuration if the
36# USB manager fails to set a standard configuration
37on property:sys.usb.config=adb && property:sys.usb.configfs=0
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 4EE7
41    write /sys/class/android_usb/android0/functions ${sys.usb.config}
42    write /sys/class/android_usb/android0/enable 1
43    start adbd
44    setprop sys.usb.state ${sys.usb.config}
45
46# USB accessory configuration
47on property:sys.usb.config=accessory && property:sys.usb.configfs=0
48    write /sys/class/android_usb/android0/enable 0
49    write /sys/class/android_usb/android0/idVendor 18d1
50    write /sys/class/android_usb/android0/idProduct 2d00
51    write /sys/class/android_usb/android0/functions ${sys.usb.config}
52    write /sys/class/android_usb/android0/enable 1
53    setprop sys.usb.state ${sys.usb.config}
54
55# USB accessory configuration, with adb
56on property:sys.usb.config=accessory,adb && property:sys.usb.configfs=0
57    write /sys/class/android_usb/android0/enable 0
58    write /sys/class/android_usb/android0/idVendor 18d1
59    write /sys/class/android_usb/android0/idProduct 2d01
60    write /sys/class/android_usb/android0/functions ${sys.usb.config}
61    write /sys/class/android_usb/android0/enable 1
62    start adbd
63    setprop sys.usb.state ${sys.usb.config}
64
65# audio accessory configuration
66on property:sys.usb.config=audio_source && property:sys.usb.configfs=0
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 2d02
70    write /sys/class/android_usb/android0/functions ${sys.usb.config}
71    write /sys/class/android_usb/android0/enable 1
72    setprop sys.usb.state ${sys.usb.config}
73
74# audio accessory configuration, with adb
75on property:sys.usb.config=audio_source,adb && property:sys.usb.configfs=0
76    write /sys/class/android_usb/android0/enable 0
77    write /sys/class/android_usb/android0/idVendor 18d1
78    write /sys/class/android_usb/android0/idProduct 2d03
79    write /sys/class/android_usb/android0/functions ${sys.usb.config}
80    write /sys/class/android_usb/android0/enable 1
81    start adbd
82    setprop sys.usb.state ${sys.usb.config}
83
84# USB and audio accessory configuration
85on property:sys.usb.config=accessory,audio_source && property:sys.usb.configfs=0
86    write /sys/class/android_usb/android0/enable 0
87    write /sys/class/android_usb/android0/idVendor 18d1
88    write /sys/class/android_usb/android0/idProduct 2d04
89    write /sys/class/android_usb/android0/functions ${sys.usb.config}
90    write /sys/class/android_usb/android0/enable 1
91    setprop sys.usb.state ${sys.usb.config}
92
93# USB and audio accessory configuration, with adb
94on property:sys.usb.config=accessory,audio_source,adb && property:sys.usb.configfs=0
95    write /sys/class/android_usb/android0/enable 0
96    write /sys/class/android_usb/android0/idVendor 18d1
97    write /sys/class/android_usb/android0/idProduct 2d05
98    write /sys/class/android_usb/android0/functions ${sys.usb.config}
99    write /sys/class/android_usb/android0/enable 1
100    start adbd
101    setprop sys.usb.state ${sys.usb.config}
102
103# Used to set USB configuration at boot and to switch the configuration
104# when changing the default configuration
105on boot && property:persist.sys.usb.config=*
106    setprop sys.usb.config ${persist.sys.usb.config}
107
108#
109# USB type C
110#
111
112# USB mode changes
113on property:sys.usb.typec.mode=dfp
114    write /sys/class/dual_role_usb/otg_default/mode ${sys.usb.typec.mode}
115    setprop sys.usb.typec.state ${sys.usb.typec.mode}
116
117on property:sys.usb.typec.mode=ufp
118    write /sys/class/dual_role_usb/otg_default/mode ${sys.usb.typec.mode}
119    setprop sys.usb.typec.state ${sys.usb.typec.mode}
120
121# USB data role changes
122on property:sys.usb.typec.data_role=device
123    write /sys/class/dual_role_usb/otg_default/data_role ${sys.usb.typec.data_role}
124    setprop sys.usb.typec.state ${sys.usb.typec.data_role}
125
126on property:sys.usb.typec.data_role=host
127    write /sys/class/dual_role_usb/otg_default/data_role ${sys.usb.typec.data_role}
128    setprop sys.usb.typec.state ${sys.usb.typec.data_role}
129
130# USB power role changes
131on property:sys.usb.typec.power_role=source
132    write /sys/class/dual_role_usb/otg_default/power_role ${sys.usb.typec.power_role}
133    setprop sys.usb.typec.state ${sys.usb.typec.power_role}
134
135on property:sys.usb.typec.power_role=sink
136    write /sys/class/dual_role_usb/otg_default/power_role ${sys.usb.typec.power_role}
137    setprop sys.usb.typec.state ${sys.usb.typec.power_role}
138
139on userspace-reboot-requested
140  setprop sys.usb.config ""
141  setprop sys.usb.state ""
142