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