init.recovery.usb.rc 4.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. # Copyright (c) 2017-2018, 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 met:
  5. # * Redistributions of source code must retain the above copyright
  6. # notice, this list of conditions and the following disclaimer.
  7. # * Redistributions in binary form must reproduce the above copyright
  8. # notice, this list of conditions and the following disclaimer in the
  9. # documentation and/or other materials provided with the distribution.
  10. # * Neither the name of The Linux Foundation nor
  11. # the names of its contributors may be used to endorse or promote
  12. # products derived from this software without specific prior written
  13. # permission.
  14. #
  15. # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  16. # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  17. # IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  18. # NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  19. # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  20. # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  21. # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
  22. # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
  23. # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
  24. # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
  25. # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  26. #
  27. on property:ro.boot.usbcontroller=*
  28. setprop sys.usb.controller ${ro.boot.usbcontroller}
  29. on fs
  30. mount configfs none /config
  31. mkdir /config/usb_gadget/g1 0770 shell shell
  32. write /config/usb_gadget/g1/idVendor 0x18D1
  33. mkdir /config/usb_gadget/g1/strings/0x409 0770
  34. write /config/usb_gadget/g1/strings/0x409/serialnumber ${ro.serialno}
  35. write /config/usb_gadget/g1/strings/0x409/manufacturer ${ro.product.manufacturer}
  36. write /config/usb_gadget/g1/strings/0x409/product ${ro.product.model}
  37. mkdir /config/usb_gadget/g1/functions/ffs.adb
  38. mkdir /config/usb_gadget/g1/functions/ffs.fastboot
  39. mkdir /config/usb_gadget/g1/functions/ffs.mtp
  40. mkdir /config/usb_gadget/g1/configs/b.1 0777 shell shell
  41. mkdir /config/usb_gadget/g1/configs/b.1/strings/0x409 0770 shell shell
  42. mkdir /dev/usb-ffs 0775 shell shell
  43. mkdir /dev/usb-ffs/adb 0770 shell shell
  44. mkdir /dev/usb-ffs/mtp 0770 mtp mtp
  45. mount functionfs adb /dev/usb-ffs/adb uid=2000,gid=2000
  46. mkdir /dev/usb-ffs/fastboot 0770 system system
  47. mount functionfs fastboot /dev/usb-ffs/fastboot rmode=0770,fmode=0660,uid=1000,gid=1000
  48. mount functionfs mtp /dev/usb-ffs/mtp uid=2000,gid=2000
  49. on property:sys.usb.config=adb
  50. start adbd
  51. on property:sys.usb.config=mtp,adb
  52. start adbd
  53. on property:sys.usb.config=fastboot
  54. start fastbootd
  55. on property:sys.usb.config=none
  56. write /config/usb_gadget/g1/UDC "none"
  57. stop adbd
  58. stop fastbootd
  59. setprop sys.usb.ffs.ready 0
  60. rm /config/usb_gadget/g1/configs/b.1/f1
  61. rm /config/usb_gadget/g1/configs/b.1/ffs.mtp
  62. setprop sys.usb.state ${sys.usb.config}
  63. on property:sys.usb.config=sideload && property:sys.usb.ffs.ready=1
  64. write /config/usb_gadget/g1/idProduct 0xD001
  65. write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "adb"
  66. symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f1
  67. write /config/usb_gadget/g1/UDC ${sys.usb.controller}
  68. setprop sys.usb.state ${sys.usb.config}
  69. on property:sys.usb.config=adb && property:sys.usb.ffs.ready=1
  70. write /config/usb_gadget/g1/idProduct 0xD001
  71. write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "adb"
  72. symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f1
  73. write /config/usb_gadget/g1/UDC ${sys.usb.controller}
  74. setprop sys.usb.state ${sys.usb.config}
  75. on property:sys.usb.config=mtp,adb && property:sys.usb.ffs.ready=1
  76. write /config/usb_gadget/g1/idProduct 0x6860
  77. write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "mtp,adb"
  78. symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f1
  79. symlink /config/usb_gadget/g1/functions/ffs.mtp /config/usb_gadget/g1/configs/b.1/ffs.mtp
  80. write /config/usb_gadget/g1/UDC ${sys.usb.controller}
  81. setprop sys.usb.state ${sys.usb.config}
  82. on property:sys.usb.config=fastboot && property:sys.usb.ffs.ready=1
  83. write /config/usb_gadget/g1/idProduct 0xD001
  84. write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "fastboot"
  85. symlink /config/usb_gadget/g1/functions/ffs.fastboot /config/usb_gadget/g1/configs/b.1/f1
  86. write /config/usb_gadget/g1/UDC ${sys.usb.controller}
  87. setprop sys.usb.state ${sys.usb.config}