This commit is contained in:
Vincent Vidal 2025-08-07 16:07:57 +02:00
commit 8710a52d67
123 changed files with 20007 additions and 0 deletions

96
init/Android.bp Normal file
View file

@ -0,0 +1,96 @@
//
// SPDX-FileCopyrightText: 2024 The LineageOS Project
// SPDX-License-Identifier: Apache-2.0
//
prebuilt_etc {
name: "fstab.mt6835",
src: "fstab.mt6835",
vendor: true,
vendor_ramdisk_available: true,
}
prebuilt_etc {
name: "init.cgroup.rc",
src: "init.cgroup.rc",
sub_dir: "init/hw",
vendor: true,
}
prebuilt_etc {
name: "init.mt6835.power.rc",
src: "init.mt6835.power.rc",
sub_dir: "init/hw",
vendor: true,
}
prebuilt_etc {
name: "init.connectivity.common.rc",
src: "init.connectivity.common.rc",
sub_dir: "init/hw",
vendor: true,
}
prebuilt_etc {
name: "init.connectivity.rc",
src: "init.connectivity.rc",
sub_dir: "init/hw",
vendor: true,
}
prebuilt_etc {
name: "init_connectivity.rc",
src: "init_connectivity.rc",
sub_dir: "init/hw",
vendor: true,
}
prebuilt_etc {
name: "init.modem.rc",
src: "init.modem.rc",
sub_dir: "init/hw",
vendor: true,
}
prebuilt_etc {
name: "init.mt6835.rc",
src: "init.mt6835.rc",
sub_dir: "init/hw",
vendor: true,
vendor_ramdisk_available: true,
}
prebuilt_etc {
name: "init.mt6835.usb.rc",
src: "init.mt6835.usb.rc",
sub_dir: "init/hw",
vendor: true,
}
prebuilt_etc {
name: "init.mtkgki.rc",
src: "init.mtkgki.rc",
sub_dir: "init/hw",
vendor: true,
}
prebuilt_etc {
name: "init.project.rc",
src: "init.project.rc",
sub_dir: "init/hw",
vendor: true,
}
prebuilt_etc {
name: "init.sensor_2_0.rc",
src: "init.sensor_2_0.rc",
sub_dir: "init/hw",
vendor: true,
}
prebuilt_etc {
name: "ueventd.mt6835.rc",
filename: "ueventd.rc",
src: "ueventd.rc",
vendor: true,
}

101
init/fstab.mt6835 Normal file
View file

@ -0,0 +1,101 @@
/dev/block/by-name/vbmeta /vbmeta emmc defaults slotselect,first_stage_mount
/dev/block/by-name/vbmeta_system /vbmeta_system emmc defaults first_stage_mount,nofail,slotselect,avb=vbmeta
/dev/block/by-name/vbmeta_vendor /vbmeta_vendor emmc defaults first_stage_mount,nofail,slotselect
system /system erofs ro wait,slotselect,logical,first_stage_mount,avb_keys=/avb/q-gsi.avbpubkey:/avb/r-gsi.avbpubkey:/avb/s-gsi.avbpubkey
system_dlkm /system_dlkm erofs ro wait,slotselect,logical,first_stage_mount
system_ext /system_ext erofs ro wait,slotselect,logical,first_stage_mount
product /product erofs ro wait,slotselect,logical,first_stage_mount
vendor /vendor erofs ro wait,slotselect,logical,first_stage_mount
vendor_dlkm /vendor_dlkm erofs ro wait,slotselect,logical,first_stage_mount
odm_dlkm /odm_dlkm erofs ro wait,slotselect,logical,first_stage_mount
/dev/block/by-name/boot /boot emmc defaults slotselect,first_stage_mount
/dev/block/by-name/init_boot /init_boot emmc defaults slotselect,first_stage_mount
/dev/block/by-name/vendor_boot /vendor_boot emmc defaults slotselect,first_stage_mount
/dev/block/by-name/dtbo /dtbo emmc defaults slotselect,first_stage_mount
/dev/block/by-name/metadata /metadata f2fs noatime,nosuid,nodev,discard wait,check,formattable,first_stage_mount
/dev/block/by-name/userdata /data f2fs noatime,nosuid,nodev,discard,noflush_merge,fsync_mode=nobarrier,reserve_root=134217,resgid=1065,inlinecrypt wait,check,formattable,quota,latemount,reservedsize=128m,checkpoint=fs,fileencryption=aes-256-xts:aes-256-cts:v2+inlinecrypt_optimized,keydirectory=/metadata/vold/metadata_encryption
/dev/block/by-name/protect1 /mnt/vendor/protect_f ext4 noatime,nosuid,nodev,noauto_da_alloc,commit=1,nodelalloc wait,check,formattable
/dev/block/by-name/protect2 /mnt/vendor/protect_s ext4 noatime,nosuid,nodev,noauto_da_alloc,commit=1,nodelalloc wait,check,formattable
/dev/block/by-name/nvdata /mnt/vendor/nvdata ext4 noatime,nosuid,nodev,noauto_da_alloc,commit=1,nodelalloc wait,check,formattable
/dev/block/by-name/nvcfg /mnt/vendor/nvcfg ext4 noatime,nosuid,nodev,noauto_da_alloc,commit=1,nodelalloc wait,check,formattable
/dev/block/by-name/persist /mnt/vendor/persist ext4 noatime,nosuid,nodev,noauto_da_alloc,commit=1,nodelalloc wait,check,formattable
/devices/platform/soc/11240000.mmc* auto auto defaults voldmanaged=sdcard1:auto,encryptable=userdata
/devices/platform/usb_xhci* auto vfat defaults voldmanaged=usbotg:auto
/devices/platform/soc/11201000.usb0/11200000.xhci* auto vfat defaults voldmanaged=usbotg:auto
/dev/block/by-name/frp /persistent emmc defaults defaults
/dev/block/by-name/nvram /nvram emmc defaults defaults
/dev/block/by-name/proinfo /proinfo emmc defaults defaults
/dev/block/by-name/lk1 /lk1 emmc defaults defaults
/dev/block/by-name/bootloader2 /bootloader2 emmc defaults defaults
/dev/block/by-name/para /para emmc defaults defaults
/dev/block/by-name/misc /misc emmc defaults defaults
/dev/block/by-name/logo /logo emmc defaults defaults
/dev/block/by-name/expdb /expdb emmc defaults defaults
/dev/block/by-name/seccfg /seccfg emmc defaults defaults
/dev/block/by-name/tee1 /tee1 emmc defaults defaults
/dev/block/by-name/tee2 /tee2 emmc defaults defaults
/dev/block/by-name/scp1 /scp1 emmc defaults defaults
/dev/block/by-name/scp2 /scp2 emmc defaults defaults
/dev/block/by-name/sspm1 /sspm1 emmc defaults defaults
/dev/block/by-name/sspm2 /sspm2 emmc defaults defaults
/dev/block/by-name/dpm1 /dpm1 emmc defaults defaults
/dev/block/by-name/dpm2 /dpm2 emmc defaults defaults
/dev/block/by-name/mcupm1 /mcupm1 emmc defaults defaults
/dev/block/by-name/mcupm2 /mcupm2 emmc defaults defaults
/dev/block/by-name/md1img /md1img emmc defaults defaults
/dev/block/by-name/md1dsp /md1dsp emmc defaults defaults
/dev/block/by-name/md1arm7 /md1arm7 emmc defaults defaults
/dev/block/by-name/md3img /md3img emmc defaults defaults
/dev/block/by-name/gz1 /gz1 emmc defaults defaults
/dev/block/by-name/gz2 /gz2 emmc defaults defaults
/dev/block/by-name/ccu /ccu emmc defaults defaults
/dev/block/by-name/vcp /vcp emmc defaults defaults
/dev/block/by-name/gpueb /gpueb emmc defaults defaults
/dev/block/by-name/mcf_ota /mcf_ota emmc defaults defaults
/dev/block/by-name/mvpu_algo1 /mvpu_algo1 emmc defaults defaults
/dev/block/by-name/mvpu_algo2 /mvpu_algo2 emmc defaults defaults
/dev/block/by-name/apusys1 /apusys1 emmc defaults defaults
/dev/block/by-name/apusys2 /apusys2 emmc defaults defaults
/dev/block/by-name/spmfw /spmfw emmc defaults defaults
/dev/block/by-name/pi_img /pi_img emmc defaults defaults
/dev/block/by-name/boot_para /boot_para emmc defaults defaults
/dev/block/by-name/odmdtbo /odmdtbo emmc defaults defaults
/dev/block/by-name/connsys_wifi /connsys_wifi emmc defaults defaults
/dev/block/by-name/connsys_bt /connsys_bt emmc defaults defaults
/dev/block/by-name/otp /otp emmc defaults defaults

48
init/init.cgroup.rc Normal file
View file

