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 12on boot 13 setprop sys.usb.configfs 0 14 15# Used to disable USB when switching states 16on property:sys.usb.config=none && property:sys.usb.configfs=0 17 stop adbd 18 write /sys/class/android_usb/android0/enable 0 19 write /sys/class/android_usb/android0/bDeviceClass 0 20 setprop sys.usb.state ${sys.usb.config} 21 22# adb only USB configuration 23# This is the fallback configuration if the 24# USB manager fails to set a standard configuration 25on property:sys.usb.config=adb && property:sys.usb.configfs=0 26 write /sys/class/android_usb/android0/enable 0 27 write /sys/class/android_usb/android0/idVendor 18d1 28 write /sys/class/android_usb/android0/idProduct 4EE7 29 write /sys/class/android_usb/android0/functions ${sys.usb.config} 30 write /sys/class/android_usb/android0/enable 1 31 start adbd 32 setprop sys.usb.state ${sys.usb.config} 33 34# USB accessory configuration 35on property:sys.usb.config=accessory && property:sys.usb.configfs=0 36 write /sys/class/android_usb/android0/enable 0 37 write /sys/class/android_usb/android0/idVendor 18d1 38 write /sys/class/android_usb/android0/idProduct 2d00 39 write /sys/class/android_usb/android0/functions ${sys.usb.config} 40 write /sys/class/android_usb/android0/enable 1 41 setprop sys.usb.state ${sys.usb.config} 42 43# USB accessory configuration, with adb 44on property:sys.usb.config=accessory,adb && property:sys.usb.configfs=0 45 write /sys/class/android_usb/android0/enable 0 46 write /sys/class/android_usb/android0/idVendor 18d1 47 write /sys/class/android_usb/android0/idProduct 2d01 48 write /sys/class/android_usb/android0/functions ${sys.usb.config} 49 write /sys/class/android_usb/android0/enable 1 50 start adbd 51 setprop sys.usb.state ${sys.usb.config} 52 53# audio accessory configuration 54on property:sys.usb.config=audio_source && property:sys.usb.configfs=0 55 write /sys/class/android_usb/android0/enable 0 56 write /sys/class/android_usb/android0/idVendor 18d1 57 write /sys/class/android_usb/android0/idProduct 2d02 58 write /sys/class/android_usb/android0/functions ${sys.usb.config} 59 write /sys/class/android_usb/android0/enable 1 60 setprop sys.usb.state ${sys.usb.config} 61 62# audio accessory configuration, with adb 63on property:sys.usb.config=audio_source,adb && property:sys.usb.configfs=0 64 write /sys/class/android_usb/android0/enable 0 65 write /sys/class/android_usb/android0/idVendor 18d1 66 write /sys/class/android_usb/android0/idProduct 2d03 67 write /sys/class/android_usb/android0/functions ${sys.usb.config} 68 write /sys/class/android_usb/android0/enable 1 69 start adbd 70 setprop sys.usb.state ${sys.usb.config} 71 72# USB and audio accessory configuration 73on property:sys.usb.config=accessory,audio_source && property:sys.usb.configfs=0 74 write /sys/class/android_usb/android0/enable 0 75 write /sys/class/android_usb/android0/idVendor 18d1 76 write /sys/class/android_usb/android0/idProduct 2d04 77 write /sys/class/android_usb/android0/functions ${sys.usb.config} 78 write /sys/class/android_usb/android0/enable 1 79 setprop sys.usb.state ${sys.usb.config} 80 81# USB and audio accessory configuration, with adb 82on property:sys.usb.config=accessory,audio_source,adb && property:sys.usb.configfs=0 83 write /sys/class/android_usb/android0/enable 0 84 write /sys/class/android_usb/android0/idVendor 18d1 85 write /sys/class/android_usb/android0/idProduct 2d05 86 write /sys/class/android_usb/android0/functions ${sys.usb.config} 87 write /sys/class/android_usb/android0/enable 1 88 start adbd 89 setprop sys.usb.state ${sys.usb.config} 90 91# Used to set USB configuration at boot and to switch the configuration 92# when changing the default configuration 93on property:persist.sys.usb.config=* 94 setprop sys.usb.config ${persist.sys.usb.config} 95 96# 97# USB type C 98# 99 100# USB mode changes 101on property:sys.usb.typec.mode=dfp 102 write /sys/class/dual_role_usb/otg_default/mode ${sys.usb.typec.mode} 103 setprop sys.usb.typec.state ${sys.usb.typec.mode} 104 105on property:sys.usb.typec.mode=ufp 106 write /sys/class/dual_role_usb/otg_default/mode ${sys.usb.typec.mode} 107 setprop sys.usb.typec.state ${sys.usb.typec.mode} 108 109# USB data role changes 110on property:sys.usb.typec.data_role=device 111 write /sys/class/dual_role_usb/otg_default/data_role ${sys.usb.typec.data_role} 112 setprop sys.usb.typec.state ${sys.usb.typec.data_role} 113 114on property:sys.usb.typec.data_role=host 115 write /sys/class/dual_role_usb/otg_default/data_role ${sys.usb.typec.data_role} 116 setprop sys.usb.typec.state ${sys.usb.typec.data_role} 117 118# USB power role changes 119on property:sys.usb.typec.power_role=source 120 write /sys/class/dual_role_usb/otg_default/power_role ${sys.usb.typec.power_role} 121 setprop sys.usb.typec.state ${sys.usb.typec.power_role} 122 123on property:sys.usb.typec.power_role=sink 124 write /sys/class/dual_role_usb/otg_default/power_role ${sys.usb.typec.power_role} 125 setprop sys.usb.typec.state ${sys.usb.typec.power_role} 126