xref: /aosp_15_r20/system/core/rootdir/init.usb.rc (revision 00c7fec1bb09f3284aad6a6f96d2f63dfc3650ad)
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    user root
22
23on property:vendor.sys.usb.adb.disabled=*
24    setprop sys.usb.adb.disabled ${vendor.sys.usb.adb.disabled}
25
26# Set default value on sys.usb.configfs early in boot sequence. It will be
27# overridden in `on boot` action of init.hardware.rc.
28on init
29    setprop sys.usb.configfs 0
30
31# Used to disable USB when switching states
32on property:sys.usb.config=none && property:sys.usb.configfs=0
33    stop adbd
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}
37
38# adb only USB configuration
39# This is the fallback configuration if the
40# USB manager fails to set a standard configuration
41on property:sys.usb.config=adb && property:sys.usb.configfs=0
42    write /sys/class/android_usb/android0/enable 0
43    write /sys/class/android_usb/android0/idVendor 18d1
44    write /sys/class/android_usb/android0/idProduct 4EE7
45    write /sys/class/android_usb/android0/functions ${sys.usb.config}
46    write /sys/class/android_usb/android0/enable 1
47    start adbd
48    setprop sys.usb.state ${sys.usb.config}
49
50# USB accessory configuration
51on property:sys.usb.config=accessory && property:sys.usb.configfs=0
52    write /sys/class/android_usb/android0/enable 0
53    write /sys/class/android_usb/android0/idVendor 18d1
54    write /sys/class/android_usb/android0/idProduct 2d00
55    write /sys/class/android_usb/android0/functions ${sys.usb.config}
56    write /sys/class/android_usb/android0/enable 1
57    setprop sys.usb.state ${sys.usb.config}
58
59# USB accessory configuration, with adb
60on property:sys.usb.config=accessory,adb && property:sys.usb.configfs=0
61    write /sys/class/android_usb/android0/enable 0
62    write /sys/class/android_usb/android0/idVendor 18d1
63    write /sys/class/android_usb/android0/idProduct 2d01
64    write /sys/class/android_usb/android0/functions ${sys.usb.config}
65    write /sys/class/android_usb/android0/enable 1
66    start adbd
67    setprop sys.usb.state ${sys.usb.config}
68
69# audio accessory configuration
70on property:sys.usb.config=audio_source && property:sys.usb.configfs=0
71    write /sys/class/android_usb/android0/enable 0
72    write /sys/class/android_usb/android0/idVendor 18d1
73    write /sys/class/android_usb/android0/idProduct 2d02
74    write /sys/class/android_usb/android0/functions ${sys.usb.config}
75    write /sys/class/android_usb/android0/enable 1
76    setprop sys.usb.state ${sys.usb.config}
77
78# audio accessory configuration, with adb
79on property:sys.usb.config=audio_source,adb && property:sys.usb.configfs=0
80    write /sys/class/android_usb/android0/enable 0
81    write /sys/class/android_usb/android0/idVendor 18d1
82    write /sys/class/android_usb/android0/idProduct 2d03
83    write /sys/class/android_usb/android0/functions ${sys.usb.config}
84    write /sys/class/android_usb/android0/enable 1
85    start adbd
86    setprop sys.usb.state ${sys.usb.config}
87
88# USB and audio accessory configuration
89on property:sys.usb.config=accessory,audio_source && property:sys.usb.configfs=0
90    write /sys/class/android_usb/android0/enable 0
91    write /sys/class/android_usb/android0/idVendor 18d1
92    write /sys/class/android_usb/android0/idProduct 2d04
93    write /sys/class/android_usb/android0/functions ${sys.usb.config}
94    write /sys/class/android_usb/android0/enable 1
95    setprop sys.usb.state ${sys.usb.config}
96
97# USB and audio accessory configuration, with adb
98on property:sys.usb.config=accessory,audio_source,adb && property:sys.usb.configfs=0
99    write /sys/class/android_usb/android0/enable 0
100    write /sys/class/android_usb/android0/idVendor 18d1
101    write /sys/class/android_usb/android0/idProduct 2d05
102    write /sys/class/android_usb/android0/functions ${sys.usb.config}
103    write /sys/class/android_usb/android0/enable 1
104    start adbd
105    setprop sys.usb.state ${sys.usb.config}
106
107# Used to set USB configuration at boot and to switch the configuration
108# when changing the default configuration
109on boot && property:persist.sys.usb.config=*
110    setprop sys.usb.config ${persist.sys.usb.config}
111
112#
113# USB type C
114#
115
116# USB mode changes
117on property:sys.usb.typec.mode=dfp
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
121on property:sys.usb.typec.mode=ufp
122    write /sys/class/dual_role_usb/otg_default/mode ${sys.usb.typec.mode}
123    setprop sys.usb.typec.state ${sys.usb.typec.mode}
124
125# USB data role changes
126on property:sys.usb.typec.data_role=device
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
130on property:sys.usb.typec.data_role=host
131    write /sys/class/dual_role_usb/otg_default/data_role ${sys.usb.typec.data_role}
132    setprop sys.usb.typec.state ${sys.usb.typec.data_role}
133
134# USB power role changes
135on property:sys.usb.typec.power_role=source
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 property:sys.usb.typec.power_role=sink
140    write /sys/class/dual_role_usb/otg_default/power_role ${sys.usb.typec.power_role}
141    setprop sys.usb.typec.state ${sys.usb.typec.power_role}
142