@ -0,0 +1,48 @@
on early-init
# boot perf. tune
write /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq 2000000
write /sys/devices/system/cpu/cpufreq/policy6/scaling_min_freq 2200000
write /sys/class/devfreq/mtk-dvfsrc-devfreq/userspace/set_freq 5500000000
on charger
write /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq 0
write /sys/devices/system/cpu/cpufreq/policy6/scaling_min_freq 0
write /sys/class/devfreq/mtk-dvfsrc-devfreq/userspace/set_freq 0
on post-fs-data
write /sys/devices/system/cpu/cpufreq/policy0/scaling_governor sugov_ext
write /sys/devices/system/cpu/cpufreq/policy6/scaling_governor sugov_ext
write /proc/sys/kernel/sched_pelt_multiplier 4
write /proc/sys/kernel/sched_util_clamp_min_rt_default 0
on boot
# boot perf. tune
write /dev/cpuctl/system/cpu.uclamp.min 100
write /dev/cpuctl/system/cpu.uclamp.latency_sensitive 1
write /dev/cpuctl/system-background/cpu.uclamp.min 100
write /dev/cpuctl/system-background/cpu.uclamp.latency_sensitive 1
write /dev/cpuctl/foreground/cpu.uclamp.min 100
write /dev/cpuctl/foreground/cpu.uclamp.latency_sensitive 1
write /dev/cpuctl/top-app/cpu.uclamp.min 100
write /dev/cpuctl/top-app/cpu.uclamp.latency_sensitive 1
write /dev/cpuctl/background/cpu.uclamp.min 100
write /dev/cpuctl/background/cpu.uclamp.latency_sensitive 1
on property:sys.boot_completed=1
write /proc/sys/kernel/sched_migration_cost_ns 200000
# restore boot perf. tune
write /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq 0
write /sys/devices/system/cpu/cpufreq/policy6/scaling_min_freq 0
write /sys/class/devfreq/mtk-dvfsrc-devfreq/userspace/set_freq 0
write /dev/cpuctl/system/cpu.uclamp.min 0
write /dev/cpuctl/system/cpu.uclamp.latency_sensitive 0
write /dev/cpuctl/system-background/cpu.uclamp.min 0
write /dev/cpuctl/system-background/cpu.uclamp.latency_sensitive 0
write /dev/cpuctl/foreground/cpu.uclamp.min 0
write /dev/cpuctl/foreground/cpu.uclamp.latency_sensitive 0
write /dev/cpuctl/top-app/cpu.uclamp.min 0
write /dev/cpuctl/top-app/cpu.uclamp.latency_sensitive 0
write /dev/cpuctl/background/cpu.uclamp.min 0
write /dev/cpuctl/background/cpu.uclamp.latency_sensitive 0

View file

@ -0,0 +1,83 @@
# MTK connectivity .rc configure
on post-fs-data
#
# Connectivity related device nodes & configuration (begin)
#
#/dev/ttyMT2 for Connectivity BT/FM/GPS usage
chmod 0660 /dev/ttyMT2
chown system system /dev/ttyMT2
#/dev/ttyMT1 for GPS 3337 usage
chmod 0660 /dev/ttyMT1
chown system system /dev/ttyMT1
# GPS
mkdir /data/vendor/gps 0770 gps system
mkdir /data/vendor/log 0770 gps system
mkdir /data/vendor/log/gps 0770 gps system
# GPS EMI
chmod 0660 /dev/gps_emi
# WiFi
mkdir /data/vendor/wifi 0770 wifi wifi
mkdir /data/vendor/wifi/wpa 0770 wifi wifi
mkdir /data/vendor/wifi/wpa/sockets 0770 wifi wifi
# BT relayer mode used VCOM
chown bluetooth bluetooth /dev/ttyGS2
chmod 0660 /dev/ttyGS2
#
# Connectivity related device nodes & configuration (end)
#
on boot
#
# Connectivity related services (Begin)
#
# GPS
service mnld /vendor/bin/mnld
class main
user gps
capabilities WAKE_ALARM
group gps inet misc sdcard_rw sdcard_r media_rw system radio wakelock
socket mnld stream 660 gps system
# GPS Debug Process
service lbs_dbg /system/bin/lbs_dbg
class main
user shell
group log system gps inet misc sdcard_rw sdcard_r media_rw radio
socket lbs_dbg stream 660 gps system
on property:persist.vendor.em.dy.debug=1
stop lbs_dbg
#service BGW /vendor/bin/BGW
# user system
# group gps system radio
# class main
# Wlan
#service wpa_supplicant /vendor/bin/hw/wpa_supplicant \
# -g@android:wpa_wlan0
# interface android.hardware.wifi.supplicant@1.0::ISupplicant default
# interface android.hardware.wifi.supplicant@1.1::ISupplicant default
# interface android.hardware.wifi.supplicant@1.2::ISupplicant default
# interface android.hardware.wifi.supplicant@1.3::ISupplicant default
# socket wpa_wlan0 dgram 660 wifi wifi
# class main
# disabled
# oneshot
#
# Connectivity related services (End)
#

View file

@ -0,0 +1,4 @@
# MTK connectivity .rc configure
import /vendor/etc/init/hw/init_connectivity.rc
import /vendor/etc/init/hw/init.connectivity.common.rc

42
init/init.modem.rc Normal file
View file

@ -0,0 +1,42 @@
# Copyright (C) 2012 The Android Open Source Project
#
# IMPORTANT: Do not create world writable files or directories.
# This is a common source of Android security bugs.
#
on early-init
write /sys/class/net/ccmni0/queues/rx-0/rps_cpus "0D"
write /sys/class/net/ccmni1/queues/rx-0/rps_cpus "0D"
write /sys/class/net/ccmni2/queues/rx-0/rps_cpus "0D"
write /sys/class/net/ccmni3/queues/rx-0/rps_cpus "0D"
write /sys/class/net/ccmni4/queues/rx-0/rps_cpus "0D"
write /sys/class/net/ccmni5/queues/rx-0/rps_cpus "0D"
write /sys/class/net/ccmni6/queues/rx-0/rps_cpus "0D"
write /sys/class/net/ccmni7/queues/rx-0/rps_cpus "0D"
write /sys/class/net/ccmni9/queues/rx-0/rps_cpus "0D"
write /sys/class/net/ccmni10/queues/rx-0/rps_cpus "0D"
write /sys/class/net/ccmni11/queues/rx-0/rps_cpus "0D"
write /sys/class/net/ccmni12/queues/rx-0/rps_cpus "0D"
write /sys/class/net/ccmni13/queues/rx-0/rps_cpus "0D"
write /sys/class/net/ccmni14/queues/rx-0/rps_cpus "0D"
write /sys/class/net/ccmni15/queues/rx-0/rps_cpus "0D"
write /sys/class/net/ccmni16/queues/rx-0/rps_cpus "0D"
write /sys/class/net/ccmni17/queues/rx-0/rps_cpus "0D"
write /sys/class/net/ccmni18/queues/rx-0/rps_cpus "0D"
write /sys/class/net/ccmni19/queues/rx-0/rps_cpus "0D"
write /sys/class/net/ccmni20/queues/rx-0/rps_cpus "0D"
write /proc/sys/net/core/netdev_max_backlog 50000
write /proc/sys/net/ipv4/ipfrag_high_thresh 20971520
#setprop ro.vendor.net.upload.mark.default blocking #prize - del by liunao for antutu use network
on post-fs-data
write /proc/bootprof "post-fs-data: on modem start"
# Encrypt phone function
setprop vold.post_fs_data_done 1

60
init/init.mt6835.power.rc Normal file
View file

@ -0,0 +1,60 @@
on early-init
# boot perf. tune
write /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq 2000000
write /sys/devices/system/cpu/cpufreq/policy6/scaling_min_freq 2200000
write /sys/class/devfreq/mtk-dvfsrc-devfreq/userspace/set_freq 5500000000
on charger
write /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq 0
write /sys/devices/system/cpu/cpufreq/policy6/scaling_min_freq 0
write /sys/class/devfreq/mtk-dvfsrc-devfreq/userspace/set_freq 0
on post-fs-data
write /sys/devices/system/cpu/cpufreq/policy0/scaling_governor sugov_ext
write /sys/devices/system/cpu/cpufreq/policy6/scaling_governor sugov_ext
write /proc/sys/kernel/sched_pelt_multiplier 4
write /proc/sys/kernel/sched_util_clamp_min_rt_default 0
on boot
# boot perf. tune
write /dev/cpuctl/system/cpu.uclamp.min 100
write /dev/cpuctl/system/cpu.uclamp.latency_sensitive 1
write /dev/cpuctl/system-background/cpu.uclamp.min 100
write /dev/cpuctl/system-background/cpu.uclamp.latency_sensitive 1
write /dev/cpuctl/foreground/cpu.uclamp.min 100
write /dev/cpuctl/foreground/cpu.uclamp.latency_sensitive 1
write /dev/cpuctl/top-app/cpu.uclamp.min 100
write /dev/cpuctl/top-app/cpu.uclamp.latency_sensitive 1
write /dev/cpuctl/background/cpu.uclamp.min 100
write /dev/cpuctl/background/cpu.uclamp.latency_sensitive 1
on property:sys.boot_completed=1
write /proc/sys/kernel/sched_migration_cost_ns 200000
# restore boot perf. tune
write /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq 0
write /sys/devices/system/cpu/cpufreq/policy6/scaling_min_freq 0
write /sys/class/devfreq/mtk-dvfsrc-devfreq/userspace/set_freq 0
write /dev/cpuctl/system/cpu.uclamp.min 0
write /dev/cpuctl/system/cpu.uclamp.latency_sensitive 0
write /dev/cpuctl/system-background/cpu.uclamp.min 0
write /dev/cpuctl/system-background/cpu.uclamp.latency_sensitive 0
write /dev/cpuctl/foreground/cpu.uclamp.min 0
write /dev/cpuctl/foreground/cpu.uclamp.latency_sensitive 0
write /dev/cpuctl/top-app/cpu.uclamp.min 0
write /dev/cpuctl/top-app/cpu.uclamp.latency_sensitive 0
write /dev/cpuctl/background/cpu.uclamp.min 0
write /dev/cpuctl/background/cpu.uclamp.latency_sensitive 0
on init
# update cpus for cpuset cgroup
write /dev/cpuset/foreground/cpus 0-2,4-7
write /dev/cpuset/foreground/boost/cpus 0-7
write /dev/cpuset/background/cpus 0-2
write /dev/cpuset/system-background/cpus 0-3
write /dev/cpuset/top-app/cpus 0-7
on enable-low-power
# Enable PowerHAL hint processing
setprop vendor.powerhal.init 1

