# Copyright (c) 2011-2016, The Linux Foundation. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#     * Redistributions of source code must retain the above copyright
#       notice, this list of conditions and the following disclaimer.
#     * Redistributions in binary form must reproduce the above copyright
#       notice, this list of conditions and the following disclaimer in the
#       documentation and/or other materials provided with the distribution.
#     * Neither the name of The Linux Foundation nor
#       the names of its contributors may be used to endorse or promote
#       products derived from this software without specific prior written
#       permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#

on charger
    mkdir /dev/usb-ffs 0770 shell shell
    mkdir /dev/usb-ffs/adb 0770 shell shell
    mount configfs none /config
    mkdir /config/usb_gadget/g1 0770 shell shell
    mkdir /config/usb_gadget/g1/strings/0x409 0770 shell shell
    write /config/usb_gadget/g1/bcdUSB 0x0200
    write /config/usb_gadget/g1/os_desc/use 1
    write /config/usb_gadget/g1/strings/0x409/serialnumber ${ro.serialno}
    write /config/usb_gadget/g1/strings/0x409/manufacturer ${ro.product.manufacturer}
    write /config/usb_gadget/g1/strings/0x409/product ${ro.product.model}
    mkdir /config/usb_gadget/g1/functions/mass_storage.0
    mkdir /config/usb_gadget/g1/functions/ffs.adb
    mkdir /config/usb_gadget/g1/configs/b.1 0770 shell shell
    mkdir /config/usb_gadget/g1/configs/b.1/strings/0x409 0770 shell shell
    write /config/usb_gadget/g1/os_desc/b_vendor_code 0x1
    write /config/usb_gadget/g1/os_desc/qw_sign "MSFT100" 
    symlink /config/usb_gadget/g1/configs/b.1 /config/usb_gadget/g1/os_desc/b.1
    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "msc" 
    write /config/usb_gadget/g1/idVendor 0x05C6 
    write /config/usb_gadget/g1/idProduct 0xF000 
    symlink /config/usb_gadget/g1/functions/mass_storage.0 /config/usb_gadget/g1/configs/b.1/f1 
    setprop sys.usb.controller "a800000.dwc3" 
    write /config/usb_gadget/g1/UDC ${sys.usb.controller} 
    setprop sys.usb.state ${sys.usb.config}
    mount functionfs adb /dev/usb-ffs/adb uid=2000,gid=2000
    write /sys/class/android_usb/android0/f_ffs/aliases adb
    enable qcom-usb-sh
    start qcom-usb-sh
    setprop sys.usb.config mass_storage


on boot
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    mkdir /dev/usb-ffs 0770 shell shell
    mkdir /dev/usb-ffs/adb 0770 shell shell
    mount configfs none /config
    mkdir /config/usb_gadget/g1 0770 shell shell
    mkdir /config/usb_gadget/g1/strings/0x409 0770 shell shell
    write /config/usb_gadget/g1/bcdUSB 0x0200
    write /config/usb_gadget/g1/os_desc/use 1
    write /config/usb_gadget/g1/strings/0x409/serialnumber ${ro.serialno}
    write /config/usb_gadget/g1/strings/0x409/manufacturer ${ro.product.manufacturer}
    write /config/usb_gadget/g1/strings/0x409/product ${ro.product.model}
    mkdir /config/usb_gadget/g1/functions/mass_storage.0
    mkdir /config/usb_gadget/g1/functions/mtp.gs0
    mkdir /config/usb_gadget/g1/functions/ptp.gs1
    mkdir /config/usb_gadget/g1/functions/accessory.gs2
    mkdir /config/usb_gadget/g1/functions/audio_source.gs3
    mkdir /config/usb_gadget/g1/functions/midi.gs5
    mkdir /config/usb_gadget/g1/functions/ffs.adb
    mkdir /config/usb_gadget/g1/functions/diag.diag
    mkdir /config/usb_gadget/g1/functions/diag.diag_mdm
    mkdir /config/usb_gadget/g1/functions/cser.dun.0
    mkdir /config/usb_gadget/g1/functions/cser.nmea.1
    mkdir /config/usb_gadget/g1/functions/cser.dun.2
    mkdir /config/usb_gadget/g1/functions/gsi.rmnet
    mkdir /config/usb_gadget/g1/functions/gsi.rndis
    mkdir /config/usb_gadget/g1/functions/gsi.dpl
    mkdir /config/usb_gadget/g1/functions/qdss.qdss
    mkdir /config/usb_gadget/g1/functions/qdss.qdss_mdm
    mkdir /config/usb_gadget/g1/functions/rndis_bam.rndis
    mkdir /config/usb_gadget/g1/functions/rmnet_bam.rmnet
    mkdir /config/usb_gadget/g1/functions/rmnet_bam.dpl
    mkdir /config/usb_gadget/g1/functions/ncm.0
    mkdir /config/usb_gadget/g1/functions/ccid.ccid
    mkdir /config/usb_gadget/g1/configs/b.1 0770 shell shell
    mkdir /config/usb_gadget/g1/configs/b.1/strings/0x409 0770 shell shell
    write /config/usb_gadget/g1/os_desc/b_vendor_code 0x1
    write /config/usb_gadget/g1/os_desc/qw_sign "MSFT100"
    symlink /config/usb_gadget/g1/configs/b.1 /config/usb_gadget/g1/os_desc/b.1
    mount functionfs adb /dev/usb-ffs/adb uid=2000,gid=2000
    write /sys/class/android_usb/android0/f_ffs/aliases adb
    enable qcom-usb-sh

service qcom-usb-sh /vendor/bin/init.qcom.usb.sh
    class core
    user root
    oneshot
    disabled

