Home | History | Annotate | Download | only in rootdir
      1 # Copyright (C) 2012 The Android Open Source Project
      2 #
      3 # USB configuration common for all android devices
      4 #
      5 
      6 on 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
     13 
     14 # adbd is controlled via property triggers in init.<platform>.usb.rc
     15 service adbd /sbin/adbd --root_seclabel=u:r:su:s0
     16     class core
     17     socket adbd stream 660 system system
     18     disabled
     19     seclabel u:r:adbd:s0
     20 
     21 # adbd on at boot in emulator
     22 on property:ro.kernel.qemu=1
     23     start adbd
     24 
     25 on boot
     26     setprop sys.usb.configfs 0
     27 
     28 # Used to disable USB when switching states
     29 on property:sys.usb.config=none && property:sys.usb.configfs=0
     30     stop adbd
     31     write /sys/class/android_usb/android0/enable 0
     32     write /sys/class/android_usb/android0/bDeviceClass 0
     33     setprop sys.usb.state ${sys.usb.config}
     34 
     35 # adb only USB configuration
     36 # This is the fallback configuration if the
     37 # USB manager fails to set a standard configuration
     38 on property:sys.usb.config=adb && property:sys.usb.configfs=0
     39     write /sys/class/android_usb/android0/enable 0
     40     write /sys/class/android_usb/android0/idVendor 18d1
     41     write /sys/class/android_usb/android0/idProduct 4EE7
     42     write /sys/class/android_usb/android0/functions ${sys.usb.config}
     43     write /sys/class/android_usb/android0/enable 1
     44     start adbd
     45     setprop sys.usb.state ${sys.usb.config}
     46 
     47 # USB accessory configuration
     48 on property:sys.usb.config=accessory && property:sys.usb.configfs=0
     49     write /sys/class/android_usb/android0/enable 0
     50     write /sys/class/android_usb/android0/idVendor 18d1
     51     write /sys/class/android_usb/android0/idProduct 2d00
     52     write /sys/class/android_usb/android0/functions ${sys.usb.config}
     53     write /sys/class/android_usb/android0/enable 1
     54     setprop sys.usb.state ${sys.usb.config}
     55 
     56 # USB accessory configuration, with adb
     57 on property:sys.usb.config=accessory,adb && property:sys.usb.configfs=0
     58     write /sys/class/android_usb/android0/enable 0
     59     write /sys/class/android_usb/android0/idVendor 18d1
     60     write /sys/class/android_usb/android0/idProduct 2d01
     61     write /sys/class/android_usb/android0/functions ${sys.usb.config}
     62     write /sys/class/android_usb/android0/enable 1
     63     start adbd
     64     setprop sys.usb.state ${sys.usb.config}
     65 
     66 # audio accessory configuration
     67 on property:sys.usb.config=audio_source && property:sys.usb.configfs=0
     68     write /sys/class/android_usb/android0/enable 0
     69     write /sys/class/android_usb/android0/idVendor 18d1
     70     write /sys/class/android_usb/android0/idProduct 2d02
     71     write /sys/class/android_usb/android0/functions ${sys.usb.config}
     72     write /sys/class/android_usb/android0/enable 1
     73     setprop sys.usb.state ${sys.usb.config}
     74 
     75 # audio accessory configuration, with adb
     76 on property:sys.usb.config=audio_source,adb && property:sys.usb.configfs=0
     77     write /sys/class/android_usb/android0/enable 0
     78     write /sys/class/android_usb/android0/idVendor 18d1
     79     write /sys/class/android_usb/android0/idProduct 2d03
     80     write /sys/class/android_usb/android0/functions ${sys.usb.config}
     81     write /sys/class/android_usb/android0/enable 1
     82     start adbd
     83     setprop sys.usb.state ${sys.usb.config}
     84 
     85 # USB and audio accessory configuration
     86 on property:sys.usb.config=accessory,audio_source && property:sys.usb.configfs=0
     87     write /sys/class/android_usb/android0/enable 0
     88     write /sys/class/android_usb/android0/idVendor 18d1
     89     write /sys/class/android_usb/android0/idProduct 2d04
     90     write /sys/class/android_usb/android0/functions ${sys.usb.config}
     91     write /sys/class/android_usb/android0/enable 1
     92     setprop sys.usb.state ${sys.usb.config}
     93 
     94 # USB and audio accessory configuration, with adb
     95 on property:sys.usb.config=accessory,audio_source,adb && property:sys.usb.configfs=0
     96     write /sys/class/android_usb/android0/enable 0
     97     write /sys/class/android_usb/android0/idVendor 18d1
     98     write /sys/class/android_usb/android0/idProduct 2d05
     99     write /sys/class/android_usb/android0/functions ${sys.usb.config}
    100     write /sys/class/android_usb/android0/enable 1
    101     start adbd
    102     setprop sys.usb.state ${sys.usb.config}
    103 
    104 # Used to set USB configuration at boot and to switch the configuration
    105 # when changing the default configuration
    106 on boot && property:persist.sys.usb.config=*
    107     setprop sys.usb.config ${persist.sys.usb.config}
    108 
    109 #
    110 # USB type C
    111 #
    112 
    113 # USB mode changes
    114 on property:sys.usb.typec.mode=dfp
    115     write /sys/class/dual_role_usb/otg_default/mode ${sys.usb.typec.mode}
    116     setprop sys.usb.typec.state ${sys.usb.typec.mode}
    117 
    118 on property:sys.usb.typec.mode=ufp
    119     write /sys/class/dual_role_usb/otg_default/mode ${sys.usb.typec.mode}
    120     setprop sys.usb.typec.state ${sys.usb.typec.mode}
    121 
    122 # USB data role changes
    123 on property:sys.usb.typec.data_role=device
    124     write /sys/class/dual_role_usb/otg_default/data_role ${sys.usb.typec.data_role}
    125     setprop sys.usb.typec.state ${sys.usb.typec.data_role}
    126 
    127 on property:sys.usb.typec.data_role=host
    128     write /sys/class/dual_role_usb/otg_default/data_role ${sys.usb.typec.data_role}
    129     setprop sys.usb.typec.state ${sys.usb.typec.data_role}
    130 
    131 # USB power role changes
    132 on property:sys.usb.typec.power_role=source
    133     write /sys/class/dual_role_usb/otg_default/power_role ${sys.usb.typec.power_role}
    134     setprop sys.usb.typec.state ${sys.usb.typec.power_role}
    135 
    136 on property:sys.usb.typec.power_role=sink
    137     write /sys/class/dual_role_usb/otg_default/power_role ${sys.usb.typec.power_role}
    138     setprop sys.usb.typec.state ${sys.usb.typec.power_role}
    139