1173
init/init.mt6835.rc Normal file

File diff suppressed because it is too large Load diff

957
init/init.mt6835.usb.rc Normal file
View file

@ -0,0 +1,957 @@
import /system_ext/etc/init/hw/init.usb.rc
on early-init
on post-fs
setprop vendor.usb.vid "0x0E8D"
mkdir /dev/usb-ffs 0775 shell shell
mkdir /dev/usb-ffs/adb 0770 shell shell
mkdir /config/usb_gadget/g1 0770 shell shell
write /config/usb_gadget/g1/idVendor ${vendor.usb.vid}
write /config/usb_gadget/g1/bcdDevice 0x0223
write /config/usb_gadget/g1/bcdUSB 0x0200
write /config/usb_gadget/g1/os_desc/use 1
mkdir /config/usb_gadget/g1/strings/0x409 0770
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/accessory.gs2
mkdir /config/usb_gadget/g1/functions/audio_source.gs3
mkdir /config/usb_gadget/g1/functions/ffs.adb
mkdir /config/usb_gadget/g1/functions/ffs.mtp
write /config/usb_gadget/g1/functions/ffs.mtp/os_desc/interface.MTP/compatible_id "MTP"
mkdir /config/usb_gadget/g1/functions/ffs.ptp
mkdir /config/usb_gadget/g1/functions/mtk_rndis.gs4
mkdir /config/usb_gadget/g1/functions/midi.gs5
mkdir /config/usb_gadget/g1/functions/acm.gs0
mkdir /config/usb_gadget/g1/functions/acm.gs1
mkdir /config/usb_gadget/g1/functions/acm.gs2
mkdir /config/usb_gadget/g1/functions/acm.gs3
mkdir /config/usb_gadget/g1/functions/mass_storage.usb0
mkdir /config/usb_gadget/g1/functions/hid.gs0
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"
write /config/usb_gadget/g1/configs/b.1/MaxPower 500
symlink /config/usb_gadget/g1/configs/b.1 /config/usb_gadget/g1/os_desc/b.1
mount functionfs adb /dev/usb-ffs/adb rmode=0770,fmode=0660,uid=2000,gid=2000,no_disconnect=1
mkdir /dev/usb-ffs/mtp 0770 mtp mtp
mkdir /dev/usb-ffs/ptp 0770 mtp mtp
mount functionfs mtp /dev/usb-ffs/mtp rmode=0770,fmode=0660,uid=1024,gid=1024,no_disconnect=1
mount functionfs ptp /dev/usb-ffs/ptp rmode=0770,fmode=0660,uid=1024,gid=1024,no_disconnect=1
on post-fs-data
mkdir /config/usb_gadget/g1/functions/via_modem.gs0
mkdir /config/usb_gadget/g1/functions/via_ets.gs0
mkdir /config/usb_gadget/g1/functions/via_atc.gs0
on boot
setprop sys.usb.configfs 1
setprop sys.usb.controller "11201000.usb0"
setprop vendor.usb.controller "11201000.usb0"
setprop vendor.usb.acm_cnt 0
setprop vendor.usb.acm_port0 ""
setprop vendor.usb.acm_port1 ""
setprop vendor.usb.acm_enable 0
write /sys/class/android_usb/android0/f_mtp/cpu_mask 0x80
write /sys/module/usb_f_mtp/parameters/mtp_rx_cont 1
chmod 0664 /sys/class/android_usb/android0/iSerial
chown root system /sys/class/android_usb/android0/iSerial
chown radio system /sys/class/usb_rawbulk/data/enable
chmod 0660 /sys/class/usb_rawbulk/data/enable
chown radio system /sys/class/usb_rawbulk/ets/enable
chmod 0660 /sys/class/usb_rawbulk/ets/enable
chown radio system /sys/class/usb_rawbulk/atc/enable
chmod 0660 /sys/class/usb_rawbulk/atc/enable
chown radio system /sys/class/usb_rawbulk/pcv/enable
chmod 0660 /sys/class/usb_rawbulk/pcv/enable
chown radio system /sys/class/usb_rawbulk/gps/enable
chmod 0660 /sys/class/usb_rawbulk/gps/enable
chown system radio /dev/ttyGS0
chmod 0660 /dev/ttyGS0
chown system radio /dev/ttyGS1
chmod 0660 /dev/ttyGS1
chown system radio /dev/ttyGS2
chmod 0660 /dev/ttyGS2
chown system radio /dev/ttyGS3
chmod 0660 /dev/ttyGS3
# for usb otg sdcard hot plug detection
write /sys/module/block/parameters/events_dfl_poll_msecs 1000
# force on usb
# write /sys/class/udc/${sys.usb.controller}/device/mode 3
on charger
mkdir /dev/usb-ffs 0775 shell shell
mkdir /dev/usb-ffs/adb 0770 shell shell
mkdir /config/usb_gadget/g1 0770 shell shell
write /config/usb_gadget/g1/idVendor 0x0E8D
write /config/usb_gadget/g1/bcdDevice 0x0223
write /config/usb_gadget/g1/bcdUSB 0x0200
write /config/usb_gadget/g1/os_desc/use 1
mkdir /config/usb_gadget/g1/strings/0x409 0770
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/ffs.adb
mkdir /config/usb_gadget/g1/functions/midi.gs5
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"
write /config/usb_gadget/g1/configs/b.1/MaxPower 500
symlink /config/usb_gadget/g1/configs/b.1 /config/usb_gadget/g1/os_desc/b.1
mount functionfs adb /dev/usb-ffs/adb rmode=0770,fmode=0660,uid=2000,gid=2000,no_disconnect=1
setprop sys.usb.configfs 1
setprop sys.usb.controller "11201000.usb0"
setprop vendor.usb.controller "11201000.usb0"
# midi for kpoc
on property:ro.bootmode=charger && property:ro.debuggable=0
setprop sys.usb.config kpoc_midi
on property:ro.bootmode=charger && property:ro.debuggable=1 && property:ro.vendor.usb.kpoc_adb=0
setprop sys.usb.config kpoc_midi
on property:sys.usb.config=kpoc_midi && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "kpoc_midi"
write /config/usb_gadget/g1/idProduct 0x2046
symlink /config/usb_gadget/g1/functions/midi.gs5 /config/usb_gadget/g1/configs/b.1/f1
write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
# adb for kpoc
on property:ro.bootmode=charger && property:ro.debuggable=1 && property:ro.vendor.usb.kpoc_adb=1
setprop sys.usb.config kpoc_adb
on property:sys.usb.config=kpoc_adb && property:sys.usb.configfs=1
start kpoc_adbd
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=kpoc_adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "kpoc_adb"
write /config/usb_gadget/g1/idProduct 0x201C
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f1
write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
### more command at init.usb.configfs.rc ###
on property:sys.usb.config=none && property:sys.usb.configfs=1
write /config/usb_gadget/g1/idVendor ${vendor.usb.vid}
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rmdir /config/usb_gadget/g1/functions/mtk_rndis.gs4
write /sys/class/udc/${vendor.usb.controller}/device/saving 0
### main function : adb ###
### start adbd at init.usb.configfs.rc ###
on property:sys.usb.config=adb && property:vendor.usb.acm_cnt=0 && \
property:sys.usb.configfs=1
setprop vendor.usb.pid 0x201C
on property:sys.usb.config=adb && property:vendor.usb.acm_cnt=1 && \
property:sys.usb.configfs=1
setprop vendor.usb.pid 0x2006
setprop vendor.usb.acm_port1 ""
on property:sys.usb.config=adb && property:vendor.usb.acm_cnt=2 && \
property:sys.usb.configfs=1
setprop vendor.usb.pid 0x2029
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=adb && \
property:vendor.usb.acm_enable=1 && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "adb_acm"
write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
write /sys/class/udc/${vendor.usb.controller}/device/saving 1
symlink /config/usb_gadget/g1/functions/mass_storage.usb0 /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port0} /config/usb_gadget/g1/configs/b.1/f3
symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port1} /config/usb_gadget/g1/configs/b.1/f4
write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=adb && \
property:vendor.usb.acm_enable=0 && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "adb"
write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f1
write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
setprop sys.usb.state ${sys.usb.config}
### main function : mtp ###
on property:sys.usb.config=mtp && property:vendor.usb.acm_cnt=0 && \
property:sys.usb.configfs=1
setprop vendor.usb.pid 0x2008
on property:sys.usb.config=mtp && property:vendor.usb.acm_cnt=1 && \
property:sys.usb.configfs=1
setprop vendor.usb.pid 0x2012
setprop vendor.usb.acm_port1 ""
on property:sys.usb.config=mtp && property:vendor.usb.acm_cnt=2 && \
property:sys.usb.configfs=1
setprop vendor.usb.pid 0x202A
on property:sys.usb.config=mtp && property:vendor.usb.acm_enable=1 && \
property:sys.usb.configfs=1 && property:vendor.usb.ffs.mtp.ready=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "mtp_acm"
write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
write /config/usb_gadget/g1/os_desc/use 1
write /sys/class/udc/${vendor.usb.controller}/device/saving 1
symlink /config/usb_gadget/g1/functions/ffs.mtp /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port0} /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port1} /config/usb_gadget/g1/configs/b.1/f3
write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=mtp && property:vendor.usb.acm_enable=0 && \
property:sys.usb.configfs=1 && property:vendor.usb.ffs.mtp.ready=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "mtp"
write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
write /config/usb_gadget/g1/os_desc/use 1
write /sys/class/udc/${vendor.usb.controller}/device/saving 2
symlink /config/usb_gadget/g1/functions/ffs.mtp /config/usb_gadget/g1/configs/b.1/f1
write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
setprop sys.usb.state ${sys.usb.config}
### start adbd at init.usb.configfs.rc ###
on property:sys.usb.config=mtp,adb && property:vendor.usb.acm_cnt=0 && \
property:sys.usb.configfs=1
setprop vendor.usb.pid 0x201D
on property:sys.usb.config=mtp,adb && property:vendor.usb.acm_cnt=1 && \
property:sys.usb.configfs=1
setprop vendor.usb.pid 0x200A
setprop vendor.usb.acm_port1 ""
on property:sys.usb.config=mtp,adb && property:vendor.usb.acm_cnt=2 && \
property:sys.usb.configfs=1
setprop vendor.usb.pid 0x2026
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=mtp,adb && \
property:vendor.usb.acm_enable=1 && property:sys.usb.configfs=1 && property:vendor.usb.ffs.mtp.ready=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "mtp_adb_acm"
write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
write /config/usb_gadget/g1/os_desc/use 1
write /sys/class/udc/${vendor.usb.controller}/device/saving 1
symlink /config/usb_gadget/g1/functions/ffs.mtp /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port0} /config/usb_gadget/g1/configs/b.1/f3
symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port1} /config/usb_gadget/g1/configs/b.1/f4
write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=mtp,adb && \
property:vendor.usb.acm_enable=0 && property:sys.usb.configfs=1 && property:vendor.usb.ffs.mtp.ready=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "mtp_adb"
write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
write /config/usb_gadget/g1/os_desc/use 1
symlink /config/usb_gadget/g1/functions/ffs.mtp /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f2
write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
setprop sys.usb.state ${sys.usb.config}
### main function : ptp ###
on property:sys.usb.config=ptp && property:vendor.usb.acm_cnt=0 && \
property:sys.usb.configfs=1
setprop vendor.usb.pid 0x200B
on property:sys.usb.config=ptp && property:vendor.usb.acm_cnt=1 && \
property:sys.usb.configfs=1
setprop vendor.usb.pid 0x2013
setprop vendor.usb.acm_port1 ""
on property:sys.usb.config=ptp && property:vendor.usb.acm_cnt=2 && \
property:sys.usb.configfs=1
setprop vendor.usb.pid 0x202B
on property:sys.usb.config=ptp && property:vendor.usb.acm_enable=1 && \
property:sys.usb.configfs=1 && property:vendor.usb.ffs.ptp.ready=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "ptp_acm"
write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
write /sys/class/udc/${vendor.usb.controller}/device/saving 1
symlink /config/usb_gadget/g1/functions/ffs.ptp /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port0} /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port1} /config/usb_gadget/g1/configs/b.1/f3
write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=ptp && property:vendor.usb.acm_enable=0 && \
property:sys.usb.configfs=1 && property:vendor.usb.ffs.ptp.ready=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "ptp"
write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
write /sys/class/udc/${vendor.usb.controller}/device/saving 2
symlink /config/usb_gadget/g1/functions/ffs.ptp /config/usb_gadget/g1/configs/b.1/f1
write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
setprop sys.usb.state ${sys.usb.config}
### start adbd at init.usb.configfs.rc ###
on property:sys.usb.config=ptp,adb && property:vendor.usb.acm_cnt=0 && \
property:sys.usb.configfs=1
setprop vendor.usb.pid 0x200C
on property:sys.usb.config=ptp,adb && property:vendor.usb.acm_cnt=1 && \
property:sys.usb.configfs=1
setprop vendor.usb.pid 0x200D
setprop vendor.usb.acm_port1 ""
on property:sys.usb.config=ptp,adb && property:vendor.usb.acm_cnt=2 && \
property:sys.usb.configfs=1
setprop vendor.usb.pid 0x2027
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=ptp,adb && \
property:vendor.usb.acm_enable=1 && property:sys.usb.configfs=1 && property:vendor.usb.ffs.ptp.ready=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "ptp_adb_acm"
write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
write /sys/class/udc/${vendor.usb.controller}/device/saving 1
symlink /config/usb_gadget/g1/functions/ffs.ptp /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port0} /config/usb_gadget/g1/configs/b.1/f3
symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port1} /config/usb_gadget/g1/configs/b.1/f4
write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=ptp,adb && \
property:vendor.usb.acm_enable=0 && property:sys.usb.configfs=1 && property:vendor.usb.ffs.ptp.ready=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "ptp_adb"
write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
symlink /config/usb_gadget/g1/functions/ffs.ptp /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f2
write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
setprop sys.usb.state ${sys.usb.config}
### main function : rndis ###
on property:sys.usb.config=rndis && property:vendor.usb.acm_cnt=0 && \
property:sys.usb.configfs=1
setprop vendor.usb.pid 0x2004
on property:sys.usb.config=rndis && property:vendor.usb.acm_cnt=1 && \
property:sys.usb.configfs=1
setprop vendor.usb.pid 0x2011
setprop vendor.usb.acm_port1 ""
on property:sys.usb.config=rndis && property:vendor.usb.acm_cnt=2 && \
property:sys.usb.configfs=1
setprop vendor.usb.pid 0x202C
on property:sys.usb.config=rndis && property:vendor.usb.acm_enable=1 && \
property:sys.usb.configfs=1
mkdir /config/usb_gadget/g1/functions/mtk_rndis.gs4
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "ums_acm"
write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
write /sys/class/udc/${vendor.usb.controller}/device/saving 1
symlink /config/usb_gadget/g1/functions/mtk_rndis.gs4 /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port0} /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port1} /config/usb_gadget/g1/configs/b.1/f3
write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=rndis && property:vendor.usb.acm_enable=0 && \
property:sys.usb.configfs=1
mkdir /config/usb_gadget/g1/functions/mtk_rndis.gs4
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "rndis"
write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
symlink /config/usb_gadget/g1/functions/mtk_rndis.gs4 /config/usb_gadget/g1/configs/b.1/f1
write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=rndis,adb && property:vendor.usb.acm_cnt=0 && \
property:sys.usb.configfs=1
setprop vendor.usb.pid 0x2005
on property:sys.usb.config=rndis,adb && property:vendor.usb.acm_cnt=1 && \
property:sys.usb.configfs=1
setprop vendor.usb.pid 0x2010
setprop vendor.usb.acm_port1 ""
on property:sys.usb.config=rndis,adb && property:vendor.usb.acm_cnt=2 && \
property:sys.usb.configfs=1
setprop vendor.usb.pid 0x2028
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=rndis,adb && \
property:vendor.usb.acm_enable=1 && property:sys.usb.configfs=1
mkdir /config/usb_gadget/g1/functions/mtk_rndis.gs4
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "rndis_adb_acm"
write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
write /sys/class/udc/${vendor.usb.controller}/device/saving 1
symlink /config/usb_gadget/g1/functions/mtk_rndis.gs4 /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port0} /config/usb_gadget/g1/configs/b.1/f3
symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port1} /config/usb_gadget/g1/configs/b.1/f4
write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=rndis,adb && \
property:vendor.usb.acm_enable=0 && property:sys.usb.configfs=1
mkdir /config/usb_gadget/g1/functions/mtk_rndis.gs4
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "rndis_adb"
write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
symlink /config/usb_gadget/g1/functions/mtk_rndis.gs4 /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f2
write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
setprop sys.usb.state ${sys.usb.config}
### main function : midi ###
on property:sys.usb.config=midi && property:sys.usb.configfs=1
write /config/usb_gadget/g1/idProduct 0x2046
on property:sys.usb.config=midi,adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/idProduct 0x2048
### main function : accessory ###
on property:sys.usb.config=accessory && property:sys.usb.configfs=1
write /config/usb_gadget/g1/idVendor 0x18d1
write /config/usb_gadget/g1/idProduct 0x2d00
on property:sys.usb.config=accessory,adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/idVendor 0x18d1
write /config/usb_gadget/g1/idProduct 0x2d01
### main function : audio_source ###
on property:sys.usb.config=audio_source && property:sys.usb.configfs=1
write /config/usb_gadget/g1/idVendor 0x18d1
write /config/usb_gadget/g1/idProduct 0x2d02
on property:sys.usb.config=audio_source,adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/idVendor 0x18d1
write /config/usb_gadget/g1/idProduct 0x2d03
### main function : accessory,audio_source ###
on property:sys.usb.config=accessory,audio_source && property:sys.usb.configfs=1
write /config/usb_gadget/g1/idVendor 0x18d1
write /config/usb_gadget/g1/idProduct 0x2d04
on property:sys.usb.config=accessory,audio_source,adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/idVendor 0x18d1
write /config/usb_gadget/g1/idProduct 0x2d05
on property:sys.usb.config=via_bypass && property:vendor.usb.acm_cnt=0 && \
property:sys.usb.configfs=1
setprop vendor.usb.pid 0x2031
on property:sys.usb.config=via_bypass && property:vendor.usb.acm_cnt=1 && \
property:sys.usb.configfs=1
setprop vendor.usb.pid 0x2033
setprop vendor.usb.acm_port1 ""
##via_modem,via_ets,via_atc,acm
on property:sys.usb.config=via_bypass && property:vendor.usb.acm_enable=1 && \
property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "via_bypass"
write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
write /sys/class/udc/${vendor.usb.controller}/device/saving 1
symlink /config/usb_gadget/g1/functions/via_modem.gs0 /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/via_ets.gs0 /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/via_atc.gs0 /config/usb_gadget/g1/configs/b.1/f3
symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port0} /config/usb_gadget/g1/configs/b.1/f4
write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
setprop sys.usb.state ${sys.usb.config}
##via_modem,via_ets,via_atc,adb
on property:sys.usb.config=via_bypass && property:vendor.usb.acm_enable=0 && \
property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "via_bypass"
write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
write /sys/class/udc/${vendor.usb.controller}/device/saving 1
symlink /config/usb_gadget/g1/functions/via_modem.gs0 /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/via_ets.gs0 /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/via_atc.gs0 /config/usb_gadget/g1/configs/b.1/f3
write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=via_bypass,adb && property:vendor.usb.acm_cnt=0 && \
property:sys.usb.configfs=1
setprop vendor.usb.pid 0x2032
on property:sys.usb.config=via_bypass,adb && property:vendor.usb.acm_cnt=1 && \
property:sys.usb.configfs=1
setprop vendor.usb.pid 0x2034
setprop vendor.usb.acm_port1 ""
on property:sys.usb.config=via_bypass,adb && property:vendor.usb.acm_cnt=2 && \
property:sys.usb.configfs=1
setprop vendor.usb.pid 0x2050
on property:sys.usb.config=via_bypass,adb && property:sys.usb.configfs=1
start adbd
##via_modem,via_ets,via_atc,adb,acm
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=via_bypass,adb && \
property:vendor.usb.acm_enable=1 && property:vendor.usb.acm_cnt=1 && \
property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "rndis_adb_acm"
write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
write /sys/class/udc/${vendor.usb.controller}/device/saving 1
symlink /config/usb_gadget/g1/functions/via_modem.gs0 /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/via_ets.gs0 /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/via_atc.gs0 /config/usb_gadget/g1/configs/b.1/f3
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f4
symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port0} /config/usb_gadget/g1/configs/b.1/f5
write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
setprop sys.usb.state ${sys.usb.config}
##via_modem,acm,adb
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=via_bypass,adb && \
property:vendor.usb.acm_enable=1 && property:vendor.usb.acm_cnt=2 && \
property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "rndis_adb_acm2"
write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
write /sys/class/udc/${vendor.usb.controller}/device/saving 1
symlink /config/usb_gadget/g1/functions/via_modem.gs0 /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port0} /config/usb_gadget/g1/configs/b.1/f3
symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port1} /config/usb_gadget/g1/configs/b.1/f4
write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
setprop sys.usb.state ${sys.usb.config}
##via_modem,via_ets,via_atc,adb
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=via_bypass,adb && \
property:vendor.usb.acm_enable=0 && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "rndis_adb"
write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
write /sys/class/udc/${vendor.usb.controller}/device/saving 1
symlink /config/usb_gadget/g1/functions/via_modem.gs0 /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/via_ets.gs0 /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/via_atc.gs0 /config/usb_gadget/g1/configs/b.1/f3
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f4
write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
setprop sys.usb.state ${sys.usb.config}
### main function : mass_storage ###
on property:sys.usb.config=mass_storage && property:vendor.usb.acm_cnt=0 && \
property:sys.usb.configfs=1
setprop vendor.usb.pid 0x2002
on property:sys.usb.config=mass_storage && property:vendor.usb.acm_cnt=1 && \
property:sys.usb.configfs=1
setprop vendor.usb.pid 0x200F
setprop vendor.usb.acm_port1 ""
on property:sys.usb.config=mass_storage && property:vendor.usb.acm_cnt=2 && \
property:sys.usb.configfs=1
setprop vendor.usb.pid 0x202D
on property:sys.usb.config=mass_storage && property:vendor.usb.acm_enable=1 && \
property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "ums_acm"
write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
write /sys/class/udc/${vendor.usb.controller}/device/saving 1
symlink /config/usb_gadget/g1/functions/mass_storage.usb0 /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port0} /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port1} /config/usb_gadget/g1/configs/b.1/f3
write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=mass_storage && property:vendor.usb.acm_enable=0 && \
property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "ums"
write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
symlink /config/usb_gadget/g1/functions/mass_storage.usb0 /config/usb_gadget/g1/configs/b.1/f1
write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=mass_storage,adb && property:vendor.usb.acm_cnt=0 && \
property:sys.usb.configfs=1
setprop vendor.usb.pid 0x2003
on property:sys.usb.config=mass_storage,adb && property:vendor.usb.acm_cnt=1 && \
property:sys.usb.configfs=1
setprop vendor.usb.pid 0x2006
setprop vendor.usb.acm_port1 ""
on property:sys.usb.config=mass_storage,adb && property:vendor.usb.acm_cnt=2 && \
property:sys.usb.configfs=1
setprop vendor.usb.pid 0x2029
on property:sys.usb.config=mass_storage,adb && property:sys.usb.configfs=1
start adbd
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=mass_storage,adb && \
property:vendor.usb.acm_enable=1 && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "ums_adb_acm"
write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
write /sys/class/udc/${vendor.usb.controller}/device/saving 1
symlink /config/usb_gadget/g1/functions/mass_storage.usb0 /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port0} /config/usb_gadget/g1/configs/b.1/f3
symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port1} /config/usb_gadget/g1/configs/b.1/f4
write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=mass_storage,adb && \
property:vendor.usb.acm_enable=0 && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "ums_adb"
write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
symlink /config/usb_gadget/g1/functions/mass_storage.usb0 /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f2
write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
setprop sys.usb.state ${sys.usb.config}
### main function : bicr ###
on property:sys.usb.config=bicr && property:vendor.usb.acm_cnt=0 && \
property:sys.usb.configfs=1
setprop vendor.usb.pid 0x2002
on property:sys.usb.config=bicr && property:vendor.usb.acm_cnt=1 && \
property:sys.usb.configfs=1
setprop vendor.usb.pid 0x200F
setprop vendor.usb.acm_port1 ""
on property:sys.usb.config=bicr && property:vendor.usb.acm_cnt=2 && \
property:sys.usb.configfs=1
setprop vendor.usb.pid 0x202D
on property:sys.usb.config=bicr && property:vendor.usb.acm_enable=1 && \
property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "ums_acm"
write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
write /sys/class/udc/${vendor.usb.controller}/device/saving 1
write /config/usb_gadget/g1/functions/mass_storage.usb0/lun.0/cdrom 1
write /config/usb_gadget/g1/functions/mass_storage.usb0/lun.0/file "/dev/block/loop0"
symlink /config/usb_gadget/g1/functions/mass_storage.usb0 /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port0} /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port1} /config/usb_gadget/g1/configs/b.1/f3
write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=bicr && property:vendor.usb.acm_enable=0 && \
property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "ums"
write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
write /config/usb_gadget/g1/functions/mass_storage.usb0/lun.0/cdrom 1
write /config/usb_gadget/g1/functions/mass_storage.usb0/lun.0/file "/dev/block/loop0"
symlink /config/usb_gadget/g1/functions/mass_storage.usb0 /config/usb_gadget/g1/configs/b.1/f1
write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=bicr,adb && property:vendor.usb.acm_cnt=0 && \
property:sys.usb.configfs=1
setprop vendor.usb.pid 0x2003
on property:sys.usb.config=bicr,adb && property:vendor.usb.acm_cnt=1 && \
property:sys.usb.configfs=1
setprop vendor.usb.pid 0x2006
setprop vendor.usb.acm_port1 ""
on property:sys.usb.config=bicr,adb && property:vendor.usb.acm_cnt=2 && \
property:sys.usb.configfs=1
setprop vendor.usb.pid 0x2029
on property:sys.usb.config=bicr,adb && property:sys.usb.configfs=1
start adbd
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=bicr,adb && \
property:vendor.usb.acm_enable=1 && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "ums_adb_acm"
write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
write /sys/class/udc/${vendor.usb.controller}/device/saving 1
write /config/usb_gadget/g1/functions/mass_storage.usb0/lun.0/cdrom 1
write /config/usb_gadget/g1/functions/mass_storage.usb0/lun.0/file "/dev/block/loop0"
symlink /config/usb_gadget/g1/functions/mass_storage.usb0 /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port0} /config/usb_gadget/g1/configs/b.1/f3
symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port1} /config/usb_gadget/g1/configs/b.1/f4
write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=bicr,adb && \
property:vendor.usb.acm_enable=0 && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "ums_adb"
write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
write /config/usb_gadget/g1/functions/mass_storage.usb0/lun.0/cdrom 1
write /config/usb_gadget/g1/functions/mass_storage.usb0/lun.0/file "/dev/block/loop0"
symlink /config/usb_gadget/g1/functions/mass_storage.usb0 /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f2
write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
setprop sys.usb.state ${sys.usb.config}
### ACM APPEND SERIES ###
on property:persist.vendor.radio.port_index="0" && property:sys.boot_completed=1
setprop vendor.usb.acm_idx ""
setprop vendor.usb.acm_cnt 0
setprop vendor.usb.acm_enable 0
setprop sys.usb.config none
setprop sys.usb.config ${sys.usb.state}
on property:persist.vendor.radio.port_index="1" && property:sys.boot_completed=1
setprop sys.usb.config acm_gs0
on property:sys.usb.config=mass_storage,adb,acm
setprop sys.usb.config acm_gs0
on property:sys.usb.config=acm_gs0
setprop vendor.usb.acm_port0 0
setprop vendor.usb.acm_port1 ""
setprop vendor.usb.acm_cnt 1
setprop vendor.usb.acm_enable 1
setprop sys.usb.config none
setprop sys.usb.config ${sys.usb.state}
setprop vendor.usb.acm_idx "1"
on property:persist.vendor.radio.port_index="2" && property:sys.boot_completed=1
setprop sys.usb.config acm_gs1
on property:sys.usb.config=acm_gs1
setprop vendor.usb.acm_port0 1
setprop vendor.usb.acm_port1 ""
setprop vendor.usb.acm_cnt 1
setprop vendor.usb.acm_enable 1
setprop sys.usb.config none
setprop sys.usb.config ${sys.usb.state}
setprop vendor.usb.acm_idx "2"
on property:persist.vendor.radio.port_index="3" && property:sys.boot_completed=1
setprop sys.usb.config acm_gs2
on property:sys.usb.config=acm_third
setprop sys.usb.config acm_gs2
on property:sys.usb.config=acm_gs2
setprop vendor.usb.acm_port0 2
setprop vendor.usb.acm_port1 ""
setprop vendor.usb.acm_cnt 1
setprop vendor.usb.acm_enable 1
setprop sys.usb.config none
setprop sys.usb.config ${sys.usb.state}
setprop vendor.usb.acm_idx "3"
on property:persist.vendor.radio.port_index="4" && property:sys.boot_completed=1
setprop sys.usb.config acm_gs3
on property:sys.usb.config=gs3
setprop sys.usb.config acm_gs3
on property:sys.usb.config=mtp,gs3
setprop sys.usb.config acm_gs3
on property:sys.usb.config=acm_gs3
setprop vendor.usb.acm_port0 3
setprop vendor.usb.acm_port1 ""
setprop vendor.usb.acm_cnt 1
setprop vendor.usb.acm_enable 1
setprop sys.usb.config none
setprop sys.usb.config ${sys.usb.state}
setprop vendor.usb.acm_idx "4"
on property:sys.usb.config=mtp,gs0gs1
setprop sys.usb.config acm_gs0gs1
on property:sys.usb.config=gs0gs1
setprop sys.usb.config acm_gs0gs1
on property:sys.usb.config=rndis,gs0gs1
setprop sys.usb.config acm_gs0gs1
on property:sys.usb.config=rndis,adb,gs0gs1
setprop sys.usb.config acm_gs0gs1
on property:sys.usb.config=acm_gs0gs1
setprop vendor.usb.acm_port0 0
setprop vendor.usb.acm_port1 1
setprop vendor.usb.acm_cnt 2
setprop vendor.usb.acm_enable 1
setprop sys.usb.config none
setprop sys.usb.config ${sys.usb.state}
setprop vendor.usb.acm_idx "1,2"
on property:persist.vendor.radio.port_index="1,4" && property:sys.boot_completed=1
setprop sys.usb.config acm_gs0gs3
on property:sys.usb.config=gs3,dual_acm
setprop sys.usb.config acm_gs0gs3
on property:sys.usb.config=mtp,gs3,dual_acm
setprop sys.usb.config acm_gs0gs3
on property:sys.usb.config=mtp,gs0gs3
setprop sys.usb.config acm_gs0gs3
on property:sys.usb.config=gs0gs3
setprop sys.usb.config acm_gs0gs3
on property:sys.usb.config=rndis,gs0gs3
setprop sys.usb.config acm_gs0gs3
on property:sys.usb.config=rndis,adb,gs0gs3
setprop sys.usb.config acm_gs0gs3
on property:sys.usb.config=acm_gs0gs3
setprop vendor.usb.acm_port0 0
setprop vendor.usb.acm_port1 3
setprop vendor.usb.acm_cnt 2
setprop vendor.usb.acm_enable 1
setprop sys.usb.config none
setprop sys.usb.config ${sys.usb.state}
setprop vendor.usb.acm_idx "1,4"
on property:sys.usb.config=gs1gs3
setprop sys.usb.config acm_gs1gs3
on property:sys.usb.config=mtp,gs1gs3
setprop sys.usb.config acm_gs1gs3
on property:sys.usb.config=via_bypass,gs1gs3
setprop sys.usb.config acm_gs1gs3
on property:sys.usb.config=rndis,gs1gs3
setprop sys.usb.config acm_gs1gs3
on property:sys.usb.config=acm_gs1gs3
setprop vendor.usb.acm_port0 1
setprop vendor.usb.acm_port1 3
setprop vendor.usb.acm_cnt 2
setprop vendor.usb.acm_enable 1
setprop sys.usb.config none
setprop sys.usb.config ${sys.usb.state}
setprop vendor.usb.acm_idx "2,4"
# For ATM (Android Test Mode)
on property:vendor.usb.clear=1 && property:sys.usb.configfs=1
write /config/usb_gadget/g1/UDC "none"
write /config/usb_gadget/g1/bDeviceClass 0
write /config/usb_gadget/g1/bDeviceSubClass 0
write /config/usb_gadget/g1/bDeviceProtocol 0
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rmdir /config/usb_gadget/g1/functions/mtk_rndis.gs4
write /sys/class/udc/${vendor.usb.controller}/device/saving 0
setprop vendor.usb.clear 2
# has permission issue when read from ${sys.usb.ffs.ready}
on property:sys.usb.ffs.ready=0
setprop vendor.usb.ffs.ready 0
on property:sys.usb.ffs.ready=1
setprop vendor.usb.ffs.ready 1
on property:sys.usb.config=atm_gs0 && property:sys.usb.configfs=1
stop adbd
setprop vendor.usb.ffs.ready 0
setprop vendor.usb.clear 1
on property:vendor.usb.ffs.ready=0 && property:sys.usb.config=atm_gs0 && \
property:vendor.usb.clear=2 && property:sys.usb.configfs=1
start adbd
on property:vendor.usb.ffs.ready=1 && property:sys.usb.config=atm_gs0 && \
property:vendor.usb.clear=2 && property:sys.usb.configfs=1
setprop vendor.usb.acm_port0 0
setprop vendor.usb.acm_port1 ""
setprop vendor.usb.acm_cnt 1
setprop vendor.usb.acm_enable 1
write /sys/class/udc/${vendor.usb.controller}/device/saving 1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "atm_gs0"
write /config/usb_gadget/g1/idProduct 0x200A
symlink /config/usb_gadget/g1/functions/ffs.mtp /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/acm.gs0 /config/usb_gadget/g1/configs/b.1/f3
write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
#setprop sys.usb.state ${sys.usb.config}
setprop vendor.usb.pid 0x200A
#setprop vendor.usb.clear 0
setprop vendor.usb.acm_idx "1"
on property:sys.usb.config=atm_gs0gs3 && property:sys.usb.configfs=1
stop adbd
setprop vendor.usb.ffs.ready 0
setprop vendor.usb.clear 1
on property:vendor.usb.ffs.ready=0 && property:sys.usb.config=atm_gs0gs3 && \
property:vendor.usb.clear=2 && property:sys.usb.configfs=1
start adbd
on property:vendor.usb.ffs.ready=1 && property:sys.usb.config=atm_gs0gs3 && \
property:vendor.usb.clear=2 && property:sys.usb.configfs=1
setprop vendor.usb.acm_port0 0
setprop vendor.usb.acm_port1 3
setprop vendor.usb.acm_cnt 2
setprop vendor.usb.acm_enable 1
write /sys/class/udc/${vendor.usb.controller}/device/saving 1
write /config/usb_gadget/g1/idProduct 0x2026
symlink /config/usb_gadget/g1/functions/ffs.mtp /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/acm.gs0 /config/usb_gadget/g1/configs/b.1/f3
symlink /config/usb_gadget/g1/functions/acm.gs3 /config/usb_gadget/g1/configs/b.1/f4
write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
#setprop sys.usb.state ${sys.usb.config}
setprop vendor.usb.pid 0x2026
#setprop vendor.usb.clear 0
setprop vendor.usb.acm_idx "1,4"
### CHARGING ###
on property:sys.usb.config=cdp && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "mtp"
write /config/usb_gadget/g1/idProduct 0x2008
write /config/usb_gadget/g1/os_desc/use 1
symlink /config/usb_gadget/g1/functions/ffs.mtp /config/usb_gadget/g1/configs/b.1/f1
write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
setprop sys.usb.state ${sys.usb.config}
setprop vendor.usb.pid 0x2008
on property:sys.usb.config=charging_yes
setprop vendor.usb.charging yes
setprop sys.usb.config none
setprop sys.usb.config ${sys.usb.state}
on property:sys.usb.config=charging_no
setprop sys.usb.config none
setprop sys.usb.config ${sys.usb.state}
setprop vendor.usb.charging no
on property:vendor.usb.charging=yes
write /sys/class/udc/${vendor.usb.controller}/device/mode 0
on property:vendor.usb.charging=no
write /sys/class/udc/${vendor.usb.controller}/device/mode 1
on property:vendor.usb.bicr=yes
write /sys/class/android_usb/android0/f_mass_storage/bicr 1
write /sys/class/android_usb/android0/f_mass_storage/lun/file "/dev/block/loop0"
on property:vendor.usb.bicr=no
write /sys/class/android_usb/android0/f_mass_storage/bicr 0
write /sys/class/android_usb/android0/f_mass_storage/lun/file "off"
on property:vendor.em.usb.set=term_sel
write /proc/mtk_usb/usb-phy0/u2_phy/term_sel ${vendor.em.usb.value}
on property:vendor.em.usb.set=vrt_sel
write /proc/mtk_usb/usb-phy0/u2_phy/vrt_sel ${vendor.em.usb.value}
on property:vendor.em.usb.set=phy_rev6
write /proc/mtk_usb/usb-phy0/u2_phy/phy_rev6 ${vendor.em.usb.value}
on property:vendor.em.usb.set=discth
write /proc/mtk_usb/usb-phy0/u2_phy/discth ${vendor.em.usb.value}
on property:vendor.em.usb.bypass.enable=0
write /sys/class/usb_rawbulk/gps/enable 1
on property:vendor.em.usb.bypass.enable=1
write /sys/class/usb_rawbulk/pcv/enable 1
on property:vendor.em.usb.bypass.enable=2
write /sys/class/usb_rawbulk/atc/enable 1
on property:vendor.em.usb.bypass.enable=3
write /sys/class/usb_rawbulk/ets/enable 1
on property:vendor.em.usb.bypass.enable=4
write /sys/class/usb_rawbulk/data/enable 1
on property:vendor.em.usb.bypass.disable=0
write /sys/class/usb_rawbulk/gps/enable 0
on property:vendor.em.usb.bypass.disable=1
write /sys/class/usb_rawbulk/pcv/enable 0
on property:vendor.em.usb.bypass.disable=2
write /sys/class/usb_rawbulk/atc/enable 0
on property:vendor.em.usb.bypass.disable=3
write /sys/class/usb_rawbulk/ets/enable 0
on property:vendor.em.usb.bypass.disable=4
write /sys/class/usb_rawbulk/data/enable 0
### vendor process start ###
on property:vendor.usb.config=*
setprop sys.usb.config ${vendor.usb.config}
### vendor process end ###
### test command start ###
on property:vendor.usb.test=*
setprop sys.usb.config none
setprop sys.usb.config ${vendor.usb.test}
### test command end ###
on property:vendor.usb.printk=*
write /proc/sys/kernel/printk ${vendor.usb.printk}
on property:persist.vendor.usb.printk=*
setprop vendor.usb.printk ${persist.vendor.usb.printk}
on property:vendor.usb.speed.mode=u3
write /sys/class/udc/${vendor.usb.controller}/device/max_speed super-speed
write /sys/class/udc/${vendor.usb.controller}/device/mode 0
write /sys/class/udc/${vendor.usb.controller}/device/mode 1
on property:vendor.usb.speed.mode=u2
write /sys/class/udc/${vendor.usb.controller}/device/max_speed high-speed
write /sys/class/udc/${vendor.usb.controller}/device/mode 0
write /sys/class/udc/${vendor.usb.controller}/device/mode 1
on property:persist.vendor.usb.speed.mode=u3
write /sys/class/udc/${vendor.usb.controller}/device/max_speed super-speed
write /sys/class/udc/${vendor.usb.controller}/device/mode 0
write /sys/class/udc/${vendor.usb.controller}/device/mode 1
on property:persist.vendor.usb.speed.mode=u2
write /sys/class/udc/${vendor.usb.controller}/device/max_speed high-speed
write /sys/class/udc/${vendor.usb.controller}/device/mode 0
write /sys/class/udc/${vendor.usb.controller}/device/mode 1
on property:vendor.usb.sib_enable=1
write /proc/mtk_usb/usb-phy0/u3_phy/sib 1
on property:vendor.usb.sib_enable=0
write /proc/mtk_usb/usb-phy0/u3_phy/sib 0
on property:vendor.usb.testmode=0
write /proc/mtk_usb/xhci0/testmode "0"
on property:vendor.usb.testmode=1
write /proc/mtk_usb/xhci0/testmode "test SE0 NAK"
on property:vendor.usb.testmode=2
write /proc/mtk_usb/xhci0/testmode "test J"
on property:vendor.usb.testmode=3
write /proc/mtk_usb/xhci0/testmode "test K"
on property:vendor.usb.testmode=4
write /proc/mtk_usb/xhci0/testmode "test packet"
on property:vendor.usb.device.wakeup=*
write ${vendor.usb.device.wakeup} "enabled"
### PLATFORM VARIANT, cat $rc_file | grep write | sort | grep -vE "android0|usb20_phy" | awk '{print $2}' | uniq ###