# Following are the parameters required for usb functionality. They provide configurable options like
# product_id/vendor id and allows specifying required functions:
#
# Required parameters:
#
# /sys/class/android_usb/android0/enable: Enables/disables usb composition
# Value: 0 (disable), 1 (enable)
#
# /sys/class/android_usb/android0/idVendor: Stores Vendor ID
# Value: 05c6 (Vendor id for Qualcomm Inc)
#
# /sys/class/android_usb/android0/idProduct: Stores Product id corresponding to usb composition
# Value: 0x9xxx for composite interface, 0xFxxx for single interface
#
# /sys/class/android_usb/android0/f_diag/clients: Stores name of clients representing a diag interface.
# Value: Passed one per interface. e.g. diag[,diag_mdm, diag_qsc, diag_mdm2]
#
# /sys/class/android_usb/android0/functions: Stores name of the function drivers used in usb composition.
# Value: Passed one per function driver. e.g. diag[,adb]
#
#Optional parameters:
#
# /sys/class/android_usb/android0/f_serial/transports: Stores type of underlying transports used to
# communicate to serial interface.
# Value: Passed one per interface. One value represents control and data transport together.
# e.g. smd[,sdio,tty,hsic]
# Only required if serial interface is present.
#
# /sys/class/android_usb/android0/f_serial/transport_names: Stores name of the underlying transports
# used to communicate to serial interface. This is used to distinguish between more than one interface
# using same transport type.
# Value: Passed one per interface. One value represents control and data transport together.
# e.g. serial_hsic[,serial_hsusb]
# Only required for transport type hsic, optional for other transport types.
#
# /sys/class/android_usb/android0/f_rmnet/transports: Stores type of underlying transports used to
# communicate to rmnet interface.
# Value: Passed two per interface as control, data transport type pair.
# e.g. smd,bam[,hsuart,hsuart]
# Only required if rmnet interface is present.
#
# /sys/class/android_usb/android0/f_rmnet/transport_names: Stores name of the underlying transports
# used to communicate to rmnet interface. This is used to distinguish between more than one interface
# using same transport type.
# Value: Passed one per interface. One value represents control and data transport together.
# e.g. rmnet_hsic[,rmnet_hsusb]
# Only required for transport type hsic, optional for other transport types.

# USB compositions
on property:sys.usb.config=diag,serial_tty,serial_smd && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9002
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_serial/transports tty,smd
    write /sys/class/android_usb/android0/functions diag,serial
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,serial_tty,serial_smd,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9020
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_serial/transports smd,tty
    write /sys/class/android_usb/android0/functions diag,adb,serial
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 901D
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/functions diag,adb
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 900E
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/functions diag
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,serial_smd,rmnet_bam,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9091
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_serial/transports smd
    write /sys/class/android_usb/android0/f_rmnet/transports smd,bam
    write /sys/class/android_usb/android0/functions diag,serial,rmnet,adb
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,serial_smd,rmnet_qti_bam,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9091
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_serial/transports smd
    write /sys/class/android_usb/android0/f_rmnet/transports qti,bam
    write /sys/class/android_usb/android0/functions diag,serial,rmnet,adb
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,serial_smd,rmnet_bam && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9092
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_serial/transports smd
    write /sys/class/android_usb/android0/f_rmnet/transports smd,bam
    write /sys/class/android_usb/android0/functions diag,serial,rmnet
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,serial_smd,rmnet_qti_bam && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9092
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_serial/transports smd
    write /sys/class/android_usb/android0/f_rmnet/transports qti,bam
    write /sys/class/android_usb/android0/functions diag,serial,rmnet
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,serial_cdev,serial_tty,rmnet_ipa,mass_storage,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9025
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_serial/transports char_bridge,tty
    write /sys/class/android_usb/android0/f_rmnet/transports qti,bam2bam_ipa
    write /sys/class/android_usb/android0/functions diag,adb,serial,rmnet,mass_storage
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,serial_cdev,serial_tty,rmnet_ipa,mass_storage && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9026
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_serial/transports char_bridge,tty
    write /sys/class/android_usb/android0/f_rmnet/transports qti,bam2bam_ipa
    write /sys/class/android_usb/android0/functions diag,serial,rmnet,mass_storage
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,serial_smd,serial_tty,rmnet_bam,mass_storage,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9025
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_serial/transports smd,tty
    write /sys/class/android_usb/android0/f_rmnet/transports smd,bam
    write /sys/class/android_usb/android0/functions diag,adb,serial,rmnet,mass_storage
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,acm_smd,acm_tty,rmnet_bam,mass_storage,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 903D
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_acm/acm_transports smd,tty
    write /sys/class/android_usb/android0/f_rmnet/transports smd,bam
    write /sys/class/android_usb/android0/functions diag,adb,acm,rmnet,mass_storage
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,serial_smd,serial_tty,rmnet_bam,mass_storage && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9026
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_serial/transports smd,tty
    write /sys/class/android_usb/android0/f_rmnet/transports smd,bam
    write /sys/class/android_usb/android0/functions diag,serial,rmnet,mass_storage
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,acm_smd,acm_tty,rmnet_bam,mass_storage && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 903E
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_acm/acm_transports smd,tty
    write /sys/class/android_usb/android0/f_rmnet/transports smd,bam
    write /sys/class/android_usb/android0/functions diag,serial,rmnet,mass_storage
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,diag_mdm,serial_sdio,serial_smd,rmnet_smd_sdio,mass_storage,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9037
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm
    write /sys/class/android_usb/android0/f_serial/transports sdio,smd
    write /sys/class/android_usb/android0/functions diag,adb,serial,rmnet_smd_sdio,mass_storage
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,diag_mdm,acm_sdio,acm_smd,rmnet_smd_sdio,mass_storage,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 903B
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm
    write /sys/class/android_usb/android0/f_acm/acm_transports sdio,smd
    write /sys/class/android_usb/android0/functions diag,adb,acm,rmnet_smd_sdio,mass_storage
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,diag_mdm,serial_sdio,serial_smd,rmnet_smd_sdio,mass_storage && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9038
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm
    write /sys/class/android_usb/android0/f_serial/transports sdio,smd
    write /sys/class/android_usb/android0/functions diag,serial,rmnet_smd_sdio,mass_storage
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,diag_mdm,acm_sdio,acm_smd,rmnet_smd_sdio,mass_storage && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 903C
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm
    write /sys/class/android_usb/android0/f_acm/acm_transports sdio,smd
    write /sys/class/android_usb/android0/functions diag,acm,rmnet_smd_sdio,mass_storage
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,diag_mdm,serial_sdio,serial_tty,rmnet_sdio,mass_storage,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9031
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm
    write /sys/class/android_usb/android0/f_serial/transports sdio,tty
    write /sys/class/android_usb/android0/functions diag,adb,serial,rmnet_sdio,mass_storage
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,diag_mdm,acm_sdio,acm_tty,rmnet_sdio,mass_storage,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 903B
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm
    write /sys/class/android_usb/android0/f_acm/acm_transports sdio,tty
    write /sys/class/android_usb/android0/functions diag,adb,acm,rmnet_sdio,mass_storage
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,diag_mdm,serial_sdio,serial_tty,rmnet_sdio,mass_storage && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9032
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm
    write /sys/class/android_usb/android0/f_serial/transports sdio,tty
    write /sys/class/android_usb/android0/functions diag,serial,rmnet_sdio,mass_storage
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,diag_mdm,acm_sdio,acm_tty,rmnet_sdio,mass_storage && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 903C
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm
    write /sys/class/android_usb/android0/f_acm/acm_transports sdio,tty
    write /sys/class/android_usb/android0/functions diag,acm,rmnet_sdio,mass_storage
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,serial_tty,serial_tty,rmnet_smd,mass_storage,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9025
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_serial/transports tty,tty
    write /sys/class/android_usb/android0/functions diag,adb,serial,rmnet_smd,mass_storage
    write /sys/class/android_usb/android0/enable 1
    start adbd
    start port-bridge
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,acm_tty,acm_tty,rmnet_smd,mass_storage,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 903D
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_acm/acm_transports tty,tty
    write /sys/class/android_usb/android0/functions diag,adb,acm,rmnet_smd,mass_storage
    write /sys/class/android_usb/android0/enable 1
    start adbd
    start port-bridge
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,serial_tty,serial_tty,rmnet_smd,mass_storage && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9026
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_serial/transports tty,tty
    write /sys/class/android_usb/android0/functions diag,serial,rmnet_smd,mass_storage
    write /sys/class/android_usb/android0/enable 1
    start port-bridge
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,acm_tty,acm_tty,rmnet_smd,mass_storage && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 903E
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_acm/acm_transports tty,tty
    write /sys/class/android_usb/android0/functions diag,serial,rmnet_smd,mass_storage
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,serial_smd,serial_tty,rmnet_smd,mass_storage,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9025
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_serial/transports smd,tty
    write /sys/class/android_usb/android0/functions diag,adb,serial,rmnet_smd,mass_storage
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,acm_smd,acm_tty,rmnet_smd,mass_storage,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 903D
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_acm/acm_transports smd,tty
    write /sys/class/android_usb/android0/functions diag,adb,acm,rmnet_smd,mass_storage
    write /sys/class/android_usb/android0/enable 1
    start adbd
    start port-bridge
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,serial_smd,serial_tty,rmnet_smd,mass_storage && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9026
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_serial/transports smd,tty
    write /sys/class/android_usb/android0/functions diag,serial,rmnet_smd,mass_storage
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,acm_smd,acm_tty,rmnet_smd,mass_storage && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 903E
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_acm/acm_transports smd,tty
    write /sys/class/android_usb/android0/functions diag,serial,rmnet_smd,mass_storage
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

