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