11
init/init.mtkgki.rc Normal file
View file

@ -0,0 +1,11 @@
service insmod_sh /vendor/bin/init.insmod.sh /vendor/etc/init.insmod.${ro.hardware}.cfg
class main
user root
group root system
disabled
oneshot
on early-init
setprop vendor.all.modules.ready 0
write /proc/bootprof "modprobe: Load_Module_START"
start insmod_sh

66
init/init.project.rc Normal file
View file

@ -0,0 +1,66 @@
import /vendor/etc/init/hw/init.mtkgki.rc
# MTK project .rc configure
on init
mkdir /mnt/media_rw/usbotg 0700 media_rw media_rw
mkdir /storage/usbotg 0700 root root
on post-fs-data
#Camera
chmod 0660 /dev/MAINAF
chown system camera /dev/MAINAF
chmod 0660 /dev/MAINAF2
chown system camera /dev/MAINAF2
chmod 0660 /dev/SUBAF
chown system camera /dev/SUBAF
chmod 0660 /dev/GAF001AF
chown system camera /dev/GAF001AF
chmod 0660 /dev/DW9714AF
chown system camera /dev/DW9714AF
chmod 0660 /dev/LC898212AF
chown system camera /dev/LC898212AF
chmod 0660 /dev/BU64745GWZAF
chown system camera /dev/BU64745GWZAF
#SMB
chown system system /proc/smb/ScreenComm
chmod 0660 /proc/smb/ScreenComm
chmod 0660 /dev/spm
chown system system /dev/spm
#fingerprint
chown system system /dev/spidev1.0
chmod 0666 /dev/focaltech_fp
chmod 0666 /dev/spidev1.0
on init
# Refer to http://source.android.com/devices/tech/storage/index.html
# It said, "Starting in Android 4.4, multiple external storage devices are surfaced to developers through
# Context.getExternalFilesDirs(), Context.getExternalCacheDirs(), and Context.getObbDirs().
# External storage devices surfaced through these APIs must be a semi-permanent part of the device (such as an SD card slot in a battery compartment).
# Developers expect data stored in these locations to be available over long periods of time."
# Therefore, if the target doesn't support sd hot-plugging (Ex: the SD card slot in a battery compartment), we need to export SECONDARY_STORAGE in 'boot' section
#
# export SECONDARY_STORAGE /storage/sdcard1
service fuse_usbotg /system/bin/sdcard -u 1023 -g 1023 -w 1023 -d /mnt/media_rw/usbotg /storage/usbotg
class late_start
user media_rw
disabled
# start mmstat
on property:sys.boot_completed=1
mkdir /sys/kernel/tracing/instances/mmstat 711
write /sys/kernel/tracing/instances/mmstat/tracing_on 0
write /sys/kernel/tracing/instances/mmstat/buffer_size_kb 16
write /sys/kernel/tracing/instances/mmstat/events/mmstat/enable 1
write /sys/kernel/tracing/instances/mmstat/tracing_on 1