# RmNet using USB BAM to IPA BAM
on property:sys.usb.config=diag,serial_smd,serial_tty,rmnet_ipa,mass_storage,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9025
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_serial/transports smd,tty
    write /sys/class/android_usb/android0/f_rmnet/transports qti,bam2bam_ipa
    write /sys/class/android_usb/android0/functions diag,adb,serial,rmnet,mass_storage
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,serial_smd,serial_tty,rmnet_ipa,mass_storage && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9026
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_serial/transports smd,tty
    write /sys/class/android_usb/android0/f_rmnet/transports qti,bam2bam_ipa
    write /sys/class/android_usb/android0/functions diag,serial,rmnet,mass_storage
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,serial_smd,rmnet_ipa,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9091
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_serial/transports smd
    write /sys/class/android_usb/android0/f_rmnet/transports qti,bam2bam_ipa
    write /sys/class/android_usb/android0/functions diag,serial,rmnet,adb
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,serial_smd,rmnet_ipa && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9092
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_serial/transports smd
    write /sys/class/android_usb/android0/f_rmnet/transports qti,bam2bam_ipa
    write /sys/class/android_usb/android0/functions diag,serial,rmnet
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

# Fusion 3 composition
on property:sys.usb.config=diag,serial_hsic,serial_tty,rmnet_hsic,mass_storage,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9025
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_serial/transports hsic,tty
    write /sys/class/android_usb/android0/f_serial/transport_names serial_hsic
    write /sys/class/android_usb/android0/f_rmnet/transports hsic,hsic
    write /sys/class/android_usb/android0/f_rmnet/transport_names rmnet_hsic
    write /sys/class/android_usb/android0/functions diag,adb,serial,rmnet,mass_storage
    write /sys/module/mdm_bridge/parameters/rx_rmnet_buffer_size 16384
    write /sys/module/mdm_bridge/parameters/max_rx_urbs 20
    write /sys/module/g_android/parameters/ghsic_data_rx_req_size 16384
    write /sys/module/g_android/parameters/ghsic_data_rmnet_rx_q_size 20
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

# Fusion 3 composition with diag_mdm and adb
on property:sys.usb.config=diag,diag_mdm,serial_hsic,serial_tty,rmnet_hsic,mass_storage,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9031
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm
    write /sys/class/android_usb/android0/f_serial/transports hsic,tty
    write /sys/class/android_usb/android0/f_serial/transport_names serial_hsic
    write /sys/class/android_usb/android0/f_rmnet/transports hsic,hsic
    write /sys/class/android_usb/android0/f_rmnet/transport_names rmnet_hsic
    write /sys/class/android_usb/android0/functions diag,adb,serial,rmnet,mass_storage
    write /sys/module/mdm_bridge/parameters/rx_rmnet_buffer_size 16384
    write /sys/module/mdm_bridge/parameters/max_rx_urbs 20
    write /sys/module/g_android/parameters/ghsic_data_rx_req_size 16384
    write /sys/module/g_android/parameters/ghsic_data_rmnet_rx_q_size 20
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

