init.recovery.usb.rc 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. # Copyright (c) 2011-2016, 2018-2021 The Linux Foundation. All rights reserved.
  2. #
  3. # Redistribution and use in source and binary forms, with or without
  4. # modification, are permitted provided that the following conditions are
  5. # met:
  6. # * Redistributions of source code must retain the above copyright
  7. # notice, this list of conditions and the following disclaimer.
  8. # * Redistributions in binary form must reproduce the above
  9. # copyright notice, this list of conditions and the following
  10. # disclaimer in the documentation and/or other materials provided
  11. # with the distribution.
  12. # * Neither the name of The Linux Foundation nor the names of its
  13. # contributors may be used to endorse or promote products derived
  14. # from this software without specific prior written permission.
  15. #
  16. # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
  17. # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  18. # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
  19. # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
  20. # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  21. # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  22. # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
  23. # BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
  24. # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
  25. # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
  26. # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  27. #
  28. on early-init
  29. setprop sys.usb.configfs 0
  30. on init
  31. mkdir /config
  32. mount configfs none /config
  33. mkdir /config/usb_gadget/g1 0770 shell shell
  34. write /config/usb_gadget/g1/bcdUSB 0x0200
  35. write /config/usb_gadget/g1/idVendor 0x18d1
  36. write /config/usb_gadget/g1/idProduct 0xd001
  37. mkdir /config/usb_gadget/g1/strings/0x409 0770 shell shell
  38. write /config/usb_gadget/g1/strings/0x409/serialnumber ${ro.serialno}
  39. write /config/usb_gadget/g1/strings/0x409/manufacturer ${ro.product.manufacturer}
  40. write /config/usb_gadget/g1/strings/0x409/product ${ro.product.model}
  41. mkdir /config/usb_gadget/g1/functions/ffs.adb
  42. mkdir /config/usb_gadget/g1/functions/mass_storage.0
  43. mkdir /config/usb_gadget/g1/functions/mtp.gs0
  44. write /config/usb_gadget/g1/os_desc/use 1
  45. write /config/usb_gadget/g1/os_desc/b_vendor_code 0x1
  46. write /config/usb_gadget/g1/os_desc/qw_sign "MSFT100"
  47. setprop sys.usb.configfs 1
  48. on property:ro.boot.usbcontroller=*
  49. setprop sys.usb.controller ${ro.boot.usbcontroller}
  50. on property:sys.usb.config=none && property:sys.usb.configfs=1
  51. stop adbd
  52. setprop sys.usb.ffs.ready 0
  53. setprop sys.usb.ffs.mtp.ready 0
  54. write /config/usb_gadget/g1/bDeviceClass 0
  55. write /config/usb_gadget/g1/bDeviceSubClass 0
  56. write /config/usb_gadget/g1/bDeviceProtocol 0
  57. setprop sys.usb.state ${sys.usb.config}
  58. on property:sys.usb.config=adb && property:sys.usb.configfs=1
  59. start adbd
  60. on property:sys.usb.config=none,adb && property:sys.usb.configfs=1
  61. start adbd
  62. on property:sys.usb.ffs.ready=1 && property:sys.usb.config=none,adb && property:sys.usb.configfs=1
  63. write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "adb"
  64. rm /config/usb_gadget/g1/configs/b.1/f1
  65. rm /config/usb_gadget/g1/configs/b.1/f2
  66. rm /config/usb_gadget/g1/configs/b.1/f3
  67. rm /config/usb_gadget/g1/configs/b.1/f4
  68. rm /config/usb_gadget/g1/configs/b.1/f5
  69. write /config/usb_gadget/g1/idVendor 0x0B05
  70. write /config/usb_gadget/g1/idProduct 0x7773
  71. symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f1
  72. write /config/usb_gadget/g1/UDC ${sys.usb.controller}
  73. setprop sys.usb.state ${sys.usb.config}
  74. on property:sys.usb.config=mtp && property:sys.usb.configfs=1
  75. write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "mtp"
  76. rm /config/usb_gadget/g1/configs/b.1/f1
  77. rm /config/usb_gadget/g1/configs/b.1/f2
  78. rm /config/usb_gadget/g1/configs/b.1/f3
  79. rm /config/usb_gadget/g1/configs/b.1/f4
  80. rm /config/usb_gadget/g1/configs/b.1/f5
  81. rm /config/usb_gadget/g1/configs/b.1/f6
  82. rm /config/usb_gadget/g1/configs/b.1/f7
  83. rm /config/usb_gadget/g1/configs/b.1/f8
  84. rm /config/usb_gadget/g1/configs/b.1/f9
  85. write /config/usb_gadget/g1/idVendor 0x05C6
  86. write /config/usb_gadget/g1/idProduct 0xF000
  87. symlink /config/usb_gadget/g1/functions/mtp.gs0 /config/usb_gadget/g1/configs/b.1/f1
  88. write /config/usb_gadget/g1/UDC ${sys.usb.controller}
  89. setprop sys.usb.state ${sys.usb.config}
  90. on property:sys.usb.config=mtp,adb && property:sys.usb.configfs=1
  91. start adbd
  92. on property:sys.usb.ffs.ready=1 && property:sys.usb.config=mtp,adb && property:sys.usb.configfs=1
  93. write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "mtp_adb"
  94. rm /config/usb_gadget/g1/configs/b.1/f1
  95. rm /config/usb_gadget/g1/configs/b.1/f2
  96. rm /config/usb_gadget/g1/configs/b.1/f3
  97. rm /config/usb_gadget/g1/configs/b.1/f4
  98. rm /config/usb_gadget/g1/configs/b.1/f5
  99. rm /config/usb_gadget/g1/configs/b.1/f6
  100. rm /config/usb_gadget/g1/configs/b.1/f7
  101. rm /config/usb_gadget/g1/configs/b.1/f8
  102. rm /config/usb_gadget/g1/configs/b.1/f9
  103. write /config/usb_gadget/g1/idVendor 0x2A70
  104. write /config/usb_gadget/g1/idProduct 0x9012
  105. symlink /config/usb_gadget/g1/functions/mtp.gs0 /config/usb_gadget/g1/configs/b.1/f1
  106. symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f2
  107. write /config/usb_gadget/g1/UDC ${sys.usb.controller}
  108. setprop sys.usb.state ${sys.usb.config}
  109. on property:sys.usb.config=mass_storage && property:sys.usb.configfs=1
  110. write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "msc"
  111. rm /config/usb_gadget/g1/configs/b.1/f1
  112. rm /config/usb_gadget/g1/configs/b.1/f2
  113. rm /config/usb_gadget/g1/configs/b.1/f3
  114. rm /config/usb_gadget/g1/configs/b.1/f4
  115. rm /config/usb_gadget/g1/configs/b.1/f5
  116. rm /config/usb_gadget/g1/configs/b.1/f6
  117. rm /config/usb_gadget/g1/configs/b.1/f7
  118. rm /config/usb_gadget/g1/configs/b.1/f8
  119. rm /config/usb_gadget/g1/configs/b.1/f9
  120. write /config/usb_gadget/g1/idVendor 0x05C6
  121. write /config/usb_gadget/g1/idProduct 0xF000
  122. symlink /config/usb_gadget/g1/functions/mass_storage.0 /config/usb_gadget/g1/configs/b.1/f1
  123. write /config/usb_gadget/g1/UDC ${sys.usb.controller}
  124. setprop sys.usb.state ${sys.usb.config}
  125. on property:sys.usb.config=mass_storage,adb && property:sys.usb.configfs=1
  126. start adbd
  127. on property:sys.usb.ffs.ready=1 && property:sys.usb.config=mass_storage,adb && property:sys.usb.configfs=1
  128. write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "adb_msc"
  129. rm /config/usb_gadget/g1/configs/b.1/f1
  130. rm /config/usb_gadget/g1/configs/b.1/f2
  131. rm /config/usb_gadget/g1/configs/b.1/f3
  132. rm /config/usb_gadget/g1/configs/b.1/f4
  133. rm /config/usb_gadget/g1/configs/b.1/f5
  134. rm /config/usb_gadget/g1/configs/b.1/f6
  135. rm /config/usb_gadget/g1/configs/b.1/f7
  136. rm /config/usb_gadget/g1/configs/b.1/f8
  137. rm /config/usb_gadget/g1/configs/b.1/f9
  138. write /config/usb_gadget/g1/idVendor 0x05C6
  139. write /config/usb_gadget/g1/idProduct 0x9015
  140. symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f1
  141. symlink /config/usb_gadget/g1/functions/mass_storage.0 /config/usb_gadget/g1/configs/b.1/f2
  142. write /config/usb_gadget/g1/UDC ${sys.usb.controller}
  143. setprop sys.usb.state ${sys.usb.config}