View file

@ -0,0 +1,27 @@
import /init.recovery.project.rc
on init
setprop sys.usb.configfs 1
setprop sys.usb.controller "11201000.usb0"
on fs && property:ro.debuggable=0
# distinguish USB shoulde connect or not, i.e. CDP vs SDP
# set charging free due to it wait for USB activation
on post-fs
# Support A/B feature for EMMC and UFS boot region
symlink /dev/block/sda /dev/block/mmcblk0boot0
symlink /dev/block/sdb /dev/block/mmcblk0boot1
symlink /dev/block/mmcblk0boot0 /dev/block/by-name/preloader_a
symlink /dev/block/mmcblk0boot1 /dev/block/by-name/preloader_b
# Support A/B feature for combo emmc and ufs OTA update
symlink /dev/block/by-name/preloader_a /dev/block/by-name/preloader_emmc_a
symlink /dev/block/by-name/preloader_b /dev/block/by-name/preloader_emmc_b
symlink /dev/block/by-name/preloader_a /dev/block/by-name/preloader_ufs_a
symlink /dev/block/by-name/preloader_b /dev/block/by-name/preloader_ufs_b
exec u:r:update_engine:s0 root root -- /system/bin/mtk_plpath_utils
symlink /dev/block/mapper/pl_a /dev/block/by-name/preloader_raw_a
symlink /dev/block/mapper/pl_b /dev/block/by-name/preloader_raw_b