# Fusion 3 composition with diag_mdm
on property:sys.usb.config=diag,diag_mdm,serial_hsic,serial_tty,rmnet_hsic,mass_storage && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9032
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm
    write /sys/class/android_usb/android0/f_serial/transports hsic,tty
    write /sys/class/android_usb/android0/f_serial/transport_names serial_hsic
    write /sys/class/android_usb/android0/f_rmnet/transports hsic,hsic
    write /sys/class/android_usb/android0/f_rmnet/transport_names rmnet_hsic
    write /sys/class/android_usb/android0/functions diag,serial,rmnet,mass_storage
    write /sys/module/mdm_bridge/parameters/rx_rmnet_buffer_size 16384
    write /sys/module/mdm_bridge/parameters/max_rx_urbs 20
    write /sys/module/g_android/parameters/ghsic_data_rx_req_size 16384
    write /sys/module/g_android/parameters/ghsic_data_rmnet_rx_q_size 20
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

# Fusion 3 DSDA composition with adb
on property:sys.usb.config=diag,diag_mdm,diag_qsc,serial_hsic,serial_hsuart,rmnet_hsic,rmnet_hsuart,mass_storage,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9065
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm,diag_qsc
    write /sys/class/android_usb/android0/f_serial/transports hsic,hsuart
    write /sys/class/android_usb/android0/f_serial/transport_names serial_hsic,serial_hsuart
    write /sys/class/android_usb/android0/f_rmnet/transports hsic,hsic,hsuart,hsuart
    write /sys/class/android_usb/android0/f_rmnet/transport_names rmnet_hsic,rmnet_hsuart
    write /sys/class/android_usb/android0/functions diag,adb,serial,rmnet,mass_storage
    write /sys/module/mdm_bridge/parameters/rx_rmnet_buffer_size 16384
    write /sys/module/mdm_bridge/parameters/max_rx_urbs 20
    write /sys/module/g_android/parameters/ghsic_data_rx_req_size 16384
    write /sys/module/g_android/parameters/ghsic_data_rmnet_rx_q_size 20
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

# Fusion 3 DSDA composition without adb
on property:sys.usb.config=diag,diag_mdm,diag_qsc,serial_hsic,serial_hsuart,rmnet_hsic,rmnet_hsuart,mass_storage && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9066
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm,diag_qsc
    write /sys/class/android_usb/android0/f_serial/transports hsic,hsuart
    write /sys/class/android_usb/android0/f_serial/transport_names serial_hsic,serial_hsuart
    write /sys/class/android_usb/android0/f_rmnet/transports hsic,hsic,hsuart,hsuart
    write /sys/class/android_usb/android0/f_rmnet/transport_names rmnet_hsic,rmnet_hsuart
    write /sys/class/android_usb/android0/functions diag,serial,rmnet,mass_storage
    write /sys/module/mdm_bridge/parameters/rx_rmnet_buffer_size 16384
    write /sys/module/mdm_bridge/parameters/max_rx_urbs 20
    write /sys/module/g_android/parameters/ghsic_data_rx_req_size 16384
    write /sys/module/g_android/parameters/ghsic_data_rmnet_rx_q_size 20
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

# Fusion 3 DSDA2 composition with adb
on property:sys.usb.config=diag,diag_mdm,diag_mdm2,serial_hsic,serial_hsusb,rmnet_hsic,rmnet_hsusb,mass_storage,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9065
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm,diag_mdm2
    write /sys/class/android_usb/android0/f_serial/transports hsic,hsic
    write /sys/class/android_usb/android0/f_serial/transport_names serial_hsic,serial_hsusb
    write /sys/class/android_usb/android0/f_rmnet/transports hsic,hsic,hsic,hsic
    write /sys/class/android_usb/android0/f_rmnet/transport_names rmnet_hsic,rmnet_hsusb
    write /sys/class/android_usb/android0/functions diag,adb,serial,rmnet,mass_storage
    write /sys/module/mdm_bridge/parameters/rx_rmnet_buffer_size 16384
    write /sys/module/mdm_bridge/parameters/max_rx_urbs 20
    write /sys/module/g_android/parameters/ghsic_data_rx_req_size 16384
    write /sys/module/g_android/parameters/ghsic_data_rmnet_rx_q_size 20
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

# Fusion 3 DSDA2 composition without adb
on property:sys.usb.config=diag,diag_mdm,diag_mdm2,serial_hsic,serial_hsusb,rmnet_hsic,rmnet_hsusb,mass_storage && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9066
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm,diag_mdm2
    write /sys/class/android_usb/android0/f_serial/transports hsic,hsic
    write /sys/class/android_usb/android0/f_serial/transport_names serial_hsic,serial_hsusb
    write /sys/class/android_usb/android0/f_rmnet/transports hsic,hsic,hsic,hsic
    write /sys/class/android_usb/android0/f_rmnet/transport_names rmnet_hsic,rmnet_hsusb
    write /sys/class/android_usb/android0/functions diag,serial,rmnet,mass_storage
    write /sys/module/mdm_bridge/parameters/rx_rmnet_buffer_size 16384
    write /sys/module/mdm_bridge/parameters/max_rx_urbs 20
    write /sys/module/g_android/parameters/ghsic_data_rx_req_size 16384
    write /sys/module/g_android/parameters/ghsic_data_rmnet_rx_q_size 20
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

# Fusion PCIe composition with diag_mdm and adb
# Serial & RmNet bridged in userspace with tty and qti/ether
on property:sys.usb.config=diag,diag_mdm,serial_tty,rmnet_qti_ether,mass_storage,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9035
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm
    write /sys/class/android_usb/android0/f_serial/transports tty
    write /sys/class/android_usb/android0/f_rmnet/transports qti,ether
    write /sys/class/android_usb/android0/functions diag,adb,serial,rmnet,mass_storage
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

# Fusion PCIe composition with diag_mdm
# Serial & RmNet bridged in userspace with tty and qti/ether
on property:sys.usb.config=diag,diag_mdm,serial_hsic,rmnet_hsic,mass_storage && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9036
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm
    write /sys/class/android_usb/android0/f_serial/transports tty
    write /sys/class/android_usb/android0/f_rmnet/transports qti,ether
    write /sys/class/android_usb/android0/functions diag,serial,rmnet,mass_storage
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

# Fusion HSIC/PCIe Hybrid composition with diag_mdm and adb
# RmNet is bridged over PCIe using qti,ether ctrl/data transports
on property:sys.usb.config=diag,diag_mdm,serial_hsic,rmnet_qti_ether,mass_storage,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9035
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm
    write /sys/class/android_usb/android0/f_serial/transports hsic
    write /sys/class/android_usb/android0/f_serial/transport_names serial_hsic
    write /sys/class/android_usb/android0/f_rmnet/transports qti,ether
    write /sys/class/android_usb/android0/functions diag,adb,serial,rmnet,mass_storage
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

# Fusion HSIC/PCIe Hybrid composition with diag_mdm
# RmNet is bridged over PCIe using qti,ether ctrl/data transports
on property:sys.usb.config=diag,diag_mdm,serial_hsic,rmnet_hsic,mass_storage && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9036
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm
    write /sys/class/android_usb/android0/f_serial/transports hsic
    write /sys/class/android_usb/android0/f_serial/transport_names serial_hsic
    write /sys/class/android_usb/android0/f_rmnet/transports qti,ether
    write /sys/class/android_usb/android0/functions diag,serial,rmnet,mass_storage
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

# Fusion PCIe composition with diag_mdm
# Serial & RmNet bridged in userspace with port bridge and qti/ether
on property:sys.usb.config=diag,diag_mdm,serial_cdev,rmnet_qti_ether,mass_storage && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9036
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm
    write /sys/class/android_usb/android0/f_serial/transports char_bridge
    write /sys/class/android_usb/android0/f_rmnet/transports qti,ether
    write /sys/class/android_usb/android0/functions diag,serial,rmnet,mass_storage
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,diag_mdm,serial_cdev,rmnet_qti_ether,mass_storage,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9035
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm
    write /sys/class/android_usb/android0/f_serial/transports char_bridge
    write /sys/class/android_usb/android0/f_rmnet/transports qti,ether
    write /sys/class/android_usb/android0/functions diag,adb,serial,rmnet,mass_storage
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

# Fusion 2.2 composition with diag_qsc and adb
on property:sys.usb.config=diag,diag_qsc,serial_smd,serial_tty,serial_hsuart,rmnet_hsuart,mass_storage,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9053
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_qsc
    write /sys/class/android_usb/android0/f_serial/transports smd,tty,hsuart
    write /sys/class/android_usb/android0/f_rmnet/transports smd,bam,hsuart,hsuart
    write /sys/class/android_usb/android0/functions diag,adb,serial,rmnet,mass_storage
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

# Fusion 2.2 composition with diag_qsc
on property:sys.usb.config=diag,diag_qsc,serial_smd,serial_tty,serial_hsuart,rmnet_hsuart,mass_storage && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9054
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_qsc
    write /sys/class/android_usb/android0/f_serial/transports smd,tty,hsuart
    write /sys/class/android_usb/android0/f_rmnet/transports smd,bam,hsuart,hsuart
    write /sys/class/android_usb/android0/functions diag,serial,rmnet,mass_storage
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.tethering=true
    write /sys/class/net/rndis0/queues/rx-0/rps_cpus ${sys.usb.rps_mask}

on property:sys.usb.config=rndis
    setprop sys.usb.config rndis,${persist.sys.usb.config.extra}

on property:sys.usb.config=rndis,none && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 2717
    write /sys/class/android_usb/android0/idProduct FF80
    write /sys/class/android_usb/android0/f_rndis/wceis 1
    write /sys/class/android_usb/android0/functions rndis
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state rndis

on property:sys.usb.config=rndis,adb && property:sys.usb.configfs=0
    setprop sys.usb.config rndis,${persist.sys.usb.config.extra},adb

on property:sys.usb.config=rndis,none,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 2717
    write /sys/class/android_usb/android0/idProduct FF88
    write /sys/class/android_usb/android0/f_rndis/wceis 1
    write /sys/class/android_usb/android0/functions rndis,adb
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state rndis,adb

on property:sys.usb.config=rndis,diag && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 902C
    write /sys/class/android_usb/android0/f_rndis/wceis 1
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/functions rndis,diag
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state rndis

on property:sys.usb.config=rndis,diag,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 902D
    write /sys/class/android_usb/android0/f_rndis/wceis 1
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/functions rndis,diag,adb
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state rndis,adb

# DPL is implemented using QDSS
on property:sys.usb.config=rndis,diag,dpl && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 90BF
    write /sys/class/android_usb/android0/f_rndis/wceis 1
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_qdss/debug_intf 0
    write /sys/class/android_usb/android0/f_qdss/transports qti,bam2bam_ipa
    write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam
    write /sys/class/android_usb/android0/functions rndis,diag,qdss
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state rndis

# DPL is implemented using QDSS
on property:sys.usb.config=rndis,diag,dpl,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 90C0
    write /sys/class/android_usb/android0/f_rndis/wceis 1
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_qdss/debug_intf 0
    write /sys/class/android_usb/android0/f_qdss/transports qti,bam2bam_ipa
    write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam
    write /sys/class/android_usb/android0/functions rndis,diag,qdss,adb
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state rndis,adb

on property:sys.usb.config=rndis,serial_smd && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 90B3
    write /sys/class/android_usb/android0/f_rndis/wceis 1
    write /sys/class/android_usb/android0/f_serial/transports smd
    write /sys/class/android_usb/android0/functions rndis,serial
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state rndis

on property:sys.usb.config=rndis,serial_smd,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 90B4
    write /sys/class/android_usb/android0/f_rndis/wceis 1
    write /sys/class/android_usb/android0/f_serial/transports smd
    write /sys/class/android_usb/android0/functions rndis,serial,adb
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state rndis,adb