11
init/init.sensor_2_0.rc Normal file
View file

@ -0,0 +1,11 @@
# MTK platform .rc configure
on post-fs-data
# calibration
mkdir /data/vendor/sensor 0774 system system
# Sensor add by driver for hf_manager Permissions
chmod 0666 /dev/hf_manager
chown system system /dev/hf_manager
# drv modified by gongtaitao for send lcm param to light sensor 20221031 start
chmod 0666 /dev/pix_manager
chown system system /dev/pix_manager
# drv modified by gongtaitao for send lcm param to light sensor 20221031 end

46
init/init_connectivity.rc Normal file
View file

@ -0,0 +1,46 @@
# MTK connectivity .rc configure
on post-fs-data
mkdir /data/vendor/stp_dump 0755 system system
mkdir /data/vendor/connsyslog 0755 system system
on boot
# WMT
service wmt_loader /vendor/bin/wmt_loader
class early_hal
user system
group system
oneshot
service wmt_launcher /vendor/bin/wmt_launcher -p /vendor/firmware/ -o 1
class early_hal
user system
group system
on property:ro.build.type=eng
write /sys/kernel/debug/tracing/tracing_on 1
on property:persist.vendor.connsys.coredump.mode=1
start stp_dump
on property:persist.vendor.connsys.coredump.mode=2
start stp_dump
on property:persist.vendor.connsys.coredump.mode=0
stop stp_dump
on property:vendor.connsys.driver.ready=yes && property:persist.vendor.connsys.coredump.mode=*
write /proc/driver/wmt_user_proc "0x1 ${persist.vendor.connsys.coredump.mode}"
on property:vendor.connsys.driver.ready=yes && property:debug.vendor.connsys.suspend.alarm=*
write /proc/driver/wmt_user_proc "0x2 ${debug.vendor.connsys.suspend.alarm}"
on property:persist.vendor.em.dy.debug=1
setprop persist.vendor.connsys.coredump.mode 0
service stp_dump /vendor/bin/stp_dump3
user system
group system sdcard_rw misc
class core
disabled