on property:sys.usb.config=rndis,serial_smd,diag && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 90B5
    write /sys/class/android_usb/android0/f_rndis/wceis 1
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_serial/transports smd
    write /sys/class/android_usb/android0/functions rndis,serial,diag
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state rndis

on property:sys.usb.config=rndis,serial_smd,diag,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 90B6
    write /sys/class/android_usb/android0/f_rndis/wceis 1
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_serial/transports smd
    write /sys/class/android_usb/android0/functions rndis,serial,diag,adb
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state rndis,adb

on property:sys.usb.config=rndis,serial_cdev,diag && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 90B5
    write /sys/class/android_usb/android0/f_rndis/wceis 1
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_serial/transports char_bridge
    write /sys/class/android_usb/android0/functions rndis,serial,diag
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state rndis

on property:sys.usb.config=rndis,serial_cdev,diag,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 90B6
    write /sys/class/android_usb/android0/f_rndis/wceis 1
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_serial/transports char_bridge
    write /sys/class/android_usb/android0/functions rndis,serial,diag,adb
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state rndis,adb

on property:sys.usb.config=rndis,diag,diag_mdm && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9041
    write /sys/class/android_usb/android0/f_rndis/wceis 1
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm
    write /sys/class/android_usb/android0/functions rndis,diag
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state rndis

on property:sys.usb.config=rndis,diag,diag_mdm,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9042
    write /sys/class/android_usb/android0/f_rndis/wceis 1
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm
    write /sys/class/android_usb/android0/functions rndis,diag,adb
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state rndis,adb

on property:sys.usb.config=rndis,diag,diag_mdm,diag_qsc && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9086
    write /sys/class/android_usb/android0/f_rndis/wceis 1
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm,diag_qsc
    write /sys/class/android_usb/android0/functions rndis,diag
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state rndis

on property:sys.usb.config=rndis,diag,diag_mdm,diag_qsc,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9087
    write /sys/class/android_usb/android0/f_rndis/wceis 1
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm,diag_qsc
    write /sys/class/android_usb/android0/functions rndis,diag,adb
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state rndis,adb

on property:sys.usb.config=ptp && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 2717
    write /sys/class/android_usb/android0/idProduct FF10
    write /sys/class/android_usb/android0/functions ptp
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=ptp,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 2717
    write /sys/class/android_usb/android0/idProduct FF18
    write /sys/class/android_usb/android0/functions ptp,adb
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=mtp && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 2717
    write /sys/class/android_usb/android0/idProduct FF40
    write /sys/class/android_usb/android0/functions mtp
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=mtp,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 2717
    write /sys/class/android_usb/android0/idProduct FF48
    write /sys/class/android_usb/android0/functions mtp,adb
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=mtp,diag && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 901B
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/functions mtp,diag
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=mtp,diag,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 903A
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/functions mtp,diag,adb
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=mtp,diag,diag_mdm && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9040
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm
    write /sys/class/android_usb/android0/functions mtp,diag
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=mtp,diag,diag_mdm,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 903F
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm
    write /sys/class/android_usb/android0/functions mtp,diag,adb
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=mtp,diag,diag_mdm,diag_qsc && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9088
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm,diag_qsc
    write /sys/class/android_usb/android0/functions mtp,diag
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=mtp,diag,diag_mdm,diag_qsc,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9089
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm,diag_qsc
    write /sys/class/android_usb/android0/functions mtp,diag,adb
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,diag_mdm,ccid && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9045
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm
    write /sys/class/android_usb/android0/functions diag,ccid
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,diag_mdm,ccid,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9044
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm
    write /sys/class/android_usb/android0/functions diag,adb,ccid
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=mass_storage,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9015
    write /sys/class/android_usb/android0/functions adb,mass_storage
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

#Mass-storage only composition
on property:sys.usb.config=mass_storage && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct F000
    write /sys/class/android_usb/android0/functions mass_storage
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,qdss && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 904A
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_qdss/debug_intf 1
    write /sys/class/android_usb/android0/f_qdss/transports bam
    write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam
    write /sys/class/android_usb/android0/functions diag,qdss
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,qdss,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9060
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_qdss/debug_intf 1
    write /sys/class/android_usb/android0/f_qdss/transports bam
    write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam
    write /sys/class/android_usb/android0/functions diag,qdss,adb
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,diag_mdm,qdss && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9099
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm
    write /sys/class/android_usb/android0/f_qdss/debug_intf 1
    write /sys/class/android_usb/android0/f_qdss/transports bam
    write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam
    write /sys/class/android_usb/android0/functions diag,qdss
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,diag_mdm,qdss,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9098
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm
    write /sys/class/android_usb/android0/f_qdss/debug_intf 1
    write /sys/class/android_usb/android0/f_qdss/transports bam
    write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam
    write /sys/class/android_usb/android0/functions diag,qdss,adb
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,qdss,rmnet_bam && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9083
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_rmnet/transports smd,bam
    write /sys/class/android_usb/android0/f_qdss/debug_intf 1
    write /sys/class/android_usb/android0/f_qdss/transports bam
    write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam
    write /sys/class/android_usb/android0/functions diag,qdss,rmnet
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,qdss,rmnet_qti_bam && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9083
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_rmnet/transports qti,bam
    write /sys/class/android_usb/android0/f_qdss/debug_intf 1
    write /sys/class/android_usb/android0/f_qdss/transports bam
    write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam
    write /sys/class/android_usb/android0/functions diag,qdss,rmnet
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,qdss,rmnet_bam,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9084
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_rmnet/transports smd,bam
    write /sys/class/android_usb/android0/f_qdss/debug_intf 1
    write /sys/class/android_usb/android0/f_qdss/transports bam
    write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam
    write /sys/class/android_usb/android0/functions diag,qdss,adb,rmnet
    write /sys/module/dwc3/parameters/tx_fifo_resize_enable 1
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,qdss,rmnet_qti_bam,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9084
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_rmnet/transports qti,bam
    write /sys/class/android_usb/android0/f_qdss/debug_intf 1
    write /sys/class/android_usb/android0/f_qdss/transports bam
    write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam
    write /sys/class/android_usb/android0/functions diag,qdss,adb,rmnet
    write /sys/module/dwc3/parameters/tx_fifo_resize_enable 1
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,qdss,rmnet_ipa && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9083
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_rmnet/transports qti,bam2bam_ipa
    write /sys/class/android_usb/android0/f_qdss/debug_intf 1
    write /sys/class/android_usb/android0/f_qdss/transports bam
    write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam
    write /sys/class/android_usb/android0/functions diag,qdss,rmnet
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,qdss,rmnet_ipa,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9084
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_rmnet/transports qti,bam2bam_ipa
    write /sys/class/android_usb/android0/f_qdss/debug_intf 1
    write /sys/class/android_usb/android0/f_qdss/transports bam
    write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam
    write /sys/class/android_usb/android0/functions diag,qdss,adb,rmnet
    write /sys/module/dwc3/parameters/tx_fifo_resize_enable 1
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,diag_mdm,qdss,rmnet_hsic && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 909B
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm
    write /sys/class/android_usb/android0/f_rmnet/transports hsic,hsic
    write /sys/class/android_usb/android0/f_qdss/debug_intf 1
    write /sys/class/android_usb/android0/f_qdss/transports bam
    write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam
    write /sys/class/android_usb/android0/functions diag,qdss,rmnet
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,diag_mdm,qdss,rmnet_hsic,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 909A
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm
    write /sys/class/android_usb/android0/f_rmnet/transports hsic,hsic
    write /sys/class/android_usb/android0/f_qdss/debug_intf 1
    write /sys/class/android_usb/android0/f_qdss/transports bam
    write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam
    write /sys/class/android_usb/android0/functions diag,qdss,adb,rmnet
    write /sys/module/dwc3/parameters/tx_fifo_resize_enable 1
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,diag_mdm,qdss_apq,qdss_mdm,rmnet_hsic && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 90A3
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm
    write /sys/class/android_usb/android0/f_rmnet/transports hsic,hsic
    write /sys/class/android_usb/android0/f_qdss/debug_intf 0
    write /sys/class/android_usb/android0/f_qdss/transports bam,hsic
    write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam,qdss_hsic
    write /sys/class/android_usb/android0/functions diag,qdss,rmnet
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,diag_mdm,qdss_apq,qdss_mdm,rmnet && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 90A3
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm
    write /sys/class/android_usb/android0/f_rmnet/transports qti,ether
    write /sys/class/android_usb/android0/f_qdss/debug_intf 0
    write /sys/class/android_usb/android0/f_qdss/transports none,bam,none,pcie
    write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam,qdss_pcie
    write /sys/class/android_usb/android0/functions diag,qdss,rmnet
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,diag_mdm,qdss_apq,qdss_mdm,rmnet_hsic,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 90A2
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm
    write /sys/class/android_usb/android0/f_rmnet/transports hsic,hsic
    write /sys/class/android_usb/android0/f_qdss/debug_intf 0
    write /sys/class/android_usb/android0/f_qdss/transports bam,hsic
    write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam,qdss_hsic
    write /sys/class/android_usb/android0/functions diag,qdss,adb,rmnet
    write /sys/module/dwc3/parameters/tx_fifo_resize_enable 1
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,diag_mdm,qdss_apq,qdss_mdm,rmnet,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 90A2
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm
    write /sys/class/android_usb/android0/f_rmnet/transports qti,ether
    write /sys/class/android_usb/android0/f_qdss/debug_intf 0
    write /sys/class/android_usb/android0/f_qdss/transports none,bam,none,pcie
    write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam,qdss_pcie
    write /sys/class/android_usb/android0/functions diag,qdss,adb,rmnet
    write /sys/module/dwc3/parameters/tx_fifo_resize_enable 1
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=rndis,diag,qdss && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9081
    write /sys/class/android_usb/android0/f_rndis/wceis 1
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_qdss/debug_intf 1
    write /sys/class/android_usb/android0/f_qdss/transports bam
    write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam
    write /sys/class/android_usb/android0/functions rndis,diag,qdss
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=rndis,diag,qdss,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9082
    write /sys/class/android_usb/android0/f_rndis/wceis 1
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_qdss/debug_intf 1
    write /sys/class/android_usb/android0/f_qdss/transports bam
    write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam
    write /sys/class/android_usb/android0/functions rndis,diag,qdss,adb
    write /sys/module/dwc3/parameters/tx_fifo_resize_enable 1
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

# same as 9025, plus data packet logging (DPL) using QDSS
on property:sys.usb.config=diag,serial_smd,serial_tty,rmnet_ipa,mass_storage,dpl,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 90AD
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_serial/transports smd,tty
# DPL is implemented using QDSS
    write /sys/class/android_usb/android0/f_qdss/debug_intf 0
    write /sys/class/android_usb/android0/f_qdss/transports qti,bam2bam_ipa
    write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam
    write /sys/class/android_usb/android0/f_rmnet/transports qti,bam2bam_ipa
    write /sys/class/android_usb/android0/functions diag,adb,serial,rmnet,mass_storage,qdss
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