209
init/ueventd.rc Normal file
View file

@ -0,0 +1,209 @@
#change partition permission
# eMMC only
/dev/block/mmcblk0 0660 root system
/dev/block/mmcblk0boot0 0660 root system
/dev/block/mmcblk0boot1 0660 root system
/dev/misc-sd 0660 root system
# UFS only
/dev/block/sda 0660 root system
/dev/block/sdb 0660 root system
/dev/block/sdc 0660 root system
# eMMC/UFS common
/dev/block/by-name/misc2 0660 root system
/dev/block/by-name/boot 0640 root system
/dev/block/by-name/recovery 0640 root system
/dev/block/by-name/secro 0640 root system
/dev/block/by-name/seccfg 0660 root system
/dev/block/by-name/proinfo 0660 root system
/dev/block/by-name/nvram 0660 root system
/dev/block/by-name/para 0660 root system
/dev/block/by-name/logo 0660 root system
/dev/block/by-name/frp 0660 root system
/dev/block/by-name/md1img 0640 root system
/dev/block/by-name/md1img_a 0640 root system
/dev/block/by-name/md1img_b 0640 root system
/dev/block/by-name/md1dsp 0660 root system
/dev/block/by-name/boot_para 0640 root system
# OTP
/dev/otp 0660 system system
/dev/block/by-name/otp 0660 root system
# Connectivity
/dev/stpwmt 0660 system system
/dev/wmtdetect 0660 system system
/dev/fw_log_wmt 0660 system system
/dev/conninfra_dev 0660 system system
/dev/conn_pwr_dev 0660 system system
# BT
/dev/stpbt 0660 bluetooth bluetooth
/dev/fw_log_bt 0660 bluetooth bluetooth
# GPS
/dev/gpsdl0 0660 gps gps
/dev/gpsdl1 0660 gps gps
/dev/stpgps 0660 gps gps
/dev/stpgps2 0660 gps gps
/dev/gps 0660 gps system
/dev/gps_emi 0660 gps gps
/dev/gps_pwr 0660 gps gps
/dev/fw_log_gps 0660 gps gps
# ANT
/dev/stpant 0660 system system
# WIFI
/dev/wmtWifi 0660 wifi wifi
/dev/fw_log_wifi 0660 wifi wifi
# FMRadio
/dev/fm 0660 media media
# NFC
/dev/st21nfc 0660 nfc radio
/dev/st54spi 0660 secure_element secure_element
# MTK BTIF driver
/dev/btif 0600 system system
# Trusty driver
/dev/trusty-ipc-dev0 0660 system system
/dev/nebula-ipc-dev0 0660 system system
# RPMB (for Trusty)
/dev/block/mmcblk0rpmb 0660 root system
# TrustonicTEE driver
/dev/mobicore 0600 system system
/dev/mobicore-user 0666 system system
/dev/t-base-tui 0666 system system
# teeperf driver
/dev/teeperf 0666 system system
#v4l2 device
/dev/video* 0660 camera system
/dev/media* 0660 camera system
/dev/v4l-subdev* 0660 camera system
#v4l2 codec
/dev/vcu 0660 camera system
#v4l2 camera
/dev/mtk_hcp 0660 camera system
# DRM node
/dev/dri/card0 0660 system system
# MDDP node
/dev/mddp 0660 system system
# cpu hotplug
/sys/devices/system/cpu/cpu* cpufreq/sugov_ext/down_rate_limit_us 0664 system system
/sys/devices/system/cpu/cpu* cpufreq/sugov_ext/up_rate_limit_us 0664 system system
# add the read write right of ttyUSB*
/dev/bus/usb/* 0660 root usb
/dev/ttyUSB0 0660 radio radio
/dev/ttyUSB1 0660 radio radio
/dev/ttyUSB2 0660 radio radio
/dev/ttyUSB3 0660 radio radio
/dev/ttyUSB4 0660 radio radio
# Anyone can read the logs, but if they're not in the "logs"
# group, then they'll only see log entries for their UID.
/dev/log/ksystem 0600 root log
/dev/ccci* 0660 radio radio
/dev/ttyC* 0660 radio radio
/sys/kernel/ccci modem_info 0644 radio radio
/sys/kernel/ccci md1_postfix 0644 radio radio
/sys/kernel/ccci md2_postfix 0644 radio radio
/dev/eemcs* 0660 radio radio
/dev/emd* 0660 radio radio
/dev/ccci_pcm_rx 0660 audio audio
/dev/ccci_pcm_tx 0660 audio audio
/dev/ccci_aud 0660 audio audio
/dev/ccci2_aud 0660 audio audio
/dev/ccci3_aud 0660 audio audio
/dev/ccci_raw_audio 0660 audio audio
/dev/ccci3_raw_audio 0660 audio audio
/dev/eemcs_aud 0660 audio audio
/dev/irtx 0660 system system
/dev/lirc* 0660 root system
/dev/ir-learning 0660 system system
# SGX device node
/dev/pvrsrvkm 0666 root root
/dev/pvr_sync 0666 root root
/sys/devices/platform/leds-mt65xx/leds/green delay_on 0664 system system
/sys/devices/platform/leds-mt65xx/leds/green delay_off 0664 system system
/sys/devices/platform/leds-mt65xx/leds/red delay_on 0664 system system
/sys/devices/platform/leds-mt65xx/leds/red delay_off 0664 system system
/sys/devices/platform/leds-mt65xx/leds/blue delay_on 0664 system system
/sys/devices/platform/leds-mt65xx/leds/blue delay_off 0664 system system
#drv add by shenwenbin for leds selinux 20231118 start
/sys/class/leds/red delay_on 0664 system system
/sys/class/leds/red delay_off 0664 system system
/sys/class/leds/green delay_on 0664 system system
/sys/class/leds/green delay_off 0664 system system
/sys/class/leds/blue delay_on 0664 system system
/sys/class/leds/blue delay_off 0664 system system
#drv add by shenwenbin for leds selinux 20231118 end
#GPIO
/dev/mtgpio 0600 radio root
# Camera
/dev/camera_eeprom* 0660 system camera
#FOR VIA MODEM
/dev/ttySDIO* 0660 radio sdcard_rw
/dev/ttyRB* 0660 radio radio
# Mali node
/dev/mali0 0666 system graphics
# Change ION driver permission
/dev/ion 0666 system graphics
# Change DMA_HEAP deice permission
# refs: /system/core/rootdir/uevent.rc
# /dev/dma_heap/system 0444 system system
/dev/dma_heap/mtk_mm 0444 system system
/dev/dma_heap/mtk_mm-uncached 0444 system system
/dev/dma_heap/mtk_svp_page-uncached 0444 system system
/dev/dma_heap/mtk_prot_page-uncached 0444 system system
/dev/dma_heap/mtk_svp_region 0444 system system
/dev/dma_heap/mtk_svp_region-aligned 0444 system system
/dev/dma_heap/mtk_prot_region 0444 system system
/dev/dma_heap/mtk_prot_region-aligned 0444 system system
/dev/dma_heap/mtk_2d_fr_region 0444 system system
/dev/dma_heap/mtk_2d_fr_region-aligned 0444 system system
/dev/dma_heap/mtk_wfd_region 0444 system system
/dev/dma_heap/mtk_wfd_region-aligned 0444 system system
/dev/dma_heap/mtk_wfd_page-uncached 0444 system system
#touch
/dev/touch 0660 root system
/dev/hotknot 0660 root system
#hang_detect
/dev/RT_Monitor 0660 system system
/dev/kick_powerkey 0660 system system
#MTK In-House TEE
/dev/ttyACM0 0660 radio radio
#sensor
/dev/hf_manager 0660 system system
#dynamic sensor
/dev/hidraw* 0660 system system
#charging control
/sys/devices/platform/charger cmd_charge_disable 0660 system system