# same as 9026, plus data packet logging (DPL)
on property:sys.usb.config=diag,serial_smd,serial_tty,rmnet_ipa,mass_storage,dpl && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 90B0
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_serial/transports smd,tty
# DPL is implemented using QDSS
    write /sys/class/android_usb/android0/f_qdss/debug_intf 0
    write /sys/class/android_usb/android0/f_qdss/transports qti,bam2bam_ipa
    write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam
    write /sys/class/android_usb/android0/f_rmnet/transports qti,bam2bam_ipa
    write /sys/class/android_usb/android0/functions diag,serial,rmnet,mass_storage,qdss
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,serial_cdev,serial_tty,rmnet_ipa,mass_storage,dpl,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 90AD
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_serial/transports char_bridge,tty
# DPL is implemented using QDSS
    write /sys/class/android_usb/android0/f_qdss/debug_intf 0
    write /sys/class/android_usb/android0/f_qdss/transports qti,bam2bam_ipa
    write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam
    write /sys/class/android_usb/android0/f_rmnet/transports qti,bam2bam_ipa
    write /sys/class/android_usb/android0/functions diag,adb,serial,rmnet,mass_storage,qdss
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,serial_cdev,serial_tty,rmnet_ipa,mass_storage,dpl && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 90B0
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_serial/transports char_bridge,tty
# DPL is implemented using QDSS
    write /sys/class/android_usb/android0/f_qdss/debug_intf 0
    write /sys/class/android_usb/android0/f_qdss/transports qti,bam2bam_ipa
    write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam
    write /sys/class/android_usb/android0/f_rmnet/transports qti,bam2bam_ipa
    write /sys/class/android_usb/android0/functions diag,serial,rmnet,mass_storage,qdss
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=ncm && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 0525
    write /sys/class/android_usb/android0/idProduct A4A1
    write /sys/class/android_usb/android0/functions ncm
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=ncm,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 908C
    write /sys/class/android_usb/android0/functions ncm,adb
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=charging && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 2717
    write /sys/class/android_usb/android0/idProduct FF00
    write /sys/class/android_usb/android0/functions charging
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,serial_smd,rmnet_qti_bam,dpl_qti_bam_dmux && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 90B7
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_serial/transports smd
    write /sys/class/android_usb/android0/f_rmnet/transports qti,bam
    write /sys/class/android_usb/android0/f_qdss/transports qti,bam_dmux
    write /sys/class/android_usb/android0/functions diag,serial,rmnet,qdss
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,serial_smd,rmnet_qti_bam,dpl_qti_bam_dmux,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 90B8
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_serial/transports smd
    write /sys/class/android_usb/android0/f_rmnet/transports qti,bam
    write /sys/class/android_usb/android0/f_qdss/transports qti,bam_dmux
    write /sys/class/android_usb/android0/functions diag,serial,rmnet,qdss,adb
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,diag_cnss,serial_smd,serial_tty,rmnet_bam,mass_storage,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 90B2
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_cnss
    write /sys/class/android_usb/android0/f_serial/transports smd,tty
    write /sys/class/android_usb/android0/f_rmnet/transports smd,bam
    write /sys/class/android_usb/android0/functions diag,diag_cnss,adb,serial,rmnet,mass_storage
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,diag_cnss,serial_smd,serial_tty,rmnet_bam,mass_storage && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 90B3
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_cnss
    write /sys/class/android_usb/android0/f_serial/transports smd,tty
    write /sys/class/android_usb/android0/f_rmnet/transports smd,bam
    write /sys/class/android_usb/android0/functions diag,diag_cnss,serial,rmnet,mass_storage
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=midi && property:sys.usb.configfs=0
     write /sys/class/android_usb/android0/enable 0
     write /sys/class/android_usb/android0/iSerial ${ro.serialno}
     write /sys/class/android_usb/android0/idVendor 05C6
     write /sys/class/android_usb/android0/idProduct 90BA
     write /sys/class/android_usb/android0/functions midi
     write /sys/class/android_usb/android0/enable 1
     setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=midi,adb && property:sys.usb.configfs=0
     write /sys/class/android_usb/android0/enable 0
     write /sys/class/android_usb/android0/iSerial ${ro.serialno}
     write /sys/class/android_usb/android0/idVendor 05C6
     write /sys/class/android_usb/android0/idProduct 90BB
     write /sys/class/android_usb/android0/functions midi,adb
     write /sys/class/android_usb/android0/enable 1
     start adbd
     setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,serial_smd,rmnet_ipa,dpl && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 90B7
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_serial/transports smd
# DPL is implemented using QDSS
    write /sys/class/android_usb/android0/f_qdss/debug_intf 0
    write /sys/class/android_usb/android0/f_qdss/transports qti,bam2bam_ipa
    write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam
    write /sys/class/android_usb/android0/f_rmnet/transports qti,bam2bam_ipa
    write /sys/class/android_usb/android0/functions diag,serial,rmnet,qdss
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,serial_smd,rmnet_ipa,dpl,adb && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 90B8
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_serial/transports smd
# DPL is implemented using QDSS
    write /sys/class/android_usb/android0/f_qdss/debug_intf 0
    write /sys/class/android_usb/android0/f_qdss/transports qti,bam2bam_ipa
    write /sys/class/android_usb/android0/f_qdss/transport_names qdss_bam
    write /sys/class/android_usb/android0/f_rmnet/transports qti,bam2bam_ipa
    write /sys/class/android_usb/android0/functions diag,serial,rmnet,qdss,adb
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,diag_mdm,serial_tty,rmnet_qti_ether,dpl_ether,mass_storage,adb
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 90AE
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm
    write /sys/class/android_usb/android0/f_serial/transports tty
    write /sys/class/android_usb/android0/f_rmnet/transports qti,ether
    write /sys/class/android_usb/android0/f_qdss/debug_intf 0
    write /sys/class/android_usb/android0/f_qdss/transports qti,ether
    write /sys/class/android_usb/android0/f_qdss/transport_names qdss_dpl
    write /sys/class/android_usb/android0/functions diag,adb,serial,rmnet,qdss,mass_storage
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,diag_mdm,serial_tty,rmnet_qti_ether,dpl_ether,mass_storage
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 90AF
    write /sys/class/android_usb/android0/f_diag/clients diag,diag_mdm
    write /sys/class/android_usb/android0/f_serial/transports tty
    write /sys/class/android_usb/android0/f_rmnet/transports qti,ether
    write /sys/class/android_usb/android0/f_qdss/debug_intf 0
    write /sys/class/android_usb/android0/f_qdss/transports qti,ether
    write /sys/class/android_usb/android0/f_qdss/transport_names qdss_dpl
    write /sys/class/android_usb/android0/functions diag,serial,rmnet,qdss,mass_storage
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,adb,uac2
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 90CA
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/functions diag,adb,uac2_func
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,adb,video && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 90CB
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/functions diag,adb,video
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

on property:sys.usb.config=diag,adb,uac2,video && property:sys.usb.configfs=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 90CC
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/functions diag,adb,uac2_func,video
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

