initializing tree with aospdtgen just fr skeleton

This commit is contained in:
PROPGSP
2025-06-22 13:42:34 +05:30
commit da7bb29bf7
73 changed files with 14353 additions and 0 deletions

2
.gitattributes vendored Normal file
View File

@ -0,0 +1,2 @@
# Auto detect text files and perform LF normalization
* text=auto

8
Android.bp Normal file
View File

@ -0,0 +1,8 @@
//
// Copyright (C) 2025 The LineageOS Project
//
// SPDX-License-Identifier: Apache-2.0
//
soong_namespace {
}

11
Android.mk Normal file
View File

@ -0,0 +1,11 @@
#
# Copyright (C) 2025 The LineageOS Project
#
# SPDX-License-Identifier: Apache-2.0
#
LOCAL_PATH := $(call my-dir)
ifeq ($(TARGET_DEVICE),cancunf)
include $(call all-subdir-makefiles,$(LOCAL_PATH))
endif

13
AndroidProducts.mk Normal file
View File

@ -0,0 +1,13 @@
#
# Copyright (C) 2025 The LineageOS Project
#
# SPDX-License-Identifier: Apache-2.0
#
PRODUCT_MAKEFILES := \
$(LOCAL_DIR)/lineage_cancunf.mk
COMMON_LUNCH_CHOICES := \
lineage_cancunf-user \
lineage_cancunf-userdebug \
lineage_cancunf-eng

102
BoardConfig.mk Normal file
View File

@ -0,0 +1,102 @@
#
# Copyright (C) 2025 The LineageOS Project
#
# SPDX-License-Identifier: Apache-2.0
#
DEVICE_PATH := device/motorola/cancunf
# A/B
AB_OTA_UPDATER := true
AB_OTA_PARTITIONS +=
BOARD_USES_RECOVERY_AS_BOOT := true
# Architecture
TARGET_ARCH := arm64
TARGET_ARCH_VARIANT := armv8-a
TARGET_CPU_ABI := arm64-v8a
TARGET_CPU_ABI2 :=
TARGET_CPU_VARIANT := generic
TARGET_CPU_VARIANT_RUNTIME := cortex-a55
TARGET_2ND_ARCH := arm
TARGET_2ND_ARCH_VARIANT := armv7-a-neon
TARGET_2ND_CPU_ABI := armeabi-v7a
TARGET_2ND_CPU_ABI2 := armeabi
TARGET_2ND_CPU_VARIANT := generic
TARGET_2ND_CPU_VARIANT_RUNTIME := cortex-a55
# Bootloader
TARGET_BOOTLOADER_BOARD_NAME := cancunf
TARGET_NO_BOOTLOADER := true
# Display
TARGET_SCREEN_DENSITY := 400
# Kernel
BOARD_BOOTIMG_HEADER_VERSION := 4
BOARD_KERNEL_BASE := 0x3fff8000
BOARD_KERNEL_CMDLINE := bootopt=64S3,32N2,64N2 loglevel=4 initcall_debug=0
BOARD_KERNEL_PAGESIZE := 4096
BOARD_MKBOOTIMG_ARGS += --header_version $(BOARD_BOOTIMG_HEADER_VERSION)
BOARD_KERNEL_IMAGE_NAME := Image
BOARD_INCLUDE_DTB_IN_BOOTIMG := true
BOARD_KERNEL_SEPARATED_DTBO := true
TARGET_KERNEL_CONFIG := cancunf_defconfig
TARGET_KERNEL_SOURCE := kernel/motorola/cancunf
# Kernel - prebuilt
TARGET_FORCE_PREBUILT_KERNEL := true
ifeq ($(TARGET_FORCE_PREBUILT_KERNEL),true)
TARGET_PREBUILT_KERNEL := $(DEVICE_PATH)/prebuilts/kernel
TARGET_PREBUILT_DTB := $(DEVICE_PATH)/prebuilts/dtb.img
BOARD_MKBOOTIMG_ARGS += --dtb $(TARGET_PREBUILT_DTB)
BOARD_INCLUDE_DTB_IN_BOOTIMG :=
BOARD_PREBUILT_DTBOIMAGE := $(DEVICE_PATH)/prebuilts/dtbo.img
BOARD_KERNEL_SEPARATED_DTBO :=
endif
# Partitions
BOARD_FLASH_BLOCK_SIZE := 262144 # (BOARD_KERNEL_PAGESIZE * 64)
BOARD_BOOTIMAGE_PARTITION_SIZE := 67108864
BOARD_DTBOIMG_PARTITION_SIZE := 8388608
BOARD_VENDOR_BOOTIMAGE_PARTITION_SIZE := 67108864
BOARD_SUPER_PARTITION_SIZE := 9126805504 # TODO: Fix hardcoded value
BOARD_SUPER_PARTITION_GROUPS := motorola_dynamic_partitions
BOARD_MOTOROLA_DYNAMIC_PARTITIONS_PARTITION_LIST :=
BOARD_MOTOROLA_DYNAMIC_PARTITIONS_SIZE := 9122611200 # TODO: Fix hardcoded value
# Platform
TARGET_BOARD_PLATFORM := mt6855
# Properties
TARGET_SYSTEM_PROP += $(DEVICE_PATH)/system.prop
TARGET_VENDOR_PROP += $(DEVICE_PATH)/vendor.prop
TARGET_PRODUCT_PROP += $(DEVICE_PATH)/product.prop
TARGET_SYSTEM_EXT_PROP += $(DEVICE_PATH)/system_ext.prop
TARGET_ODM_PROP += $(DEVICE_PATH)/odm.prop
TARGET_ODM_DLKM_PROP += $(DEVICE_PATH)/odm_dlkm.prop
TARGET_VENDOR_DLKM_PROP += $(DEVICE_PATH)/vendor_dlkm.prop
# Recovery
TARGET_RECOVERY_FSTAB := $(DEVICE_PATH)/rootdir/etc/fstab.enablezramwb
TARGET_RECOVERY_PIXEL_FORMAT := BGRA_8888
TARGET_USERIMAGES_USE_EXT4 := true
TARGET_USERIMAGES_USE_F2FS := true
# Security patch level
VENDOR_SECURITY_PATCH := 2025-03-01
# Verified Boot
BOARD_AVB_ENABLE := true
BOARD_AVB_MAKE_VBMETA_IMAGE_ARGS += --flags 3
BOARD_AVB_VENDOR_BOOT_KEY_PATH := external/avb/test/data/testkey_rsa4096.pem
BOARD_AVB_VENDOR_BOOT_ALGORITHM := SHA256_RSA4096
BOARD_AVB_VENDOR_BOOT_ROLLBACK_INDEX := 1
BOARD_AVB_VENDOR_BOOT_ROLLBACK_INDEX_LOCATION := 1
# VINTF
DEVICE_MANIFEST_FILE += $(DEVICE_PATH)/manifest.xml
# Inherit the proprietary files
include vendor/motorola/cancunf/BoardConfigVendor.mk

14
README.md Normal file
View File

@ -0,0 +1,14 @@
# Android device tree for motorola moto g54 5G (cancunf)
```
#
# Copyright (C) 2025 The LineageOS Project
#
# SPDX-License-Identifier: Apache-2.0
#
```
# Motorola G64 (cancunf) Linage OS compaitable device tree
Linage OS compaitable device tree for Motorola G64 Cancunf made with dumpyara from Android 15 Build V1TDS35H.83-20-5-2
kernel => Stock

BIN
aospdtg.log Normal file

Binary file not shown.

110
device.mk Normal file
View File

@ -0,0 +1,110 @@
#
# Copyright (C) 2025 The LineageOS Project
#
# SPDX-License-Identifier: Apache-2.0
#
# Enable updating of APEXes
$(call inherit-product, $(SRC_TARGET_DIR)/product/updatable_apex.mk)
# A/B
$(call inherit-product, $(SRC_TARGET_DIR)/product/virtual_ab_ota.mk)
PRODUCT_PACKAGES += \
android.hardware.boot@1.2-impl \
android.hardware.boot@1.2-impl.recovery \
android.hardware.boot@1.2-service
PRODUCT_PACKAGES += \
update_engine \
update_engine_sideload \
update_verifier
PRODUCT_PACKAGES += \
checkpoint_gc \
otapreopt_script
# API levels
PRODUCT_SHIPPING_API_LEVEL := 33
# fastbootd
PRODUCT_PACKAGES += \
android.hardware.fastboot@1.1-impl-mock \
fastbootd
# Health
PRODUCT_PACKAGES += \
android.hardware.health@2.1-impl \
android.hardware.health@2.1-service
# Overlays
PRODUCT_ENFORCE_RRO_TARGETS := *
# Partitions
PRODUCT_USE_DYNAMIC_PARTITIONS := true
# Product characteristics
PRODUCT_CHARACTERISTICS := default
# Rootdir
PRODUCT_PACKAGES += \
apanic_annotate.sh \
apanic_copy.sh \
apanic_mtk.sh \
apanic_save.sh \
hardware_revisions.sh \
init.insmod.sh \
init.mmi.backup.trustlet.sh \
init.mmi.block_perm.sh \
init.mmi.boot.sh \
init.mmi.modem-rfs.sh \
init.mmi.modules.sh \
init.mmi.shutdown.sh \
init.mmi.touch.sh \
init.mmi.usb.sh \
init.oem.fingerprint2.sh \
init.oem.hw.sh \
pstore_annotate.sh \
vendor.mmi.cxp.sh \
PRODUCT_PACKAGES += \
fstab.enablezramwb \
apanic.rc \
factory_init.connectivity.common.rc \
factory_init.connectivity.rc \
factory_init.project.rc \
factory_init.rc \
init.aee.rc \
init.cgroup.rc \
init.connectivity.common.rc \
init.connectivity.rc \
init.mmi.backup.trustlet.rc \
init.mmi.chipset.rc \
init.mmi.overlay.rc \
init.mmi.rc \
init.mmi.tcmd.rc \
init.mmi.usb.configfs.rc \
init.modem.rc \
init.mt6855.rc \
init.mt6855.usb.rc \
init.mtkgki.rc \
init.project.rc \
init.sensor_2_0.rc \
init_connectivity.rc \
meta_init.connectivity.common.rc \
meta_init.connectivity.rc \
meta_init.modem.rc \
meta_init.project.rc \
meta_init.rc \
meta_init.vendor.rc \
multi_init.rc \
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/rootdir/etc/fstab.enablezramwb:$(TARGET_VENDOR_RAMDISK_OUT)/first_stage_ramdisk/fstab.enablezramwb
# Soong namespaces
PRODUCT_SOONG_NAMESPACES += \
$(LOCAL_PATH)
# Inherit the proprietary files
$(call inherit-product, vendor/motorola/cancunf/cancunf-vendor.mk)

61
extract-files.sh Normal file
View File

@ -0,0 +1,61 @@
#!/bin/bash
#
# Copyright (C) 2016 The CyanogenMod Project
# Copyright (C) 2017-2020 The LineageOS Project
#
# SPDX-License-Identifier: Apache-2.0
#
set -e
DEVICE=cancunf
VENDOR=motorola
# Load extract_utils and do some sanity checks
MY_DIR="${BASH_SOURCE%/*}"
if [[ ! -d "${MY_DIR}" ]]; then MY_DIR="${PWD}"; fi
ANDROID_ROOT="${MY_DIR}/../../.."
HELPER="${ANDROID_ROOT}/tools/extract-utils/extract_utils.sh"
if [ ! -f "${HELPER}" ]; then
echo "Unable to find helper script at ${HELPER}"
exit 1
fi
source "${HELPER}"
# Default to sanitizing the vendor folder before extraction
CLEAN_VENDOR=true
KANG=
SECTION=
while [ "${#}" -gt 0 ]; do
case "${1}" in
-n | --no-cleanup )
CLEAN_VENDOR=false
;;
-k | --kang )
KANG="--kang"
;;
-s | --section )
SECTION="${2}"; shift
CLEAN_VENDOR=false
;;
* )
SRC="${1}"
;;
esac
shift
done
if [ -z "${SRC}" ]; then
SRC="adb"
fi
# Initialize the helper
setup_vendor "${DEVICE}" "${VENDOR}" "${ANDROID_ROOT}" false "${CLEAN_VENDOR}"
extract "${MY_DIR}/proprietary-files.txt" "${SRC}" "${KANG}" --section "${SECTION}"
"${MY_DIR}/setup-makefiles.sh"

28
lineage_cancunf.mk Normal file
View File

@ -0,0 +1,28 @@
#
# Copyright (C) 2025 The LineageOS Project
#
# SPDX-License-Identifier: Apache-2.0
#
# Inherit from those products. Most specific first.
$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk)
$(call inherit-product, $(SRC_TARGET_DIR)/product/full_base_telephony.mk)
# Inherit some common Lineage stuff.
$(call inherit-product, vendor/lineage/config/common_full_phone.mk)
# Inherit from cancunf device
$(call inherit-product, device/motorola/cancunf/device.mk)
PRODUCT_DEVICE := cancunf
PRODUCT_NAME := lineage_cancunf
PRODUCT_BRAND := motorola
PRODUCT_MODEL := moto g54 5G
PRODUCT_MANUFACTURER := motorola
PRODUCT_GMS_CLIENTID_BASE := android-motorola
PRODUCT_BUILD_PROP_OVERRIDES += \
PRIVATE_BUILD_DESC="cancunf_g_sys-user 15 V1TDS35M.83-20-5-2 6562e release-keys"
BUILD_FINGERPRINT := motorola/cancunf_g_sys/cancunf:15/V1TDS35M.83-20-5-2/6562e:user/release-keys

278
manifest.xml Normal file
View File

@ -0,0 +1,278 @@
<manifest version="4.0" type="device" target-level="6">
<hal format="hidl">
<name>android.hardware.audio</name>
<transport>hwbinder</transport>
<fqname>@7.0::IDevicesFactory/default</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.audio.effect</name>
<transport>hwbinder</transport>
<fqname>@7.0::IEffectsFactory/default</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.bluetooth</name>
<transport>hwbinder</transport>
<fqname>@1.1::IBluetoothHci/default</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.bluetooth.audio</name>
<transport>hwbinder</transport>
<fqname>@2.1::IBluetoothAudioProvidersFactory/default</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.boot</name>
<transport>hwbinder</transport>
<fqname>@1.0::IBootControl/default</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.gatekeeper</name>
<transport>hwbinder</transport>
<fqname>@1.0::IGatekeeper/default</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.graphics.allocator</name>
<transport>hwbinder</transport>
<fqname>@4.0::IAllocator/default</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.graphics.composer</name>
<transport>hwbinder</transport>
<fqname>@2.1::IComposer/default</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.graphics.mapper</name>
<transport arch="32+64">passthrough</transport>
<fqname>@4.0::IMapper/default</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.media.omx</name>
<transport>hwbinder</transport>
<fqname>@1.0::IOmx/default</fqname>
<fqname>@1.0::IOmxStore/default</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.radio</name>
<transport>hwbinder</transport>
<fqname>@1.2::IRadio/em1</fqname>
<fqname>@1.2::IRadio/em2</fqname>
<fqname>@1.2::IRadio/imsAospSlot1</fqname>
<fqname>@1.2::IRadio/imsAospSlot2</fqname>
<fqname>@1.2::IRadio/se1</fqname>
<fqname>@1.2::IRadio/se2</fqname>
<fqname>@1.2::IRadio/slot1</fqname>
<fqname>@1.2::IRadio/slot2</fqname>
<fqname>@1.2::ISap/slot1</fqname>
<fqname>@1.2::ISap/slot2</fqname>
<fqname>@1.6::IRadio/em1</fqname>
<fqname>@1.6::IRadio/em2</fqname>
<fqname>@1.6::IRadio/imsAospSlot1</fqname>
<fqname>@1.6::IRadio/imsAospSlot2</fqname>
<fqname>@1.6::IRadio/se1</fqname>
<fqname>@1.6::IRadio/se2</fqname>
<fqname>@1.6::IRadio/slot1</fqname>
<fqname>@1.6::IRadio/slot2</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.radio.config</name>
<transport>hwbinder</transport>
<fqname>@1.3::IRadioConfig/default</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.renderscript</name>
<transport arch="32+64">passthrough</transport>
<fqname>@1.0::IDevice/default</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.secure_element</name>
<transport>hwbinder</transport>
<fqname>@1.2::ISecureElement/SIM1</fqname>
<fqname>@1.2::ISecureElement/SIM2</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.sensors</name>
<transport>hwbinder</transport>
<fqname>@2.0::ISensors/default</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.soundtrigger</name>
<transport>hwbinder</transport>
<fqname>@2.3::ISoundTriggerHw/default</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.tetheroffload.config</name>
<transport>hwbinder</transport>
<fqname>@1.0::IOffloadConfig/default</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.tetheroffload.control</name>
<transport>hwbinder</transport>
<fqname>@1.1::IOffloadControl/default</fqname>
</hal>
<hal format="hidl">
<name>android.hardware.thermal</name>
<transport>hwbinder</transport>
<fqname>@1.0::IThermal/default</fqname>
<fqname>@2.0::IThermal/default</fqname>
</hal>
<hal format="hidl">
<name>com.motorola.hardware.display.touch</name>
<transport>hwbinder</transport>
<fqname>@1.2::IMotTouch/default</fqname>
</hal>
<hal format="hidl">
<name>motorola.hardware.health</name>
<transport>hwbinder</transport>
<fqname>@2.0::IMotHealth/default</fqname>
</hal>
<hal format="hidl">
<name>motorola.hardware.health.storage</name>
<transport>hwbinder</transport>
<fqname>@1.0::IMotStorage/default</fqname>
</hal>
<hal format="hidl">
<name>motorola.hardware.sensorscalibrate</name>
<transport>hwbinder</transport>
<fqname>@1.0::ISensorsCalibrate/default</fqname>
</hal>
<hal format="hidl">
<name>motorola.hardware.wifi.hostapd</name>
<transport>hwbinder</transport>
<fqname>@1.0::IHostapdMot/default</fqname>
</hal>
<hal format="hidl">
<name>motorola.hardware.wifi.supplicant</name>
<transport>hwbinder</transport>
<fqname>@1.0::ISupplicantMot/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.mediatek.hardware.apmonitor</name>
<transport>hwbinder</transport>
<fqname>@2.0::IApmService/apm_hidl_service</fqname>
</hal>
<hal format="hidl">
<name>vendor.mediatek.hardware.atci</name>
<transport>hwbinder</transport>
<fqname>@1.0::IAtcid/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.mediatek.hardware.bluetooth.audio</name>
<transport>hwbinder</transport>
<fqname>@2.2::IBluetoothAudioProvidersFactory/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.mediatek.hardware.camera.atms</name>
<transport>hwbinder</transport>
<fqname>@1.0::IATMs/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.mediatek.hardware.camera.bgservice</name>
<transport>hwbinder</transport>
<fqname>@1.1::IBGService/internal/0</fqname>
</hal>
<hal format="hidl">
<name>vendor.mediatek.hardware.camera.isphal</name>
<transport>hwbinder</transport>
<fqname>@1.1::IISPModule/internal/0</fqname>
</hal>
<hal format="hidl">
<name>vendor.mediatek.hardware.composer_ext</name>
<transport>hwbinder</transport>
<fqname>@1.0::IComposerExt/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.mediatek.hardware.dmc</name>
<transport>hwbinder</transport>
<fqname>@1.2::IDmcService/dmc_hidl_service</fqname>
</hal>
<hal format="hidl">
<name>vendor.mediatek.hardware.keymaster_attestation</name>
<transport>hwbinder</transport>
<fqname>@1.1::IKeymasterDevice/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.mediatek.hardware.mmagent</name>
<transport>hwbinder</transport>
<fqname>@1.1::IMMAgent/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.mediatek.hardware.mms</name>
<transport>hwbinder</transport>
<fqname>@1.6::IMms/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.mediatek.hardware.mtkpower</name>
<transport>hwbinder</transport>
<fqname>@1.2::IMtkPerf/default</fqname>
<fqname>@1.2::IMtkPower/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.mediatek.hardware.mtkradioex</name>
<transport>hwbinder</transport>
<fqname>@3.0::IMtkRadioEx/imsSlot1</fqname>
<fqname>@3.0::IMtkRadioEx/imsSlot2</fqname>
<fqname>@3.0::IMtkRadioEx/mtkAssist1</fqname>
<fqname>@3.0::IMtkRadioEx/mtkAssist2</fqname>
<fqname>@3.0::IMtkRadioEx/mtkCap1</fqname>
<fqname>@3.0::IMtkRadioEx/mtkCap2</fqname>
<fqname>@3.0::IMtkRadioEx/mtkEm1</fqname>
<fqname>@3.0::IMtkRadioEx/mtkEm2</fqname>
<fqname>@3.0::IMtkRadioEx/mtkRcs1</fqname>
<fqname>@3.0::IMtkRadioEx/mtkRcs2</fqname>
<fqname>@3.0::IMtkRadioEx/mtkRsu1</fqname>
<fqname>@3.0::IMtkRadioEx/mtkRsu2</fqname>
<fqname>@3.0::IMtkRadioEx/mtkSe1</fqname>
<fqname>@3.0::IMtkRadioEx/mtkSe2</fqname>
<fqname>@3.0::IMtkRadioEx/mtkSlot1</fqname>
<fqname>@3.0::IMtkRadioEx/mtkSlot2</fqname>
<fqname>@3.0::IMtkRadioEx/mtkSmartRatSwitch1</fqname>
<fqname>@3.0::IMtkRadioEx/mtkSmartRatSwitch2</fqname>
</hal>
<hal format="hidl">
<name>vendor.mediatek.hardware.netdagent</name>
<transport>hwbinder</transport>
<fqname>@1.0::INetdagent/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.mediatek.hardware.nvram</name>
<transport>hwbinder</transport>
<fqname>@1.1::INvram/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.mediatek.hardware.nwk_opt</name>
<transport>hwbinder</transport>
<fqname>@1.0::INwkOpt/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.mediatek.hardware.pq</name>
<transport>hwbinder</transport>
<fqname>@2.15::IPictureQuality/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.mediatek.hardware.radio_op</name>
<transport>hwbinder</transport>
<fqname>@3.0::IRadioOp/OpImsRILd1</fqname>
<fqname>@3.0::IRadioOp/OpImsRILd2</fqname>
<fqname>@3.0::IRadioOp/slot1</fqname>
<fqname>@3.0::IRadioOp/slot2</fqname>
</hal>
<hal format="hidl">
<name>vendor.mediatek.hardware.videotelephony</name>
<transport>hwbinder</transport>
<fqname>@1.0::IVideoTelephony/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.trustonic.alps.alps_device</name>
<transport>hwbinder</transport>
<fqname>@1.1::IAlps/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.trustonic.tee</name>
<transport>hwbinder</transport>
<fqname>@1.1::ITee/default</fqname>
</hal>
<hal format="hidl">
<name>vendor.trustonic.tee.tui</name>
<transport>hwbinder</transport>
<fqname>@1.0::ITui/default</fqname>
</hal>
</manifest>

1
odm.prop Normal file
View File

@ -0,0 +1 @@
ro.vendor.qti.va_odm.support=1

1
odm_dlkm.prop Normal file
View File

@ -0,0 +1 @@

BIN
prebuilts/dtb.img Normal file

Binary file not shown.

BIN
prebuilts/dtbo.img Normal file

Binary file not shown.

BIN
prebuilts/kernel Normal file

Binary file not shown.

46
product.prop Normal file
View File

@ -0,0 +1,46 @@
bluetooth.profile.hid.device.enabled=true
esim.enable_esim_system_ui_by_default=true
masterclear.allow_retain_esim_profiles_after_fdr=true
persist.mot_bt.aptx_cert=true
persist.rcs.supported=0
persist.sys.battery_care_dynamic_support=true
persist.sys.carrier_config_controller_support=true
persist.vendor.mtk_rcs_ua_support=0
persist.vendor.mtk_uce_support=0
persist.vendor.vt.RTPInfo=1
persist.vendor.vt.supported=1
persist.wm.extensions.enabled=true
remote_provisioning.hostname=remoteprovisioning.googleapis.com
ril.subscription.types=RUIM
ro.boot.vendor.overlay.theme=com.android.internal.systemui.navbar.threebutton
ro.com.google.gmsversion=15_202411
ro.com.google.ime.system_lm_dir=/product/usr/share/ime/google/d3_lms/
ro.config.alarm_alert=Helium.ogg
ro.config.notification_sound=Hello.ogg
ro.config.ringtone=Moto.ogg
ro.config.ringtone_2=Moto.ogg
ro.config.support_moto_idle_args_override=true
ro.config.wallpaper=product/media/wallpapers/default_moto_wallpaper.jpg
ro.dalvik.vm.enable_uffd_gc=true
ro.gwfcactivation.disabled_carriers=1187,1779,2119,2120,10000,10013,10021,10022,2525,2526,2527,10029,2024,2025,2027,2028,2029,2031,2534,2538,2539,10012,10028,1492,28,1839
ro.lenovo.single_hand=1
ro.mot.build.customerid=global
ro.mot.data_stall.lowest_time=0
ro.mot.ota.reserved.space=1024
ro.opa.eligible_device=true
ro.postinstall.fstab.prefix=/product
ro.product.ab_ota_partitions=boot,product,system,system_ext,vendor
ro.product.build.16k_page.enabled=false
ro.product.build.no_bionic_page_size_macro=true
ro.product.cpu.pagesize.max=4096
ro.product.gms_premier_tier=true
ro.product.hid_ui=true
ro.product.property_source_order=product,odm,vendor,system_ext,system
ro.setupwizard.rotation_locked=true
ro.support_one_handed_mode=true
ro.surface_flinger.enable_frame_rate_override=true
ro.telephony.default_network=26,26
ro.telephony.esim_slot_id=1
ro.vendor.audio.call.handsfree.mic.builtin=1
ro.vendor.radio.imei.sv=25
setupwizard.theme=glif_v3_light

4026
proprietary-files.txt Normal file

File diff suppressed because it is too large Load Diff

325
rootdir/Android.bp Normal file
View File

@ -0,0 +1,325 @@
//
// Copyright (C) 2025 The LineageOS Project
//
// SPDX-License-Identifier: Apache-2.0
//
// Init scripts
sh_binary {
name: "apanic_annotate.sh",
src: "bin/apanic_annotate.sh",
vendor: true,
}
sh_binary {
name: "apanic_copy.sh",
src: "bin/apanic_copy.sh",
vendor: true,
}
sh_binary {
name: "apanic_mtk.sh",
src: "bin/apanic_mtk.sh",
vendor: true,
}
sh_binary {
name: "apanic_save.sh",
src: "bin/apanic_save.sh",
vendor: true,
}
sh_binary {
name: "hardware_revisions.sh",
src: "bin/hardware_revisions.sh",
vendor: true,
}
sh_binary {
name: "init.insmod.sh",
src: "bin/init.insmod.sh",
vendor: true,
}
sh_binary {
name: "init.mmi.backup.trustlet.sh",
src: "bin/init.mmi.backup.trustlet.sh",
vendor: true,
}
sh_binary {
name: "init.mmi.block_perm.sh",
src: "bin/init.mmi.block_perm.sh",
vendor: true,
}
sh_binary {
name: "init.mmi.boot.sh",
src: "bin/init.mmi.boot.sh",
vendor: true,
}
sh_binary {
name: "init.mmi.modem-rfs.sh",
src: "bin/init.mmi.modem-rfs.sh",
vendor: true,
}
sh_binary {
name: "init.mmi.modules.sh",
src: "bin/init.mmi.modules.sh",
vendor: true,
}
sh_binary {
name: "init.mmi.shutdown.sh",
src: "bin/init.mmi.shutdown.sh",
vendor: true,
}
sh_binary {
name: "init.mmi.touch.sh",
src: "bin/init.mmi.touch.sh",
vendor: true,
}
sh_binary {
name: "init.mmi.usb.sh",
src: "bin/init.mmi.usb.sh",
vendor: true,
}
sh_binary {
name: "init.oem.fingerprint2.sh",
src: "bin/init.oem.fingerprint2.sh",
vendor: true,
}
sh_binary {
name: "init.oem.hw.sh",
src: "bin/init.oem.hw.sh",
vendor: true,
}
sh_binary {
name: "pstore_annotate.sh",
src: "bin/pstore_annotate.sh",
vendor: true,
}
sh_binary {
name: "vendor.mmi.cxp.sh",
src: "bin/vendor.mmi.cxp.sh",
vendor: true,
}
// Init configuration files
prebuilt_etc {
name: "apanic.rc",
src: "etc/apanic.rc",
sub_dir: "init/hw",
vendor: true,
}
prebuilt_etc {
name: "factory_init.connectivity.common.rc",
src: "etc/factory_init.connectivity.common.rc",
sub_dir: "init/hw",
vendor: true,
}
prebuilt_etc {
name: "factory_init.connectivity.rc",
src: "etc/factory_init.connectivity.rc",
sub_dir: "init/hw",
vendor: true,
}
prebuilt_etc {
name: "factory_init.project.rc",
src: "etc/factory_init.project.rc",
sub_dir: "init/hw",
vendor: true,
}
prebuilt_etc {
name: "factory_init.rc",
src: "etc/factory_init.rc",
sub_dir: "init/hw",
vendor: true,
}
prebuilt_etc {
name: "init.aee.rc",
src: "etc/init.aee.rc",
sub_dir: "init/hw",
vendor: true,
}
prebuilt_etc {
name: "init.cgroup.rc",
src: "etc/init.cgroup.rc",
sub_dir: "init/hw",
vendor: true,
}
prebuilt_etc {
name: "init.connectivity.common.rc",
src: "etc/init.connectivity.common.rc",
sub_dir: "init/hw",
vendor: true,
}
prebuilt_etc {
name: "init.connectivity.rc",
src: "etc/init.connectivity.rc",
sub_dir: "init/hw",
vendor: true,
}
prebuilt_etc {
name: "init.mmi.backup.trustlet.rc",
src: "etc/init.mmi.backup.trustlet.rc",
sub_dir: "init/hw",
vendor: true,
}
prebuilt_etc {
name: "init.mmi.chipset.rc",
src: "etc/init.mmi.chipset.rc",
sub_dir: "init/hw",
vendor: true,
}
prebuilt_etc {
name: "init.mmi.overlay.rc",
src: "etc/init.mmi.overlay.rc",
sub_dir: "init/hw",
vendor: true,
}
prebuilt_etc {
name: "init.mmi.rc",
src: "etc/init.mmi.rc",
sub_dir: "init/hw",
vendor: true,
}
prebuilt_etc {
name: "init.mmi.tcmd.rc",
src: "etc/init.mmi.tcmd.rc",
sub_dir: "init/hw",
vendor: true,
}
prebuilt_etc {
name: "init.mmi.usb.configfs.rc",
src: "etc/init.mmi.usb.configfs.rc",
sub_dir: "init/hw",
vendor: true,
}
prebuilt_etc {
name: "init.modem.rc",
src: "etc/init.modem.rc",
sub_dir: "init/hw",
vendor: true,
}
prebuilt_etc {
name: "init.mt6855.rc",
src: "etc/init.mt6855.rc",
sub_dir: "init/hw",
vendor: true,
}
prebuilt_etc {
name: "init.mt6855.usb.rc",
src: "etc/init.mt6855.usb.rc",
sub_dir: "init/hw",
vendor: true,
}
prebuilt_etc {
name: "init.mtkgki.rc",
src: "etc/init.mtkgki.rc",
sub_dir: "init/hw",
vendor: true,
}
prebuilt_etc {
name: "init.project.rc",
src: "etc/init.project.rc",
sub_dir: "init/hw",
vendor: true,
}
prebuilt_etc {
name: "init.sensor_2_0.rc",
src: "etc/init.sensor_2_0.rc",
sub_dir: "init/hw",
vendor: true,
}
prebuilt_etc {
name: "init_connectivity.rc",
src: "etc/init_connectivity.rc",
sub_dir: "init/hw",
vendor: true,
}
prebuilt_etc {
name: "meta_init.connectivity.common.rc",
src: "etc/meta_init.connectivity.common.rc",
sub_dir: "init/hw",
vendor: true,
}
prebuilt_etc {
name: "meta_init.connectivity.rc",
src: "etc/meta_init.connectivity.rc",
sub_dir: "init/hw",
vendor: true,
}
prebuilt_etc {
name: "meta_init.modem.rc",
src: "etc/meta_init.modem.rc",
sub_dir: "init/hw",
vendor: true,
}
prebuilt_etc {
name: "meta_init.project.rc",
src: "etc/meta_init.project.rc",
sub_dir: "init/hw",
vendor: true,
}
prebuilt_etc {
name: "meta_init.rc",
src: "etc/meta_init.rc",
sub_dir: "init/hw",
vendor: true,
}
prebuilt_etc {
name: "meta_init.vendor.rc",
src: "etc/meta_init.vendor.rc",
sub_dir: "init/hw",
vendor: true,
}
prebuilt_etc {
name: "multi_init.rc",
src: "etc/multi_init.rc",
sub_dir: "init/hw",
vendor: true,
}
// fstab
prebuilt_etc {
name: "fstab.enablezramwb",
src: "etc/fstab.enablezramwb",
vendor: true,
}

9
rootdir/Android.mk Normal file
View File

@ -0,0 +1,9 @@
#
# Copyright (C) 2025 The LineageOS Project
#
# SPDX-License-Identifier: Apache-2.0
#
LOCAL_PATH := $(call my-dir)
# Recovery init configuration files

View File

@ -0,0 +1,53 @@
#!/vendor/bin/sh
#
# Copyright (c) 2012, Motorola Mobility LLC, All rights reserved.
#
# The purpose of this script is to annotate panic dumps with useful information
# about the context of the event.
#
export PATH=/vendor/bin:/system/bin:$PATH
annotate()
{
VAL=`$2`
[ "$VAL" ] || return
echo "$1: $VAL" > /sys/fs/pstore/annotate-ramoops
}
case $1 in
build*)
annotate "Build number" "getprop ro.build.display.id"
annotate "Build config" "getprop ro.build.config.version"
annotate "Kernel version" "cat /proc/sys/kernel/osrelease"
;;
baseband*)
annotate "Baseband version" "getprop gsm.version.baseband"
;;
esac
# check for pstore files and copy them to the /data/dontpanic
if [ -e /sys/fs/pstore/console-ramoops ]
then
cp /sys/fs/pstore/console-ramoops /data/vendor/dontpanic/last_kmsg
chown root:log /data/vendor/dontpanic/last_kmsg
chmod 0640 /data/vendor/dontpanic/last_kmsg
if [ -e /sys/fs/pstore/annotate-ramoops ]
then
cat /sys/fs/pstore/annotate-ramoops >> /data/vendor/dontpanic/last_kmsg
fi
fi
if [ -e /sys/fs/pstore/dmesg-ramoops-0 ]
then
cp /sys/fs/pstore/dmesg-ramoops-0 /data/vendor/dontpanic/apanic_console
chown root:log /data/vendor/dontpanic/apanic_console
chmod 0640 /data/vendor/dontpanic/apanic_console
if [ -e /sys/fs/pstore/annotate-ramoops ]
then
cat /sys/fs/pstore/annotate-ramoops >> /data/vendor/dontpanic/apanic_console
fi
rm /sys/fs/pstore/dmesg-ramoops-0
fi
kpgather

View File

@ -0,0 +1,47 @@
#!/vendor/bin/sh
#
# Copyright (c) 2015, Motorola Mobility LLC, All rights reserved.
#
# The purpose of this script is to read panic dumps to /data and dropbox
# for issue report
#
export PATH=/vendor/bin:/system/bin:$PATH
while getopts i op;
do
case $op in
i) ignore_apanic_logs=1;;
esac
done
if [ -z "$ignore_apanic_logs" ]; then
# read log from "kpan" partition to /data/dontpanic
kpreadwrite r
# write panic/wdt report to dropbox
kpgather
else
apanic_logcopy=$(getprop 'ro.vendor.bootreason')
if [ "$apanic_logcopy" == "coldboot" ]; then
return 0
fi
fi
if [ -e /dev/block/bootdevice/by-name/logs ] ; then
BL_logs_parti=/dev/block/bootdevice/by-name/logs
elif [ -e /dev/block/bootdevice/by-name/logfs ] ; then
BL_logs_parti=/dev/block/bootdevice/by-name/logfs
elif [ -e /dev/block/by-name/logs ] ; then
BL_logs_parti=/dev/block/by-name/logs
elif [ -e /dev/block/by-name/logfs ] ; then
BL_logs_parti=/dev/block/by-name/logfs
else
BL_logs_parti=
fi
if [ $BL_logs_parti ]
then
cat $BL_logs_parti > /data/vendor/dontpanic/BL_logs
chown root:log /data/vendor/dontpanic/BL_logs
chmod 0640 /data/vendor/dontpanic/BL_logs
fi

102
rootdir/bin/apanic_mtk.sh Normal file
View File

@ -0,0 +1,102 @@
#!/vendor/bin/sh
#
# Copyright (c) 2019, Motorola Mobility LLC, All rights reserved.
#
# The purpose of this script is to annotate panic dumps with useful information
# about the context of the event.
#
export PATH=/vendor/bin:/system/bin:$PATH
trigger=`getprop ro.vendor.boot.apanic.reason`
trigger_prop=`getprop ro.vendor.boot.apanic.prop`
# script already running by boot reason, exit
if [[ $trigger_prop && $trigger == "boot" ]]; then
exit 0
fi
# run script by db property set and boot reason is not panic
if [[ $trigger_prop && $trigger == "prop" ]]; then
aee_trigger=`getprop vendor.debug.mtk.aeev.db`
kp_type=("KE" "HWT" "HW_Reboot" "ManualMRDump" "HANG")
kp_found=0
# check panic type
if [ ! "$aee_trigger" ]; then
exit 0
fi
for va in ${kp_type[@]}; do
has_str=$(echo $aee_trigger | grep "${va}")
if [[ "$has_str" != "" ]]; then
kp_found=1
break
fi
done
if [ $kp_found == 0 ]; then
exit 0
fi
fi
if [ ! -d /data/vendor/dontpanic ]
then
mkdir /data/vendor/dontpanic
fi
# check for pstore files and copy them to the /data/dontpanic
if [ -e /sys/fs/pstore/console-ramoops* ]
then
cp /sys/fs/pstore/console-ramoops* /data/vendor/dontpanic/last_kmsg
chown root:log /data/vendor/dontpanic/last_kmsg
chmod 0640 /data/vendor/dontpanic/last_kmsg
if [ -e /sys/fs/pstore/annotate-ramoops ]
then
cat /sys/fs/pstore/annotate-ramoops >> /data/vendor/dontpanic/last_kmsg
fi
cat /proc/bootinfo >> /data/vendor/dontpanic/last_kmsg
cat /proc/version >> /data/vendor/dontpanic/last_kmsg
#storage
s_path="/sys/storage/"
storage="STORAGE: Type: "`cat ${s_path}type`", Vendor: "`cat ${s_path}vendor`
storage=$storage", Size: "`cat ${s_path}size`", Model: "`cat ${s_path}model`", FW: "`cat ${s_path}fw`
echo $storage >> /data/vendor/dontpanic/last_kmsg
#ram
r_path="/sys/ram/"
ram="RAM: Vendor: "`cat ${r_path}info`", MR5: "`cat ${r_path}mr5`
ram=$ram", MR6: "`cat ${r_path}mr6`", MR7: "`cat ${r_path}mr7`", MR8: "`cat ${r_path}mr8`
echo $ram >> /data/vendor/dontpanic/last_kmsg
fi
if [ -e /sys/fs/pstore/dmesg-ramoops-0 ]
then
cp /sys/fs/pstore/dmesg-ramoops-0 /data/vendor/dontpanic/apanic_console
chown root:log /data/vendor/dontpanic/apanic_console
chmod 0640 /data/vendor/dontpanic/apanic_console
if [ -e /sys/fs/pstore/annotate-ramoops ]
then
cat /sys/fs/pstore/annotate-ramoops >> /data/vendor/dontpanic/apanic_console
fi
fi
kpgather
if [ -e /dev/block/by-name/logs ] ; then
BL_logs_parti=/dev/block/by-name/logs
elif [ -e /dev/block/by-name/logfs ] ; then
BL_logs_parti=/dev/block/by-name/logfs
else
BL_logs_parti=
fi
if [ $BL_logs_parti ]
then
cat $BL_logs_parti > /data/vendor/dontpanic/BL_logs
chown root:log /data/vendor/dontpanic/BL_logs
chmod 0640 /data/vendor/dontpanic/BL_logs
fi

View File

@ -0,0 +1,12 @@
#!/vendor/bin/sh
#
# Copyright (c) 2016, Motorola Mobility LLC, All rights reserved.
#
# The purpose of this script is to get panic dump from pstore fs, and then
# save to emmc, and then reboot device.
#
export PATH=/vendor/bin:/system/bin:$PATH
# write log from pstore to "kpan" partition
kpreadwrite w

View File

@ -0,0 +1,408 @@
#!/vendor/bin/sh
#
# Copyright (c) 2013-2016, Motorola LLC All rights reserved.
#
# The purpose of this script is to compile information about the hardware
# versions of various devices on each unit. This is useful when searching
# through reported issues for correlations with certain hardware revisions.
# The information is collected from various locations in proc and sysfs (some
# of which are product-specific) and compiled into small, single-line text
# files in the userdata partition, one for each type of device. The format of
# these lines are as follows:
#
# MOTHREV-vX
# hw_name=XXXXX
# vendor_id=XXXXX
# hw_rev=XXXXX
# date=XXXXX
# lot_code=XXXXX
# fw_rev=XXXXX
# size=XXXXMB
# (components may also add additional fields to the ones above)
#
# The extact format of each field will be device-specific, but should be
# consistent across a particular hardware platform. Note that each revision
# data file is rewritten every time this script is called. This ensures that
# any future format changes to the revision files are picked up.
#
# While the method used to read the information should be consistent on a given
# platform, the specific path to a device's information may vary between
# products. The hardware_revisions.conf file provides a way to adjust those
# paths from the default.
#
export PATH=/vendor/bin:$PATH
scriptname=${0##*/}
notice()
{
echo "$*"
echo "$scriptname: $*" > /dev/kmsg
}
# Output destination and permissions
OUT_PATH=/data/vendor/hardware_revisions
OUT_USR=system
OUT_GRP=system
OUT_PERM=0644
OUT_PATH_PERM=0755
# Default paths to hardware information
PATH_RAM=/sys/ram
PATH_NVM=/sys/block/mmcblk0/device
PATH_STORAGE=/sys/storage
PATH_SDCARD=/sys/block/mmcblk1/device
# PATH_TOUCH_CLASS="/sys/class/touchscreen/"`cd /sys/class/touchscreen && ls */ic_ver | sed 's/ic_ver//g'`
PATH_TOUCH_MMI="/sys/class/touchscreen/"
PATH_TOUCH="/sys/bus/i2c/drivers/"`cd /sys/bus/i2c/drivers && ls */?-*/ic_ver | sed 's/ic_ver//g'`
PATH_TOUCH_SPI="/sys/bus/spi/drivers/"`cd /sys/bus/spi/drivers && ls */*.?/ic_ver | sed 's/ic_ver//g'`
PATH_DISPLAY=/sys/class/graphics/fb0
PATH_DISPLAY_DRM=/sys/class/drm/card0-DSI-1
PATH_DISPLAY_DRM_CLI=/sys/class/drm/card0-DSI-2
PATH_DISPLAY_DEVICETREE=/sys/firmware/devicetree/base/chosen
PATH_PMIC=/sys/hardware_revisions/pmic
# Product-specific overrides
[ -e /vendor/etc/hardware_revisions.conf ] && . /vendor/etc/hardware_revisions.conf
#
# Clear out all revision data in this directory. If in the future we decide
# to remove a component, we want to make sure any old files are not present.
rm /data/vendor/hardware_revisions/*
#
# Append one piece of revision data to a given file. If a value is blank,
# then nothing will be written.
#
# $1 - tag
# $2 - value
# $3 - file to write
write_one_revision_data()
{
if [ -n "${2}" ]; then
VALUE="${2}"
echo "${1}=${VALUE}" >> ${3}
fi
}
#
# Generate the common data contained for
# all hardware peripherals
#
# $1 - file to write to
# $2 - name
# $3 - vendor ID
# $4 - hardware revision
# $5 - date
# $6 - lot code
# $7 - firmware revision
create_common_revision_data()
{
FILE="${1}"
echo "MOTHREV-v2" > ${FILE}
write_one_revision_data "hw_name" "${2}" ${FILE}
write_one_revision_data "vendor_id" "${3}" ${FILE}
write_one_revision_data "hw_rev" "${4}" ${FILE}
write_one_revision_data "date" "${5}" ${FILE}
write_one_revision_data "lot_code" "${6}" ${FILE}
write_one_revision_data "fw_rev" "${7}" ${FILE}
}
create_secondary_revision_data()
{
FILE="${1}"
write_one_revision_data "hw_name_s" "${2}" ${FILE}
write_one_revision_data "vendor_id_s" "${3}" ${FILE}
write_one_revision_data "hw_rev_s" "${4}" ${FILE}
write_one_revision_data "date_s" "${5}" ${FILE}
write_one_revision_data "lot_code_s" "${6}" ${FILE}
write_one_revision_data "fw_rev_s" "${7}" ${FILE}
}
create_multiple_revision_data()
{
local primary=0
if [ $1 -eq $primary ]
then
create_common_revision_data "${FILE}" "${HNAME}" "${VEND}" "${HREV}" "${DATE}" "${LOT_CODE}" "${FREV}"
else
create_secondary_revision_data "${FILE}" "${HNAME}" "${VEND}" "${HREV}" "${DATE}" "${LOT_CODE}" "${FREV}"
fi
}
#
# Applies the appropriate file permissions to the
# hardware revision data file.
#
# $1 - file to write to
apply_revision_data_perms()
{
chown ${OUT_USR}.${OUT_GRP} "${1}"
chmod ${OUT_PERM} "${1}"
}
mkdir -p ${OUT_PATH}
chown ${OUT_USR}.${OUT_GRP} ${OUT_PATH}
chmod ${OUT_PATH_PERM} ${OUT_PATH}
#
# Compile ram
#
FILE="${OUT_PATH}/ram"
HNAME=
VEND=
HREV=
DATE=
FREV=
LOT_CODE=
INFO=
SIZE=
if [ -d "${PATH_RAM}" ] ; then
HNAME=`cat ${PATH_RAM}/type`
VEND=`cat ${PATH_RAM}/info`
VEND="${VEND%%:*:*}"
INFO="$(cat ${PATH_RAM}/mr5),$(cat ${PATH_RAM}/mr6),$(cat ${PATH_RAM}/mr7),\
$(cat ${PATH_RAM}/mr8)"
SIZE=`cat ${PATH_RAM}/size`
fi
create_common_revision_data "${FILE}" "${HNAME}" "${VEND}" "" "" "" ""
write_one_revision_data "config_info" "${INFO}" "${FILE}"
write_one_revision_data "size" "${SIZE}" "${FILE}"
apply_revision_data_perms "${FILE}"
#
# Compile nvm
#
FILE="${OUT_PATH}/nvm"
HNAME=
VEND=
HREV=
DATE=
FREV=
LOT_CODE=
SIZE=
if [ -d "${PATH_NVM}" ] ; then
HNAME=`cat ${PATH_NVM}/type`
if [ -d "${PATH_STORAGE}" ] ; then
VEND=`cat ${PATH_STORAGE}/vendor`
SIZE=$((1024 * `cat ${PATH_STORAGE}/size | sed 's/[^0-9]//g'`))
else
VEND=`cat ${PATH_NVM}/manfid`
SIZE=$((1024 * `getprop ro.boot.storage | sed 's/[^0-9]//g'`))
fi
HREV=`cat ${PATH_NVM}/name`
DATE=`cat ${PATH_NVM}/date`
if [ -e ${PATH_NVM}/device_version -a -e ${PATH_NVM}/firmware_version ] ; then
FREV="$(cat ${PATH_NVM}/device_version),$(cat ${PATH_NVM}/firmware_version)"
else
FREV="$(cat ${PATH_NVM}/hwrev),$(cat ${PATH_NVM}/fwrev)"
fi
LOT_CODE="$(cat ${PATH_NVM}/csd)"
else
if [ -d "${PATH_STORAGE}" ] ; then
HNAME=`cat ${PATH_STORAGE}/type`
VEND=`cat ${PATH_STORAGE}/vendor`
HREV=`cat ${PATH_STORAGE}/model`
FREV=`cat ${PATH_STORAGE}/fw`
SIZE=$((1024 * `cat ${PATH_STORAGE}/size | sed 's/[^0-9]//g'`))
fi
fi
create_common_revision_data "${FILE}" "${HNAME}" "${VEND}" "${HREV}" "${DATE}" "${LOT_CODE}" "${FREV}"
write_one_revision_data "size" "${SIZE}" "${FILE}"
apply_revision_data_perms "${FILE}"
#
# Compile ap
#
FILE="${OUT_PATH}/ap"
HNAME=
VEND=
HREV=
DATE=
FREV=
LOT_CODE=
if [ -e "/proc/cpuinfo" ]; then
PREVIFS="$IFS"
IFS="
"
for CPU in `cat /proc/cpuinfo` ; do
KEY="${CPU%:*}"
VAL="${CPU#*: }"
case "${KEY}" in
Processor*) HNAME="${VAL}" ;;
*implementer*) VEND="${VAL}" ;;
*variant*) HREV="${VAL}" ;;
*part*) HREV="${HREV},${VAL}" ;;
*revision*) HREV="${HREV},${VAL}" ;;
esac
done
IFS="$PREVIFS"
fi
create_common_revision_data "${FILE}" "${HNAME}" "${VEND}" "${HREV}" "" "" ""
apply_revision_data_perms "${FILE}"
#
# copy pmic data
#
FILE="${OUT_PATH}/pmic"
if [ -e "/sys/hardware_revisions/pmic" ]; then
cat /sys/hardware_revisions/pmic > ${FILE}
else
create_common_revision_data "${FILE}" "" "" "" "" "" ""
fi
apply_revision_data_perms "${FILE}"
#
# copy display data
# PATH_DISPLAY_DRM is the sys file path name for DRM display driver
# PATH_DISPLAY is the path name for the old FB driver
#
copy_panel_revision_data()
{
FILE="${OUT_PATH}/display"
HNAME=
VEND=
HREV=
local wait_cnt=0
local has_lid
local lid=1
lid_property=ro.vendor.mot.hw.lid
has_lid=$(getprop $lid_property 2> /dev/null)
notice "has lid = ${has_lid} lid= ${lid}"
while [ "$wait_cnt" -lt 8 ]; do
if [ -e ${PATH_DISPLAY_DRM}/panelName -o -e ${PATH_DISPLAY}/panelName ]; then
if [ -e ${PATH_DISPLAY_DRM}/panelName ] ; then
HNAME=`cat ${PATH_DISPLAY_DRM}/panelName`
VEND=`cat ${PATH_DISPLAY_DRM}/panelSupplier`
HREV=`cat ${PATH_DISPLAY_DRM}/panelVer`
create_multiple_revision_data 0 "${FILE}" "${HNAME}" "${VEND}" "${HREV}" "" "" ""
apply_revision_data_perms "${FILE}"
notice "creat primary panel hwrev"
else
HNAME=`cat ${PATH_DISPLAY}/panel_name`
VEND=`cat ${PATH_DISPLAY}/panel_supplier`
HREV=`cat ${PATH_DISPLAY}/panel_ver`
create_common_revision_data "${FILE}" "${HNAME}" "${VEND}" "${HREV}" "" "" ""
apply_revision_data_perms "${FILE}"
fi
if [ $has_lid -eq $lid ]
then
if [ -e ${PATH_DISPLAY_DRM_CLI}/panelName ] ; then
HNAME=`cat ${PATH_DISPLAY_DRM_CLI}/panelName`
VEND=`cat ${PATH_DISPLAY_DRM_CLI}/panelSupplier`
HREV=`cat ${PATH_DISPLAY_DRM_CLI}/panelVer`
notice "creat CLI hwrev"
create_multiple_revision_data 1 "${FILE}" "${HNAME}" "${VEND}" "${HREV}" "" "" ""
apply_revision_data_perms "${FILE}"
break;
fi
else
break;
fi
fi
sleep 1;
wait_cnt=$((wait_cnt+1))
done
}
copy_panel_revision_data
#
# Compile touchscreen
#
FILE="${OUT_PATH}/touchscreen"
HNAME=
VEND=
HREV=
DATE=
FREV=
LOT_CODE=
# If there is the touchclass path, then access the nodes under the path to get the touch related
# information, otherwise access the path originally defined by the script.
if [ -e "${PATH_TOUCH_MMI}" ]; then
cd ${PATH_TOUCH_MMI}
let index=0
for i in $(ls */ic_ver); do
class_name=`echo $i|sed 's/ic_ver//g'`
PATH_TOUCH_CLASS=${PATH_TOUCH_MMI}${class_name}
if [ -e "${PATH_TOUCH_CLASS}/vendor" ]; then
HNAME=`cat ${PATH_TOUCH_CLASS}/vendor`
ICVER=`cat -e ${PATH_TOUCH_CLASS}/ic_ver`
if [ "$HNAME" ]; then
VEND="${ICVER##*'Product ID: '}"
VEND="${VEND%%\$*}"
FREV="${ICVER##*'Build ID: '}"
FREV="${FREV%%\$*}"
LOT_CODE="${ICVER##*'Config ID: '}"
LOT_CODE="${LOT_CODE%%\$*}"
fi
create_multiple_revision_data "${index}" "${FILE}" "${HNAME}" "${VEND}" "${HREV}" "${DATE}" "${LOT_CODE}" "${FREV}"
#create_common_revision_data "${FILE}" "${HNAME}" "${VEND}" "${HREV}" "${DATE}" "${LOT_CODE}" "${FREV}"
apply_revision_data_perms "${FILE}"
let index++
fi
done
elif [ -e "${PATH_TOUCH_SPI}/name" ]; then
HNAME=`cat ${PATH_TOUCH_SPI}/name`
ICVER=`cat -e ${PATH_TOUCH_SPI}/ic_ver`
case "$HNAME" in
focaltech*)
VEND="${ICVER##*'Product ID: '}"
VEND="${VEND%%\$*}"
FREV="${ICVER##*'Build ID: '}"
FREV="${FREV%%\$*}"
;;
esac
create_common_revision_data "${FILE}" "${HNAME}" "${VEND}" "${HREV}" "${DATE}" "${LOT_CODE}" "${FREV}"
apply_revision_data_perms "${FILE}"
else
if [ -e "${PATH_TOUCH}/name" ]; then
HNAME=`cat ${PATH_TOUCH}/name`
ICVER=`cat -e ${PATH_TOUCH}/ic_ver`
case "${HNAME}" in
melfas*)
VEND="Melfas"
HREV="${ICVER##*'HW Revision:'}"
HREV="${HREV%%\$*}"
FREV="${ICVER##*'Core FW ver:'}"
FREV="${FREV%%\$*}"
;;
cyttsp*)
VEND="${ICVER##*'Custom ID:'}"
VEND="${VEND%%\$*}"
VEND="Cypress,${VEND}"
HREV="${ICVER##*'TTSP Version:'}"
HREV="${HREV%%\$*}"
FREV="${ICVER##*'Application Version:'}"
FREV="${FREV%%\$*}"
;;
atmxt*)
VEND="Atmel"
HREV="${ICVER##*'Family ID:'}"
HREV1="${ICVER##*'Variant ID:'}"
HREV="${HREV%%\$*},${HREV1%%\$*}"
FREV="${ICVER##*'Version:'}"
FREV1="${ICVER##*'Build:'}"
FREV="${FREV%%\$*},${FREV1%%\$*}"
;;
synaptics*)
VEND="${ICVER##*'Product ID: '}"
VEND="${VEND%%\$*}"
FREV="${ICVER##*'Build ID: '}"
FREV="${FREV%%\$*}"
LOT_CODE="${ICVER##*'Config ID: '}"
LOT_CODE="${LOT_CODE%%\$*}"
;;
esac
create_common_revision_data "${FILE}" "${HNAME}" "${VEND}" "${HREV}" "${DATE}" "${LOT_CODE}" "${FREV}"
apply_revision_data_perms "${FILE}"
fi
fi

View File

@ -0,0 +1,34 @@
#!/vendor/bin/sh
########################################################
### init.insmod.cfg format: ###
### ----------------------------------------------- ###
### [insmod|setprop|enable/moprobe] [path|prop name] ###
### ... ###
########################################################
if [ $# -eq 1 ]; then
cfg_file=$1
else
exit 1
fi
if [ -f $cfg_file ]; then
while IFS="|" read -r action arg
do
case $action in
"insmod") insmod $arg ;;
"setprop") setprop $arg 1 ;;
"enable") echo 1 > $arg ;;
"modprobe")
case ${arg} in
"-b *" | "-b")
arg="-b $(cat /vendor/lib/modules/modules.load)" ;;
"*" | "")
arg="$(cat /vendor/lib/modules/modules.load)" ;;
esac
modprobe -a -d /vendor/lib/modules $arg ;;
esac
done < $cfg_file
fi

View File

@ -0,0 +1,52 @@
#!/vendor/bin/sh
PATH=/sbin:/vendor/sbin:/vendor/bin:/vendor/xbin
export PATH
scriptname=${0##*/}
notice()
{
echo "$*"
echo "$scriptname: $*" > /dev/kmsg
}
# Check if we are in the first bootup sequence.
hardware_state=$(getprop ro.boot.secure_hardware)
build_tags=$(getprop ro.build.tags)
vendor_build_type=$(getprop ro.vendor.build.type)
backup_state_prop=$(getprop persist.vendor.tl.already_backup)
if [[ "$hardware_state" == "0" ]]; then
notice "Do not need trustlet backup, skip!"
exit 0
fi
# Exclude secure hw with user/userdebug testkey sw
if [[ "$hardware_state" == "1" && "$build_tags" == *"test-keys"* ]]; then
notice "Do not need trustlet backup, skip!"
exit 0
fi
# Exclude secure hw with factory userdebug releasekey sw
if [[ "$hardware_state" == "1" && "$vendor_build_type" == "userdebug" ]]; then
notice "Do not need trustlet backup, skip!"
exit 0
fi
if [[ "$backup_state_prop" == "true" ]]; then
notice "Trustlet already backed up, skip!"
exit 0
fi
# For Trustonic tl and drv backup.
if [ -d /vendor/app/mcRegistry/ ]; then
notice "Detecting trustonic path, syncing up.."
cp -af /vendor/app/mcRegistry/* /mnt/vendor/tzapp/
fi
# TODO: Add more TEE vendor support if required.
setprop persist.vendor.tl.already_backup true
notice "Trustlet backup success!"

View File

@ -0,0 +1,46 @@
#!/vendor/bin/sh
block_by_name=/dev/block/by-name
utags=${block_by_name}/utags
utags_backup=${block_by_name}/utagsBackup
CHMOD_L_FLAG=-L
# Set correct permissions for UTAGS
/vendor/bin/chown -L root:system $utags
/vendor/bin/chown -L root:system $utags_backup
/vendor/bin/chmod ${CHMOD_L_FLAG} 0660 $utags
if [ $? -ne 0 ]; then
CHMOD_L_FLAG=" "
/vendor/bin/chmod ${CHMOD_L_FLAG} 0660 $utags
fi
/vendor/bin/chmod ${CHMOD_L_FLAG} 0660 $utags_backup
# HOB/DHOB
hob=${block_by_name}/hob
dhob=${block_by_name}/dhob
if [ -f $hob ] || [ -L $hob ]; then
/vendor/bin/chown -L radio:radio $hob
/vendor/bin/chown -L radio:radio $dhob
/vendor/bin/chmod ${CHMOD_L_FLAG} 0660 $hob
/vendor/bin/chmod ${CHMOD_L_FLAG} 0660 $dhob
fi
# CLOGO
clogo=${block_by_name}/clogo
if [ -f $clogo ] || [ -L $clogo ]; then
/vendor/bin/chown -L root:vendor_tcmd $clogo
/vendor/bin/chmod ${CHMOD_L_FLAG} 0660 $clogo
fi
#CID
cid=${block_by_name}/cid
/vendor/bin/chown -L root:vendor_tcmd $cid
/vendor/bin/chmod ${CHMOD_L_FLAG} 0660 $cid
#BL logs
logs=${block_by_name}/logs
if [ -f $logs ]; then
/vendor/bin/chown -L root:system $logs
/vendor/bin/chmod ${CHMOD_L_FLAG} 0640 $logs
fi

View File

@ -0,0 +1,190 @@
#!/vendor/bin/sh
PATH=/sbin:/vendor/sbin:/vendor/bin:/vendor/xbin
export PATH
scriptname=${0##*/}
notice()
{
echo "$*"
echo "$scriptname: $*" > /dev/kmsg
}
# reload UTAGS
utag_status=$(cat /proc/config/reload)
if [ "$utag_status" == "2" ]; then
notice "Utags are not ready, reloading"
echo 1 > /proc/config/reload
utag_status=$(cat /proc/config/reload)
[ "$utag_status" != "0" ] && notice "Utags failed to reload"
fi
# Export these for factory validation purposes
iccid=$(cat /proc/config/iccid/ascii 2>/dev/null)
if [ ! -z "$iccid" ]; then
setprop ro.vendor.mot.iccid $iccid
fi
unset iccid
# Get FTI data and catch old units with incorrect/missing UTAG_FTI
pds_fti=/mnt/vendor/persist/factory/fti
if [ -r $pds_fti ]; then
set -A fti $(od -A n -t x1 $pds_fti 2>/dev/null | tr '[A-F]' '[a-f]')
else
notice "Can not read FTI data in persist"
fi
# If UTAG_FTI is readable, compare checksums
# and if they mismatch, assume PDS is valid and overwrite UTAG
utag_fti=/proc/config/fti
if [ -r $utag_fti/ascii ]; then
set -A fti_utag $(cat ${utag_fti}/raw | sed 's/../& /g' | tr '[A-F]' '[a-f]')
# Byte 128 is total cksum, if nothing there, PDS data is invalid/missing
if [ ! -z "${fti[127]}" ]; then
# Make sure fti in UTAG is the same as in persist. Checksum comparison
if [ "${fti[126]}" != "${fti_utag[126]}" -o "${fti[127]}" != "${fti_utag[127]}" ]; then
notice "Copying FTI data from persist"
cat $pds_fti > ${utag_fti}/raw
fi
else
# If PDS data is invalid, take UTAG and hope it is correct
notice "Will use FTI from UTAG"
set -A fti $(od -A n -t x1 ${utag_fti}/ascii 2>/dev/null)
fi
else
notice "Missing FTI UTAG; copying from persist"
echo fti > /proc/config/all/new
cat $pds_fti > ${utag_fti}/raw
fi
# Read HW version from FTI data
hw_v1="\x${fti[35]}"
hw_v2="\x${fti[36]}"
hw_v3="\x${fti[37]}"
if [ "$hw_v3" == "\x30" ]; then
hw_v3=""
fi
hw_v4="\x${fti[38]}"
if [ "$hw_v4" == "\x30" ]; then
hw_v4=""
fi
setprop ro.vendor.hw.boardversion $(printf "$hw_v1$hw_v2$hw_v3$hw_v4")
# Now we have set fti var either from PDS or UTAG
# Get Last Test Station stamp from FTI
# and convert to user-friendly date, US format
# Real offsets for year/month/day are 63/64/65
# If the month/date look reasonable, data is probably OK.
mdate="Unknown"
y=0x${fti[63]}
m=0x${fti[64]}
d=0x${fti[65]}
let year=$y month=$m day=$d
# Invalid data will often have bogus month/date values
if [ $month -le 12 -a $day -le 31 -a $year -ge 12 ]; then
mdate=$month/$day/20$year
else
notice "Corrupt FTI data"
fi
# FEATURE-7596 The utag date is preferred
utag_date=$(cat /proc/config/date/ascii 2>/dev/null)
if [ ! -z "$utag_date" ]; then
# utage date format mm-dd-yyyy
utag_date=(${utag_date//-/ })
m=${utag_date[0]}
d=${utag_date[1]}
y=${utag_date[2]}
let year=$y month=$m day=$d
if [ $month -le 12 -a $month -ge 1 -a $day -le 31 -a $day -ge 1 -a $year -ge 2012 ]; then
mdate=$month/$day/$year
else
notice $month $day $year
notice "Corrupt utag date"
fi
fi
setprop ro.vendor.manufacturedate $mdate
unset fti y m d year month day utag_fti pds_fti fti_utag mdate utag_date
t=$(getprop ro.build.tags)
if [[ "$t" != *release* ]]; then
for p in $(cat /proc/cmdline); do
if [ ${p%%:*} = "@" ]; then
v=${p#@:}; a=${v%=*}; b=${v#*=}
${a%%:*} ${a##*:} $b
fi
done
fi
unset p v a b t
# Cleanup stale/incorrect programmed model value
# Real values will never contain substrings matching "internal" device name
product=$(getprop ro.vendor.hw.device)
model=$(cat /proc/config/model/ascii 2>/dev/null)
if [ $? -eq 0 ]; then
if [ "${model#*_}" == "$product" -o "${model%_*}" == "$product" ]; then
notice "Clearing stale model value"
echo "" > /proc/config/model/raw
fi
fi
unset model product
# Export the RKP csr state which should be done in factory
rkp_complete_file="/mnt/vendor/persist/rkp_complete"
rkp_csr_state="not uploaded"
if [ -f "$rkp_complete_file" ]; then
setprop ro.vendor.mot.hw.rkp_csr_uploaded 1
rkp_csr_state="already uploaded"
else
setprop ro.vendor.mot.hw.rkp_csr_uploaded 0
fi
notice "RKP CSR file on device is: $rkp_csr_state"
unset $rkp_complete_file
unset $rkp_csr_state
get_history_value()
{
local __result=$1
local history_count=0
local value=""
local IFS=','
shift 1
for arg in ${@}; do
value=$value",$arg"
history_count=$(($history_count + 1))
if [ $history_count -eq 3 ]; then
break
fi
done
eval $__result="$value"
debug "value:$value history_count:$history_count"
}
set_boot_bootseq_history()
{
#get current boot sequence
if [ ! -f /proc/bootinfo ]; then
notice "Error:/proc/bootinfo is not ready"
return
fi
boot_seq_line=`grep BOOT_SEQ /proc/bootinfo | sed 's/ //g'`
boot_seq=${boot_seq_line##*:}
notice "BOOT_SEQ is $boot_seq"
setprop ro.vendor.boot_seq $boot_seq
boot_time=`date +%s`
#get previous value of bootseq history
bootseq_history=`getprop persist.vendor.boot.bootseq.history`
notice "booseq_history is $bootseq_history"
get_history_value valid_history_value $bootseq_history
setprop persist.vendor.boot.bootseq.history "$boot_seq.$boot_time$valid_history_value"
new_bootseq_history=`getprop persist.vendor.boot.bootseq.history`
notice "set persist.vendor.boot.bootseq.history $new_bootseq_history"
}
set_boot_bootseq_history

View File

@ -0,0 +1,56 @@
#!/vendor/bin/sh
echo "Retrieve Modem RFS logs"
re='?(-)+([0-9.])'
if ! [[ $2 == $re ]] ; then
echo "error: Not a number" >&2; exit 1
fi
__copy_logs()
{
file1="${1}"
file2="${2}"
if [ ! -f "${file1}" ]; then
echo -e "${file1} invalid"
return
fi
/vendor/bin/chmod 666 "${file1}"
/vendor/bin/cp "${file1}" "${file2}"
/vendor/bin/chmod 640 "${file2}"
}
mdm_rfs_folder=/mnt/vendor/nvdata/md/
mdm_rfs_log0=mot_md_log_0.txt
mdm_rfs_log1=mot_md_log_1.txt
mdm_log_target_folder=/data/vendor/dontpanic
if [ "$1" == "loop" ]; then
loop=1
else
loop=0
fi
while true
do
/vendor/bin/echo "1" > /data/vendor/radio/read_modem_efs
/vendor/bin/sleep 1
/vendor/bin/echo "0" > /data/vendor/radio/read_modem_efs
__copy_logs $mdm_rfs_folder/$mdm_rfs_log0 $mdm_log_target_folder/$mdm_rfs_log0
__copy_logs $mdm_rfs_folder/$mdm_rfs_log1 $mdm_log_target_folder/$mdm_rfs_log1
if [ $loop -eq 1 ]
then
/vendor/bin/sleep $2
else
break
fi
done
exit 0

View File

@ -0,0 +1,10 @@
#!/vendor/bin/sh
# All modules that depend on conditions or need extra parameters
# should go here.
# Handle factory bootmode
bootmode=$(getprop ro.bootmode)
if [ $bootmode = "mot-factory" ]; then
insmod /vendor/lib/modules/moto_f_usbnet.ko
fi

View File

@ -0,0 +1,75 @@
#!/vendor/bin/sh
PATH=/sbin:/vendor/sbin:/vendor/bin:/vendor/xbin
export PATH
scriptname=${0##*/}
debug()
{
echo "$*"
}
notice()
{
echo "$*"
echo "$scriptname: $*" > /dev/kmsg
}
get_history_value()
{
local __result=$1
local history_count=0
local value=""
local IFS=$2
shift 2
for arg in ${@}; do
value=$value"$IFS$arg"
history_count=$(($history_count + 1))
if [ $history_count -eq 3 ]; then
break
fi
done
eval $__result="$value"
debug "value:$value history_count:$history_count"
}
set_reboot_bootseq_history()
{
BOOTSEQ_HISTORY_PROP=persist.vendor.reboot.bootseq.history
#get current boot sequence
if [ ! -f /proc/bootinfo ]; then
notice "Error:/proc/bootinfo is not ready"
return
fi
boot_seq_line=`grep BOOT_SEQ /proc/bootinfo | sed 's/ //g'`
boot_seq=${boot_seq_line##*:}
notice "BOOT_SEQ is $boot_seq"
shutdown_time=`date +%s`
#get previous value of bootseq history
bootseq_history=`getprop $BOOTSEQ_HISTORY_PROP`
debug "booseq_history is $bootseq_history"
get_history_value valid_history_value , $bootseq_history
setprop $BOOTSEQ_HISTORY_PROP "$boot_seq.$shutdown_time$valid_history_value"
new_bootseq_history=`getprop $BOOTSEQ_HISTORY_PROP`
notice "set $BOOTSEQ_HISTORY_PROP $new_bootseq_history"
#update reboot command history
REBOOTCMD_HISTORY_PROP=persist.vendor.reboot.command.history
reboot_cmds=`getprop log.powerctrl.reboot.command`
notice "reboot_cmds is [$reboot_cmds]"
#get previous value of command history
rebootcmd_history=`getprop $REBOOTCMD_HISTORY_PROP`
debug "reboot command history is $rebootcmd_history"
get_history_value valid_cmd_history_value - $rebootcmd_history
setprop $REBOOTCMD_HISTORY_PROP "$boot_seq.$reboot_cmds${valid_cmd_history_value}"
new_bootseq_history=`getprop $REBOOTCMD_HISTORY_PROP`
notice "set $REBOOTCMD_HISTORY_PROP $new_bootseq_history"
}
set_reboot_bootseq_history

View File

@ -0,0 +1,455 @@
#!/vendor/bin/sh
PATH=/sbin:/vendor/sbin:/vendor/bin:/vendor/xbin
export PATH
while getopts ds op;
do
case $op in
d) dbg_on=1;;
s) dump_statistics=1;;
esac
done
shift $(($OPTIND-1))
# Globals
scriptname=${0##*/}
touch_class_path=/sys/class/touchscreen
touch_status_prop=vendor.hw.touch.status
touch_vendor=
touch_path=
panel_path=/sys/class/graphics/fb0
device_property=ro.vendor.hw.device
hwrev_property=ro.vendor.hw.revision
firmware_path=/vendor/firmware
let dec_cfg_id_boot=0
let dec_cfg_id_latest=0
typeset -l product_id
panel_ver=
supplier=
property=
config_id=
build_id=
hwrev_id=
str_cfg_id_new=
str_cfg_id_boot=
str_cfg_id_latest=
build_id_new=
debug()
{
[ $dbg_on ] && echo "Debug: $*"
}
notice()
{
echo "$*"
echo "$scriptname: $*" > /dev/kmsg
}
sanity_check()
{
read_touch_property flashprog || return 1
[[ ( -z "$property" ) || ( "$property" == "1" ) ]] && return 2
read_touch_property productinfo || return 1
[[ ( -z "$property" ) || ( "$property" == "0" ) ]] && return 2
read_touch_property buildid || return 1
config_id=${property#*-}
[[ ( -z "$config_id" ) || ( "$config_id" == "0" ) ]] && return 2
build_id=${property%-*}
[[ ( -z "$build_id" ) || ( "$build_id" == "0" ) ]] && return 2
return 0
}
error_msg()
{
local err_msg
local err_code=$1
case $err_code in
1) err_msg="Error: No response from touch IC";;
2) err_msg="Error: Cannot read property $2";;
3) err_msg="Error: No matching firmware file found";;
4) err_msg="Error: Touch IC is in bootloader mode";;
5) err_msg="Error: Touch provides no reflash interface";;
6) err_msg="Error: Touch driver is not running";;
7) err_msg="Warning: Touch firmware is not the latest";;
8) err_msg="Info: Touch class does not exist";;
9) err_msg="Error: Touch IC is not ready to flash";;
esac
notice "$err_msg"
}
error_and_leave()
{
local err_code=$1
local touch_status="unknown"
error_msg $err_code
case $err_code in
1|4) touch_status="dead";;
5|6|8) touch_status="absent";;
esac
# perform sanity check and declare touch ready if error is not fatal
if [ "$touch_status" == "unknown" ]; then
sanity_check
case "$?" in
0) touch_status="ready";;
2) touch_status="dead";;
1) touch_status="absent";;
esac
fi
# perform recovery if touch is declared dead
if [ "$touch_status" == "dead" ]; then
notice "Touch needs to go through recovery!!!"
reboot_cnt=$(getprop $touch_status_prop 2>/dev/null)
[ -z "$reboot_cnt" ] && reboot_cnt=0
debug "current reboot counter [$reboot_cnt]"
fi
setprop $touch_status_prop $touch_status
notice "property [$touch_status_prop] set to [`getprop $touch_status_prop`]"
if [ "$touch_status" == "dead" ]; then
notice "Touch is not responding; no further action!!!"
#if [ $((reboot_cnt)) -lt 2 ]; then
# notice "Touch is not working; rebooting..."
# debug "sleep 3s to allow touch-dead-sh service to run"
# sleep 3
# [ -z "$dbg_on" ] && setprop sys.powerctl reboot
#else
# notice "Although touch is not working, no more reboots"
#fi
fi
exit $err_code
}
prepend()
{
local list=""
local prefix=$1
shift
for name in $*; do
list="$list$prefix/$name "
done
echo $list
}
dump_statistics()
{
debug "dumping touch statistics"
cat $touch_path/ic_ver
[ -f $touch_path/stats ] && cat $touch_path/stats
return 0
}
wait_for_poweron()
{
local wait_nomore
local readiness
local count
debug "wait until driver reports <ready to flash>..."
wait_nomore=60
count=0
while true; do
readiness=$(cat $touch_path/poweron)
if [ "$readiness" == "1" ]; then
debug "ready to flash!!!"
break;
fi
count=$((count+1))
[ $count -eq $wait_nomore ] && break
sleep 1
debug "not ready; keep waiting..."
done
if [ $count -eq $wait_nomore ]; then
error_msg 9
return 1
fi
return 0
}
setup_permissions()
{
local selinux=$(getprop ro.boot.selinux 2> /dev/null)
local key_path
local key_files
local entry
local product_info
if [ "$selinux" == "permissive" ]; then
debug "loosen permissions to $touch_vendor files"
case $touch_vendor in
synaptics) key_path=$touch_path
key_files=$(prepend f54 `ls $touch_path/f54/ 2>/dev/null`)
key_files=$key_files"reporting query stats";;
focaltech) key_path="/proc/"
key_files="ftxxxx-debug";;
ilitek) key_path="/proc/ilitek"
key_files="ioctl";;
goodix) key_path="/proc/"
key_files="gmnode"
if [ "$touch_product_string" == "GTx5" ]; then
key_path="/dev/"
key_files="gtp_tools"
fi
if [ "$touch_product_string" == "primary" ]; then
product_info=$(cat $touch_class_path/$touch_product_string/productinfo)
debug "$touch_vendor product_info is $product_info"
if [ "$product_info" == "gt9916S" ]; then
key_path="/dev/"
key_files="gtp_tools"
fi
fi
;;
esac
for entry in $key_files; do
chmod 0666 $key_path/$entry
debug "change permissions of $key_path/$entry"
done
fi
# Set permissions to enable factory touch tests
chown root:vendor_tcmd $touch_path/drv_irq
chown root:vendor_tcmd $touch_path/hw_irqstat
chown root:vendor_tcmd $touch_path/reset
# Set permissions to allow Bug2Go access to touch statistics
chown root:log $touch_path/stats
# Erase is optional
[ -f $touch_path/erase_all ] && chown root:vendor_tcmd $touch_path/erase_all
}
read_touch_property()
{
property=""
debug "retrieving property: [$touch_path/$1]"
property=$(cat $touch_path/$1 2> /dev/null)
debug "touch property [$1] is: [$property]"
[ -z "$property" ] && return 1
return 0
}
read_panel_property()
{
property=""
debug "retrieving panel property: [$panel_path/$1]"
property=$(cat $panel_path/$1 2> /dev/null)
debug "panel property [$1] is: [$property]"
[ -z "$property" ] && return 1
return 0
}
find_latest_config_id()
{
local fw_mask=$1
local skip_fields=$2
local dec max z str_hex i
str_cfg_id_latest=""
debug "scanning dir for files matching [$fw_mask]"
let dec=0; max=0;
for file in $(ls $fw_mask 2>/dev/null); do
z=$file
i=0
while [ ! $i -eq $skip_fields ]; do
z=${z#*-}
i=$((i+1))
done
str_hex=${z%%-*};
let dec=0x$str_hex
if [ $dec -gt $max ]; then
let max=$dec; dec_cfg_id_latest=$dec;
str_cfg_id_latest=$str_hex
fi
done
[ -z "$str_cfg_id_latest" ] && return 1
return 0
}
find_best_match()
{
local hw_mask=$1
local panel_supplier=$2
local skip_fields fw_mask
while [ ! -z "$hw_mask" ]; do
if [ "$hw_mask" == "-" ]; then
hw_mask=""
fi
if [ ! -z "$panel_supplier" ]; then
skip_fields=3
fw_mask="$touch_vendor-$panel_supplier-$touch_product_id-*-$product_id$hw_mask.*"
else
skip_fields=2
fw_mask="$touch_vendor-$touch_product_id-*-$product_id$hw_mask.*"
fi
find_latest_config_id "$fw_mask" "$skip_fields" && break
hw_mask=${hw_mask%?}
done
[ -z "$str_cfg_id_latest" ] && return 1
if [ -z "$panel_supplier" ]; then
firmware_file=$(ls $touch_vendor-$touch_product_id-$str_cfg_id_latest-*-$product_id$hw_mask.*)
else
firmware_file=$(ls $touch_vendor-$panel_supplier-$touch_product_id-$str_cfg_id_latest-*-$product_id$hw_mask.*)
fi
notice "Firmware file for upgrade $firmware_file"
return 0
}
query_touch_info()
{
read_touch_property flashprog
bl_mode=$property
debug "bl mode: $bl_mode"
read_touch_property productinfo
touch_product_id=$property
if [ -z "$touch_product_id" ] || [ "$touch_product_id" == "0" ]; then
debug "touch ic reports invalid product id"
error_msg 1
return 1
fi
debug "touch product id: $touch_product_id"
read_touch_property buildid
str_cfg_id_boot=${property#*-}
let dec_cfg_id_boot=0x$str_cfg_id_boot
debug "touch config id: $str_cfg_id_boot"
build_id_boot=${property%-*}
debug "touch build id: $build_id_boot"
return 0
}
query_panel_info()
{
supplier=""
read_touch_property "panel_supplier"
[ -z "$property" ] && read_panel_property "panel_supplier"
supplier=$property
if [ "$supplier" ]; then
read_panel_property "controller_drv_ver"
panel_ver=${property#${property%?}}
debug "panel supplier: $supplier, ver $panel_ver"
else
debug "driver does not report panel supplier"
fi
}
search_firmware_file()
{
local match_not_found
match_not_found=1
if [ "$supplier" ]; then
for pattern in "$supplier$panel_ver" "$supplier"; do
debug "search for best hw revision match with supplier"
find_best_match "-$hwrev_id" "$pattern"
match_not_found=$?
[ "$match_not_found" == "0" ] && break
done
fi
if [ "$match_not_found" != "0" ]; then
debug "search for best hw revision match without supplier"
find_best_match "-$hwrev_id"
if [ "$?" != "0" ]; then
error_msg 3
return 1
fi
fi
return 0
}
run_firmware_upgrade()
{
local recovery
wait_for_poweron
recovery=0
if [ "$bl_mode" == "1" ] || [ "$build_id_boot" == "0" ]; then
recovery=1
notice "Initiating touch firmware recovery"
notice " bl mode = $bl_mode"
notice " build id = $build_id_boot"
fi
if [ $dec_cfg_id_boot -ne $dec_cfg_id_latest ] || [ "$recovery" == "1" ]; then
debug "forcing firmware upgrade"
echo 1 > $touch_path/forcereflash
debug "sending reflash command"
echo $firmware_file > $touch_path/doreflash
read_touch_property flashprog
if [ "$?" != "0" ]; then
error_msg 1
return 1
fi
bl_mode=$property
if [ "$bl_mode" == "1" ]; then
error_msg 4
return 1
fi
read_touch_property buildid
if [ "$?" != "0" ]; then
error_msg 1
return 1
fi
str_cfg_id_new=${property#*-}
build_id_new=${property%-*}
notice "Touch firmware config id at boot time $str_cfg_id_boot"
notice "Touch firmware config id in the file $str_cfg_id_latest"
notice "Touch firmware config id currently programmed $str_cfg_id_new"
[ "$str_cfg_id_latest" != "$str_cfg_id_new" ] && error_msg 7 && return 1
if [ -f $touch_path/f54/force_update ]; then
notice "forcing F54 registers update"
echo 1 > $touch_path/f54/force_update
fi
fi
return 0
}
process_touch_instance()
{
notice "Handling touch ID [$touch_product_string] permissions"
touch_vendor=$(cat $touch_class_path/$touch_product_string/vendor)
debug "touch vendor [$touch_vendor]"
touch_path=/sys$(cat $touch_class_path/$touch_product_string/path)
debug "sysfs touch path: $touch_path"
if [ ! -f $touch_path/doreflash ] ||
[ ! -f $touch_path/poweron ] ||
[ ! -f $touch_path/flashprog ] ||
[ ! -f $touch_path/productinfo ] ||
[ ! -f $touch_path/buildid ]; then
error_msg 5
continue
fi
setup_permissions
if [ $dump_statistics ]; then
dump_statistics
fi
notice "Checking touch ID [$touch_product_string] FW upgrade"
touch_vendor=$(cat $touch_class_path/$touch_product_string/vendor)
debug "touch vendor [$touch_vendor]"
touch_path=/sys$(cat $touch_class_path/$touch_product_string/path)
debug "sysfs touch path: $touch_path"
query_touch_info
query_panel_info
search_firmware_file
[ "$?" == "0" ] && run_firmware_upgrade
notice "Touch firmware is up to date"
setprop $touch_status_prop "ready"
notice "property [$touch_status_prop] set to [`getprop $touch_status_prop`]"
}
# Main starts here
[ -d $touch_class_path ] || error_and_leave 8
debug "sysfs panel path: $panel_path"
product_id=$(getprop $device_property 2> /dev/null)
[ -z "$product_id" ] && error_and_leave 2 $device_property
product_id=${product_id%-*}
product_id=${product_id%_*}
debug "product id: $product_id"
hwrev_id=$(getprop $hwrev_property 2> /dev/null)
[ -z "$hwrev_id" ] && notice "hw revision undefined"
debug "hw revision: $hwrev_id"
cd $firmware_path
# Run asynchronously for each instance
for touch_product_string in $(ls $touch_class_path); do
process_touch_instance &
done
# check if need to reload modules
wait
debug "all background processes completed"
return 0

260
rootdir/bin/init.mmi.usb.sh Normal file
View File

@ -0,0 +1,260 @@
#!/vendor/bin/sh
# Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum, Inc. 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 "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.
#
#
# Allow unique persistent serial numbers for devices connected via usb
# User needs to set unique usb serial number to persist.usb.serialno and
# if persistent serial number is not set then Update USB serial number if
# passed from command line
#
dbg_on=0
debug()
{
echo "${0##*/}: $*"
[ $dbg_on ] && echo "${0##*/}: $*" > /dev/kmsg
}
notice()
{
echo "${0##*/}: $*"
echo "${0##*/}: $*" > /dev/kmsg
}
target=`getprop ro.board.platform`
usb_action=`getprop vendor.usb.mmi-usb-sh.action`
notice "mmi-usb-sh: action = \"$usb_action\""
sys_usb_config=`getprop vendor.usb.config`
bootmode=`getprop ro.bootmode`
#factory cleanup
factory_cfg=`getprop persist.vendor.usb.mot-factory.config`
if [ "$bootmode" == "normal" ]; then
if [[ "$factory_cfg" == *adb* ]]; then
setprop persist.vendor.usb.mot-factory.config NULL
setprop persist.vendor.usb.mot-factory.func NULL
setprop persist.vendor.usb.config NULL
setprop persist.vendor.mot.usb.config NULL
setprop vendor.usb.config none
notice "cleanup factory flg done"
fi
fi
set_usb_secure_mode ()
{
if [ "$#" == "1" ]
then
if [ -f /sys/class/android_usb/android0/secure ]
then
echo "$1" > /sys/class/android_usb/android0/secure
else
setprop vendor.usb.secure_mode $1
fi
notice "mmi-usb-sh: secure mode = $1"
fi
}
tcmd_ctrl_adb ()
{
ctrl_adb=`getprop vendor.tcmd.ctrl_adb`
notice "mmi-usb-sh: vendor.tcmd.ctrl_adb = $ctrl_adb"
case "$ctrl_adb" in
"0")
if [[ "$sys_usb_config" == *adb* ]]
then
# *** ALWAYS expecting adb at the end ***
new_usb_config=${sys_usb_config/,adb/}
notice "mmi-usb-sh: disabling adb ($new_usb_config)"
setprop persist.vendor.usb.config $new_usb_config
setprop vendor.usb.config $new_usb_config
setprop persist.vendor.factory.allow_adb 0
fi
;;
"1")
if [[ "$sys_usb_config" != *adb* ]]
then
# *** ALWAYS expecting adb at the end ***
new_usb_config="$sys_usb_config,adb"
notice "mmi-usb-sh: enabling adb ($new_usb_config)"
setprop persist.vendor.usb.config $new_usb_config
setprop vendor.usb.config $new_usb_config
setprop persist.vendor.factory.allow_adb 1
fi
;;
esac
exit 0
}
case "$usb_action" in
"")
;;
"vendor.tcmd.ctrl_adb")
tcmd_ctrl_adb
;;
esac
case "$target" in
"mt6879")
setprop vendor.usb.controller "11201000.usb0"
setprop vendor.usb.rndis.func.name mtk_rndis.gs4
;;
"mt6789")
setprop vendor.usb.controller "musb-hdrc"
setprop vendor.usb.rndis.func.name mtk_rndis.gs4
;;
"mt6855")
setprop vendor.usb.controller "musb-hdrc"
setprop vendor.usb.rndis.func.name mtk_rndis.gs4
;;
esac
## This is needed to switch to the qcom rndis driver.
diag_extra=`getprop persist.vendor.usb.config.extra`
if [ "$diag_extra" == "" ]; then
setprop persist.vendor.usb.config.extra none
fi
#
# Allow USB enumeration with default PID/VID
#
usb_config=`getprop persist.vendor.usb.config`
mot_usb_config=`getprop persist.vendor.mot.usb.config`
buildtype=`getprop ro.build.type`
securehw=`getprop ro.boot.secure_hardware`
cid=`getprop ro.vendor.boot.cid`
notice "mmi-usb-sh: persist usb configs = \"$usb_config\", \"$mot_usb_config\""
phonelock_type=`getprop persist.sys.phonelock.mode`
usb_restricted=`getprop persist.sys.usb.policylocked`
if [ "$securehw" == "1" ] && [ "$buildtype" == "user" ] && [ "$(($cid))" != 0 ]
then
if [ "$usb_restricted" == "1" ]
then
set_usb_secure_mode 1
else
case "$phonelock_type" in
"1" )
set_usb_secure_mode 1
;;
* )
set_usb_secure_mode 0
;;
esac
fi
fi
case "$bootmode" in
"mot-factory" )
if [ "$usb_config" != "adb" ]
then
setprop persist.vendor.usb.config adb
setprop persist.vendor.usb.mot-factory.config adb
setprop persist.vendor.usb.mot-factory.func adb
fi
;;
"charger" )
;;
* )
if [ "$buildtype" == "user" ] && [ "$phonelock_type" != "1" ] && [ "$usb_restricted" != "1" ]
then
set_usb_secure_mode 1
notice "Disabling enumeration until bootup!"
fi
case "$usb_config" in
"mtp,adb" | "mtp" | "adb")
;;
*)
case "$mot_usb_config" in
"mtp,adb" | "mtp" | "adb")
setprop persist.vendor.usb.config $mot_usb_config
;;
*)
case "$securehw" in
"1" )
setprop persist.vendor.usb.config mtp
;;
*)
setprop persist.vendor.usb.config adb
;;
esac
;;
esac
;;
esac
adb_early=`getprop ro.boot.adb_early`
if [ "$adb_early" == "1" ]; then
set_usb_secure_mode 0
notice "Enabling enumeration after bootup, count = $count !"
new_persist_usb_config=`getprop persist.vendor.usb.config`
if [[ "$new_persist_usb_config" != *adb* ]]; then
setprop persist.vendor.usb.config "adb"
setprop vendor.usb.config "adb"
else
setprop vendor.usb.config $new_persist_usb_config
fi
exit 0
fi
if [ "$buildtype" == "user" ] && [ "$phonelock_type" != "1" ] && [ "$usb_restricted" != "1" ]
then
if [[ "$factory_cfg" == *adb* ]]; then
new_persist_usb_config=`getprop persist.vendor.usb.config`
if [ "$sys_usb_config" != "$new_persist_usb_config" ]; then
setprop vendor.usb.config $new_persist_usb_config
notice "mmi-usb-sh - factory to normal, reset the vendor usb config"
fi
fi
count=0
bootcomplete=`getprop vendor.boot_completed`
notice "mmi-usb-sh - bootcomplete = $booted"
while [ "$bootcomplete" != "1" ]; do
debug "Sleeping till bootup!"
sleep 1
count=$((count+1))
if [ $count -gt 90 ]
then
notice "mmi-usb-sh - Timed out waiting for bootup"
break
fi
bootcomplete=`getprop vendor.boot_completed`
done
set_usb_secure_mode 0
notice "Enabling enumeration after bootup, count = $count !"
exit 0
fi
;;
esac
new_persist_usb_config=`getprop persist.vendor.usb.config`
if [ "$sys_usb_config" != "$new_persist_usb_config" ]; then
setprop vendor.usb.config $new_persist_usb_config
fi

View File

@ -0,0 +1,178 @@
#!/vendor/bin/sh
#
# Start indicated fingerprint HAL service
#
# Copyright (c) 2019 Lenovo
# All rights reserved.
#
# April 15, 2019 chengql2@lenovo.com Initial version
# December 2, 2019 chengql2 Store fps_id into persist fs
# November 19, 2020 zengzm refactor the code, support more than 3 fingerprint sensors; support config.
# get the filename, contains the file postfix
script_name=${0##*/}
# remove the file postfix
script_name=${script_name%.*}
function log {
echo "$script_name: $*" > /dev/kmsg
}
PROP_GKI_PATH=ro.vendor.mot.gki.path
GKI_PATH=$(getprop $PROP_GKI_PATH)
# for new projects, only need to config varible vendor_list,kernel_so_list,kernel_so_name_list,hal_list
# vendor_list: the array contains the sensor name, it will be used for system properties.
# kernel_so_list: the array contains the kernel so's absolute path. It will be used at insmod.
# kernel_so_name_list: the array contains the kernel so's name. It will be used at rmmod.
# hal_list: the array contains the hal service name.
#
# note: all arrays should have the same size.
vendor_list=('goodix' 'chipone')
kernel_so_list=("/vendor/lib/modules/$GKI_PATH/goodix_fps_tee.ko" "/vendor/lib/modules/$GKI_PATH/fpsensor_mtk_spi.ko")
kernel_so_name_list=("goodix_fps_tee.ko" "fpsensor_mtk_spi.ko")
hal_list=('goodix_hal' 'chipone_fp_hal')
last_vendor_index=`expr ${#vendor_list[@]} - 1`
vendor_list_size=${#vendor_list[@]}
if [ $vendor_list_size != ${#kernel_so_list[@]} ]; then
log "error, vendor_list.size is not equal to kernel_so_list"
return 255
fi
if [ $vendor_list_size != ${#kernel_so_name_list[@]} ]; then
log "error, vendor_list.size is not equal to kernel_so_name_list"
return 255
fi
if [ $vendor_list_size != ${#hal_list[@]} ]; then
log "error, vendor_list.size is not equal to hal_list"
return 255
fi
# At the current boot, what is the fingerprint sensor
persist_fps_id=/mnt/vendor/persist/fps/vendor_id
# what is the fingerprint sensor successfully installed before.
persist_fps_id2=/mnt/vendor/persist/fps/last_vendor_id
FPS_VENDOR_NONE=none
MAX_TIMES=30
# this property store FPS_STATUS_NONE or FPS_STATUS_OK
# after start fingerprint hal service, the hal service will set this property.
prop_fps_status=vendor.hw.fingerprint.status
# use this to trigger init.mmi.rc
prop_fps_ident=vendor.hw.fps.ident
# if $prop_fps_status=$FPS_STATUS_OK, then will set prop_persist_fps to the specific vendor name.
prop_persist_fps=persist.vendor.hardware.fingerprint
FPS_STATUS_NONE=none
FPS_STATUS_OK=ok
function find_vendor_index() {
# param1: the specific vendor name
# return: the vendor index in vendor_list. the valid index is from 0; if not found,return 255
for temp_vendor_index in $(seq 0 $last_vendor_index)
do
if [ "${vendor_list[temp_vendor_index]}" = "$1" ]; then
return $temp_vendor_index
fi
done
return 255
}
function start_hal_service(){
# param1: the vendor index
# return: 0 means success, will setprop $prop_persist_fps
setprop $prop_fps_status $FPS_STATUS_NONE
setprop $prop_fps_ident $FPS_STATUS_NONE
insmod ${kernel_so_list[$1]}
sleep 1
setprop $prop_fps_ident ${vendor_list[$1]}
log "start ${hal_list[$1]}"
start ${hal_list[$1]}
for ii in $(seq 1 $MAX_TIMES)
do
sleep 0.1
fps_status=$(getprop $prop_fps_status)
# log "check fps vendor status: $fps_status"
if [ $fps_status != $FPS_STATUS_NONE ]; then
break
fi
done
log "fingerprint HAL status: $fps_status"
if [ $fps_status == $FPS_STATUS_OK ]; then
log "start ${hal_list[$1]} hal success"
setprop $prop_persist_fps ${vendor_list[$1]}
return 0
fi
log "start ${hal_list[$1]} hal failed, remove kernel so: ${kernel_so_name_list[$1]} "
setprop ctl.stop ${hal_list[$1]}
rmmod ${kernel_so_name_list[$1]}
sleep 0.1
# if failed,return 255
return 255
}
# set last fingerprint sensor
fps_vendor=$(cat $persist_fps_id)
if [ -n "$fps_vendor" ] && [ "$fps_vendor" != $FPS_STATUS_NONE ]; then
echo $fps_vendor > $persist_fps_id2
fi
# get the identified fingerprint sensor
fps_vendor2=$(cat $persist_fps_id2)
if [ -z $fps_vendor2 ]; then
fps_vendor2=$FPS_VENDOR_NONE
fi
log "FPS vendor (last): $fps_vendor2"
fps_vendor=$(cat $persist_fps_id)
if [ -z $fps_vendor ]; then
fps_vendor=$FPS_VENDOR_NONE
fi
log "FPS vendor (current): $fps_vendor"
vendor_index=255
# try to start the most recent success launched sensor.
if [ $fps_vendor != $FPS_STATUS_NONE ]; then
find_vendor_index $fps_vendor
vendor_index=$?
if [ $vendor_index != 255 ]; then
log "start $fps_vendor hal service"
start_hal_service $vendor_index
if [ $? != 255 ]; then
return 0
fi
fi
fi
# try all the fingerprint sensors
for temp_vendor_index in $(seq 0 $last_vendor_index)
do
if [ $temp_vendor_index == $vendor_index ]; then
continue
fi
if [ ! -e ${kernel_so_list[$temp_vendor_index]} ]; then
log "does not exist ${kernel_so_list[$temp_vendor_index]},ignore this fingerprint sensor"
continue
fi
start_hal_service $temp_vendor_index
if [ $? != 255 ]; then
echo ${vendor_list[$temp_vendor_index]} > $persist_fps_id
return 0
fi
done
log "error, no fingerprint sensor found"
setprop $prop_persist_fps $FPS_VENDOR_NONE
echo $FPS_VENDOR_NONE > $persist_fps_id

742
rootdir/bin/init.oem.hw.sh Normal file
View File

@ -0,0 +1,742 @@
#!/vendor/bin/sh
BASEDIR=vendor
PATH=/sbin:/$BASEDIR/sbin:/$BASEDIR/bin:/$BASEDIR/xbin
export PATH
while getopts dpfrM op;
do
case $op in
d) dbg_on=1;;
p) populate_only=1;;
f) dead_touch=1;;
r) reset_touch=1;;
M) mount_2nd_stage=1;;
esac
done
shift $(($OPTIND-1))
scriptname=${0##*/}
hw_mp=/proc/hw
config_mp=/proc/config
reboot_utag=$config_mp/.reboot
touch_status_prop=vendor.hw.touch.status
hw_cfg_file=hw_config.xml
vhw_file=/$BASEDIR/etc/vhw.xml
bp_file=/system/build.prop
oem_file=/oem/oem.prop
load_error=3
need_to_reload=2
reload_in_progress=1
reload_done=0
ver_utag=".version"
version_fs="unknown"
xml_version="unknown"
device_params=""
xml_file=""
utag_update_fail="false"
modem_ver_prop=ro.vendor.hw.modem_version
policy_prop=ro.vendor.super_image_policy
super_image_detection()
{
local subsys
local file2mount
local basefile
local version
local extention
local image_dir
local is_super_image
local super_image_prop
local file_mount_prop
local modem_version=$(getprop $modem_ver_prop)
local policy=$(getprop $policy_prop)
debug "'$policy_prop' is '$policy'"
for subsys in modem fsg; do
debug "Processing [${subsys}]..."
is_super_image=""
case ${subsys} in
modem) image_dir=/vendor/firmware_mnt;;
fsg) image_dir=/vendor/fsg;;
esac
[ -f $image_dir/super_modem ] && is_super_image="true"
debug "super image '$is_super_image'"
if [ "$is_super_image" == "true" ]; then
file2mount=""
case ${subsys} in
modem) super_image_prop="ro.vendor.hw.modem_super_image"
file_mount_prop="ro.vendor.hw.modem_mount_file"
basefile="NON-HLOS.bin"
extention=".bin"
[ "$modem_version" ] && file2mount=$(printf "NON-HLOS%sbin" $modem_version)
;;
fsg) super_image_prop="ro.vendor.hw.fsg_super_image"
file_mount_prop="ro.vendor.hw.fsg_mount_file"
basefile="fsg.mbn"
extention=".mbn"
[ "$modem_version" ] && file2mount=$(printf "fsg%smbn" $modem_version)
;;
esac
if [ -z "$file2mount" ]; then
notice "'$modem_ver_prop' not set, but [$subsys] is super image!"
else
# modem_version matches existing file in super image
if [ -f $image_dir/$file2mount ]; then
notice "[$subsys] is super image. '$file2mount' will be mounted"
setprop $file_mount_prop $file2mount
setprop $super_image_prop yes
continue
fi
notice "[$subsys] is super image. '$file2mount' not found"
fi
else
notice "[$subsys] non-super image"
fi
# check super image policy
if [ "$policy" == "enforce" ]; then
notice "[$subsys] strict super image policy! Rebooting to recovery..."
debug "'ro.vendor.hw.super_image_failure' -> 'yes'"
setprop ro.vendor.hw.super_image_failure yes
return
fi
notice "[$subsys] super image policy not enforced"
# proceed with non-super image if policy allows
if [ -z "$is_super_image" ]; then
notice "[$subsys] proceed with non-super image!"
continue
fi
# retrieve default version if available
version=$(cat $image_dir/super_modem)
if [ "$version" ]; then
basefile=$version
notice "default file override '$basefile'"
else
notice "use default file: '$basefile' instead of '$file2mount'"
fi
notice "Searching for '$basefile' in $image_dir..."
debug "checking file '$image_dir/$basefile'"
if [ -f $image_dir/$basefile ]; then
notice "[$subsys] is super image! '$basefile' will be mounted"
debug "'$file_mount_prop' -> '$basefile'"
setprop $file_mount_prop $basefile
debug "'$super_image_prop' -> 'yes'"
setprop $super_image_prop yes
continue
fi
# set to fail
notice "Unable to mount '$basefile'! Rebooting to recovery..."
debug "'ro.vendor.hw.super_image_failure' -> 'yes'"
setprop ro.vendor.hw.super_image_failure yes
return
done
}
set_reboot_counter()
{
local value=$1
local reboot_cnt=0
local reboot_mp=${reboot_utag%.*}
local tag_name=${reboot_utag##*/}
if [ $((value)) -gt 0 ]; then
notice "increase reboot counter"
[ -d $reboot_utag ] && reboot_cnt=$(cat $reboot_utag/ascii)
value=$(($reboot_cnt + 1))
fi
if [ ! -d $reboot_utag ]; then
echo ${reboot_utag##*/} > $reboot_mp/all/new
[ $? != 0 ] && notice "error creating UTAG $tag_name"
fi
echo "$value" > $reboot_utag/ascii
[ $? != 0 ] && notice "error updating UTAG $tag_name"
notice "UTAG $tag_name is [`cat $reboot_utag/ascii`]"
}
set_reboot_counter_property()
{
local reboot_cnt=0
local tag_name=${reboot_utag##*/}
if [ -d $reboot_utag ]; then
reboot_cnt=$(cat $reboot_utag/ascii)
notice "UTAG $tag_name has value [$reboot_cnt]"
else
notice "UTAG $tag_name does not exist"
fi
setprop $touch_status_prop $reboot_cnt
notice "property [$touch_status_prop] is set to [`getprop $touch_status_prop`]"
}
debug()
{
[ $dbg_on ] && echo "Debug: $*"
}
notice()
{
echo "$*"
echo "$scriptname: $*" > /dev/kmsg
}
add_device_params()
{
device_params=$device_params" $@"
debug "add_device_params='$device_params'"
}
drop_device_parameter()
{
device_params=${device_params% *}
debug "drop_device_parameter='$device_params'"
}
set_xml_file()
{
xml_file=$@
debug "working with XML file='$xml_file'"
}
exec_parser()
{
eval motobox expat -u -f $xml_file $device_params "$@" 2>/dev/null
}
reload_utags()
{
local mp=$1
local value
echo "1" > $mp/reload
value=$(cat $mp/reload)
while [ "$value" == "$reload_in_progress" ]; do
notice "waiting for loading to complete"
sleep 1;
value=$(cat $mp/reload)
notice "'$mp' current status [$value]"
done
}
procfs_wait_for_device()
{
local __result=$1
local status
local mpi
local IFS=' '
local device_timeout_count=0
while [ ! -f $hw_mp/reload ] || [ ! -f $config_mp/reload ]; do
notice "waiting for devices"
sleep 1;
if [ "$device_timeout_count" -eq "10" ];then
notice "waiting for devices timeout"
eval $__result=""
return
fi
device_timeout_count=$(($device_timeout_count + 1))
done
for mpi in $hw_mp $config_mp; do
status=$(cat $mpi/reload)
notice "mount point '$mpi' status [$status]"
if [ "$status" == "$need_to_reload" ]; then
notice "force $mpi reloading"
reload_utags $mpi
fi
done
for mpi in $hw_mp $config_mp; do
status=$(cat $mpi/reload)
notice "$mpi reload is [$status]"
device_timeout_count=0
while [ "$status" != "$reload_done" ]; do
notice "waiting for loading $mpi to complete"
sleep 1;
status=$(cat $mpi/reload)
if [ "$device_timeout_count" -eq "10" ]; then
notice "error: waiting for loading $mpi timeout"
break
fi
device_timeout_count=$(($device_timeout_count + 1))
done
done
eval $__result=$status
}
get_attr_data_by_name()
{
local __result=$1
local attr=$2
shift 2
local IFS=' '
eval $__result=""
for arg in ${@}; do
[ "${arg%=*}" == "$attr" ] || continue
debug "attr_data='${arg#*=}'"
eval $__result="${arg#*=}"
break
done
}
get_tag_data()
{
local __name=$1
local __value=$2
shift 2
local dataval
local IFS=' '
eval $__name=""
eval $__value=""
for arg in ${@}; do
case $arg in
string-array | string)
debug "---/ skip keyword: '$arg'"
continue;;
esac
debug "---> arg='$arg'"
if [ "${arg%=*}" == "name" ]; then
eval $__name=${arg#*=}
continue
fi
# eval treats ';' as a separator, thus make it '\;'
dataval=$(echo ${arg#?} | sed 's/;/\\;/g')
debug "<--- dataval='$dataval'"
eval $__value=$dataval
done
}
update_utag()
{
local utag=$1
local payload=$2
local verify
local rc
if [ ! -d $hw_mp/$utag ]; then
notice "creating utag '$utag'"
echo $utag > $hw_mp/all/new
rc=$?
[ "$rc" != "0" ] && notice "'$utag' create dir failed rc=$rc"
fi
debug "writing '$payload' to '$hw_mp/$utag/ascii'"
echo "$payload" > $hw_mp/$utag/ascii
rc=$?
if [ "$rc" != "0" ]; then
utag_update_fail="true"
notice "'$utag' write file failed rc=$rc"
fi
verify=$(cat $hw_mp/$utag/ascii)
debug "read '$verify' from '$hw_mp/$utag/ascii'"
[ "$verify" != "$payload" ] && notice "'$utag' payload validation failed"
}
populate_utags()
{
local selection="$@"
local pline
local ptag
local pvalue
for pline in $(exec_parser $selection); do
get_tag_data ptag pvalue $pline
url_style_off pvalue $pvalue
debug "tag='$ptag' value='$pvalue'"
update_utag $ptag $pvalue
done
}
set_ro_hw_properties_upgrade()
{
local utag_path
local utag_name
local prop_prefix
local utag_value
local verify
for hwtag in $(find $hw_mp -name '.system'); do
debug "path $hwtag has '.system' in its name"
prop_prefix="ro.vendor.hw."
utag_path=${hwtag%/*}
utag_name=${utag_path##*/}
utag_value=$(cat $utag_path/ascii)
setprop $prop_prefix$utag_name "$utag_value"
notice "ro.vendor.hw.$utag_name='$utag_value'"
done
}
set_ro_hw_property()
{
local hwtag=$1
local utag_path
local utag_name
local prop_prefix
local utag_value
local verify
debug "path $hwtag has '.system' in its name"
prop_prefix=$(cat $hwtag/ascii)
verify=${prop_prefix%.}
# esure property ends with '.'
if [ "$prop_prefix" == "$verify" ]; then
prop_prefix="$prop_prefix."
debug "added '.' at the end of [$prop_prefix]"
fi
utag_path=${hwtag%/*}
utag_name=${utag_path##*/}
utag_value=$(cat $utag_path/ascii)
setprop $prop_prefix$utag_name "$utag_value"
notice "$prop_prefix$utag_name='$utag_value'"
}
set_ro_hw_properties()
{
for hwtag in $(find $hw_mp -name '.system'); do
set_ro_hw_property $hwtag &
done
}
set_ro_vendor_incremental()
{
local vendor_incremental="ro.vendor.build.version.incremental"
local vendor_incremental_value
local fetch_prop="ro.build.version.incremental"
local fetch_value=$(getprop $fetch_prop)
[ -z "$fetch_value" ] && prefetch_from_file $fetch_prop vendor_incremental_value
setprop $vendor_incremental "$vendor_incremental_value"
notice "$vendor_incremental='$vendor_incremental_value'"
}
smart_value()
{
local mtag=$1
local __result=$2
local value
eval $__result=""
local tmp=${mtag#?}
# absolute path to the file starts with '/'
if [ "${mtag%$tmp}" == "/" ]; then
value=$(cat $mtag)
# property likely to have '.'
elif [ "$mtag" != "${mtag%.*}" ]; then
value=$(getprop $mtag)
else # tag otherwise
value=$(cat $hw_mp/$mtag/ascii)
fi
eval $__result='$value'
}
url_style_off()
{
local __arg=$1
local value=$2
if [[ $value == *%* ]]; then
value=$(echo ${value//%20/ })
value=$(echo ${value//%28/\(})
value=$(echo ${value//%29/\)})
fi
eval $__arg='$value'
}
match()
{
local mapping
local mline
local mtag
local fs_value
local mvalue
local matched
url_style_off mapping $1
debug "match mapping='$mapping'"
# put '\"' around $mapping to ensure XML
# parser takes it as a single argument
for mline in $(exec_parser \"$mapping\"); do
get_tag_data mtag mvalue $mline
url_style_off mvalue $mvalue
# obtain value based on data source: utag, property or file
smart_value $mtag fs_value
if [ "$fs_value" == "$mvalue" ]; then
matched="true";
else
matched="false";
fi
debug "cmp utag='$mtag' values '$mvalue' & '$fs_value' is \"$matched\""
[ "$matched" == "false" ] && break
done
[ "$matched" == "true" ] && return 0
return 1
}
find_match()
{
local __retval=$1
local tag_name
local fline
local line
local subsection
local matched="false"
eval $__retval=""
for fline in $(exec_parser); do
subsection=${fline%% *}
add_device_params $subsection
for line in $(exec_parser); do
get_attr_data_by_name tag_name "name" $line
debug "tag_name='$tag_name'"
match $tag_name
[ "$?" != "0" ] && continue
eval $__retval=$tag_name
matched="true"
break
done
drop_device_parameter
[ "$matched" == "true" ] && break
done
}
prefetch_from_file()
{
local pname=$1
local __result=$2
local value
local override
eval $__result=""
value=$(cat $bp_file 2>/dev/null | sed '/^$/d' | sed '/^#/d' | sed '/^import/d' | sed -n "/$pname=/p" | sed 's/.*=//')
debug "'$pname' from '$bp_file': '$value'"
if [ -f $oem_file ]; then
override=$(cat $oem_file 2>/dev/null | sed '/^$/d' | sed '/^#/d' | sed '/^import/d' | sed -n "/$pname=/p" | sed 's/.*=//')
[ "$override" ] && value=$override && debug "'$pname' from '$oem_file': '$value'"
fi
eval $__result=$value
}
append_match()
{
local prop_list=$1
local suffix="$2"
local dest_prop
local fetched_prop
local prop_value
local IFS=','
# properties list to put the result of appending hw suffix to
# example: appended="ro.vendor.product.name,ro.vendor.product.device"
for dest_prop in $prop_list; do
fetch_prop=${dest_prop}
# only alter property name that has "vendor" in it
if [ "${fetch_prop//.vendor}" != "$dest_prop" ]; then
fetch_prop=${fetch_prop//.vendor}
prop_value=$(getprop $fetch_prop)
[ -z "$prop_value" ] && prefetch_from_file $fetch_prop prop_value
# finally set destination property to appended value
setprop $dest_prop "$prop_value$suffix"
notice "$dest_prop='$prop_value$suffix'"
fi
done
}
process_mappings()
{
local pname=""
local pexport=""
local pdefault=""
local pappend=""
local putag=""
local subsection
local pline
local matched_val
local whitespace_val
local export_val
local utag_val
for pline in $(exec_parser); do
subsection=${pline%% *}
debug "subsection is '$subsection'"
get_attr_data_by_name pname "name" $pline
get_attr_data_by_name pexport "export" $pline
get_attr_data_by_name pdefault "default" $pline
get_attr_data_by_name pappend "append" $pline
get_attr_data_by_name putag "writeback" $pline
[ "$pname" ] && url_style_off pname $pname && debug "name='$pname'"
[ "$pexport" ] && url_style_off pexport $pexport && debug "export='$pexport'"
[ "$pdefault" ] && url_style_off pdefault $pdefault && debug "default='$pdefault'"
[ "$pappend" ] && url_style_off pappend $pappend && debug "append='$pappend'"
# add 'subsection' to permanent parameters
add_device_params $subsection
# call itself here to handle nonamed subsection, like quirks
[ -z "$pname" ] && [ -z "$pexport" ] && [ -z "$pdefault" ] && [ -z "$pappend" ] && [ -z "$putag" ] && process_mappings && continue
find_match matched_val
[ "$matched_val" ] && url_style_off matched_val $matched_val
# append_match handles OEM overrides, thus has to be called even with empty value
[ "$pappend" ] && append_match $pappend "$matched_val"
if [ "$matched_val" ]; then
if [ "$pexport" ]; then
setprop $pexport "$matched_val"
notice "exporting '$matched_val' into property $pexport"
fi
elif [ "$pexport" -a "$pdefault" ]; then
# if match is not found, proceed with default
setprop $pexport "$pdefault"
notice "defaulting '$pdefault' into property $pexport"
fi
if [ "$putag" ] && [ -d $hw_mp/$putag ]; then
export_val=$(getprop $pexport)
utag_val=$(cat $hw_mp/$putag/ascii)
debug "writeback compare $utag_val,$export_val"
# if property is empty value, clear the utag.
# if property and writeback utag are empty value, don't update utag
if [ "$export_val" -o "$utag_val" != "(null)" ] && [ "$utag_val" != "$export_val" ]; then
update_utag $putag $export_val
notice "writeback '$export_val' into utag $putag"
fi
fi
# remove the last added parameter
drop_device_parameter
done
}
# Main starts here
IFS=$'\n'
if [ ! -z "$mount_2nd_stage" ]; then
notice "Super image detection"
super_image_detection
return 0
fi
if [ ! -z "$reset_touch" ]; then
notice "reset reboot counter"
set_reboot_counter 0
return 0
fi
if [ ! -z "$dead_touch" ]; then
notice "property [$touch_status_prop] set to [dead]"
set_reboot_counter 1
return 0
fi
if [ -f /vendor/lib/modules/utags.ko ]; then
notice "loading utag driver"
insmod /vendor/lib/modules/utags.ko
if [ $? -ne 0 ]; then
gki_modules_full_path=`find /vendor/lib/modules -name "*-gki"`
if [ -n "$gki_modules_full_path" ]; then
gki_modules_path=`basename $gki_modules_full_path`
notice "loading gki utag driver in /vendor/lib/modules/$gki_modules_path"
insmod /vendor/lib/modules/$gki_modules_path/utags.ko
if [ $? -ne 0 ]; then
notice "fail to load /vendor/lib/modules/$gki_modules_path/utags.ko"
setprop ro.vendor.mot.gki.path "."
else
notice "successfully load /vendor/lib/modules/$gki_modules_path/utags.ko"
setprop ro.vendor.mot.gki.path $gki_modules_path
fi
else
notice "fail to load utag driver"
setprop ro.vendor.mot.gki.path "."
fi
else
setprop ro.vendor.mot.gki.path "."
fi
fi
notice "checking integrity"
# check necessary components exist and just proceed
# with RO properties setup otherwise
if [ ! -f /$BASEDIR/bin/expat ] || [ ! -f $vhw_file ]; then
notice "warning: missing expat or xml"
set_ro_hw_properties
return 0
fi
if [ ! -z "$populate_only" ]; then
# special handling for factory UTAGs provisioning
for path in /data/local/tmp /pds/factory; do
[ -f $path/$hw_cfg_file ] && break
done
notice "populating hw config from '$path/$hw_cfg_file'"
set_xml_file $path/$hw_cfg_file
populate_utags hardware
return 0
fi
notice "initializing procfs"
procfs_wait_for_device readiness
if [ "$readiness" != "0" ]; then
notice "no access to hw utags procfs"
return 1
fi
# populate touch status property with reboot counter
set_reboot_counter_property &
# XML parsing starts here
set_xml_file $vhw_file
get_attr_data_by_name boot_device_prop "match" $(exec_parser)
debug "attr='get' value='$boot_device_prop'"
if [ -z $boot_device_prop ]; then
notice "fatal: undefined boot device property"
return 1
fi
# ensure lower case
typeset -l boot_device=$(getprop $boot_device_prop)
# drop suffixes
boot_device=${boot_device%[_-]*}
notice "matching to boot device '$boot_device'"
# add 'validation' to permanent parameters
add_device_params validation
for line in $(exec_parser); do
get_attr_data_by_name product "name" $line
debug "attr='name' value='$product'"
if [ "$product" == "$boot_device" ]; then
get_attr_data_by_name xml_version "version" $line
[ "$xml_version" != "unknown" ] && notice "device '$boot_device' xml version='$xml_version'"
break
fi
done
[ "$xml_version" == "unknown" ] && notice "no match found for device '$boot_device'"
# delete obsolete 'version' utag if exists
[ -d $hw_mp/${ver_utag#?} ] && $(echo ${ver_utag#?} > $hw_mp/all/delete)
# read procfs version
[ -d $hw_mp/$ver_utag ] && version_fs=$(cat $hw_mp/$ver_utag/ascii)
notice "procfs version='$version_fs'"
# add 'device' and '$boot_device' to permanent parameters
add_device_params device $boot_device
[ "$xml_version" == "$version_fs" ] && notice "hw descriptor is up to date"
for section in $(exec_parser); do
debug "section='$section'"
case $section in
mappings)
# add 'mappings' to permanent parameters
add_device_params $section
process_mappings &
;;
*)
[ "$xml_version" == "$version_fs" ] && continue
populate_utags $section;;
esac
done
if [ "$xml_version" != "$version_fs" ]; then
# create version utag if it's missing
[ ! -d $hw_mp/$ver_utag ] && $(echo "$ver_utag" > $hw_mp/all/new)
# update procfs version
[ -d $hw_mp/$ver_utag ] && $(echo "$xml_version" > $hw_mp/$ver_utag/ascii)
fi
set_ro_vendor_incremental &
set_ro_hw_properties
if [ "$utag_update_fail" == "true" ]; then
set_ro_hw_properties_upgrade
fi
wait
notice "script init.oem.hw.sh finish "
return 0

View File

@ -0,0 +1,36 @@
#!/vendor/bin/sh
#
# Copyright (c) 2016, Motorola Mobility LLC, All rights reserved.
#
# The purpose of this script is to annotate panic dumps with useful information
# about the context of the event.
#
export PATH=/vendor/bin:$PATH
annotate()
{
VAL=`$2`
[ "$VAL" ] || return
if [ -e /sys/fs/pstore/annotate-ramoops-0 ] ; then
echo "$1: $VAL" > /sys/fs/pstore/annotate-ramoops-0
fi
if [ -e /proc/driver/mmi_annotate ] ; then
echo "$1: $VAL" > /proc/driver/mmi_annotate
fi
}
case $1 in
build*)
annotate "Boot mode" "getprop ro.boot.mode"
annotate "Console" "getprop ro.boot.console"
annotate "Secure hardware" "getprop ro.boot.secure_hardware"
annotate "Hab cid" "getprop ro.boot.hab.cid"
annotate "VB state" "getprop ro.boot.verifiedbootstate"
annotate "Verity mode" "getprop ro.boot.veritymode"
annotate "HW cid" "getprop ro.boot.cid"
annotate "SW cid" "getprop ro.boot.cid_sw"
annotate "Apdp state" "getprop ro.boot.device_apdp_state"
;;
esac

View File

@ -0,0 +1,69 @@
#!/vendor/bin/sh
# Copyright (c) 2021, Motorola Mobility LLC, All Rights Reserved.
#
# Date Created: 8/30/2021, Set CXP properties according to carrier channel
#
set_properties()
{
# do not set SPB ID for M80 modem
if [ $set_sbp_place ] && [ $set_sbp_place -ge 2 ]; then
sbp=0
fi
setprop ro.vendor.mtk_md_sbp_custom_value $sbp
setprop ro.vendor.operator.optr $1
setprop ro.vendor.operator.spec $2
setprop ro.vendor.operator.seg $3
if [ ! $optr ]; then
setprop persist.vendor.mtk_usp_md_sbp_code $sbp
setprop persist.vendor.operator.optr $1
setprop persist.vendor.operator.spec $2
setprop persist.vendor.operator.seg $3
fi
}
boot_carrier=`getprop ro.boot.carrier`
optr=`getprop persist.vendor.operator.optr`
set_sbp_place=`getprop ro.vendor.ril.set_sbp_place`
case $boot_carrier in
att|attpre )
sbp=7
set_properties OP07 SPEC0407 SEGDEFAULT
;;
cricket )
sbp=145
set_properties OP07 SPEC0407 SEGDEFAULT
;;
tmo|boost|cc|fi|metropcs|tracfone|retus )
sbp=8
set_properties OP08 SPEC0200 SEGDEFAULT
;;
usc )
sbp=236
set_properties OP236 SPEC0200 SEGDEFAULT
;;
vzw|vzwpre|comcast|spectrum )
sbp=12
set_properties OP12 SPEC0200 SEGDEFAULT
;;
ctcn )
sbp=9
setprop ro.vendor.mtk_md_sbp_custom_value 0
set_properties OP09 SPEC0212 SEGC
;;
cmcc )
sbp=1
setprop ro.vendor.mtk_md_sbp_custom_value 1
set_properties OP01 SPEC0200 SEGC
;;
* )
sbp=0
set_properties "" "" ""
;;
esac
return 0

23
rootdir/etc/apanic.rc Normal file
View File

@ -0,0 +1,23 @@
on init
# split minidump and full ramdump
setprop ro.vendor.aee.splict_framdump yes
service vendor.apanic_annotate /vendor/bin/apanic_mtk.sh
class late_start
user root
group log
oneshot
disabled
on property:ro.boot.bootreason=kernel_panic
setprop ro.vendor.boot.apanic.reason "boot"
start vendor.apanic_annotate
on property:ro.boot.bootreason=watchdog
setprop ro.vendor.boot.apanic.reason "boot"
start vendor.apanic_annotate
on property:vendor.debug.mtk.aeev.db=*
setprop ro.vendor.boot.apanic.reason "prop"
setprop ro.vendor.boot.apanic.prop "1"
start vendor.apanic_annotate

View File

@ -0,0 +1,86 @@
on post-fs-data
#
# Connectivity related modules and character device nodes (Begin)
#
#/dev/ttyMT2 for Connectivity BT/FM/GPS usage
chmod 0660 /dev/ttyMT2
chown system system /dev/ttyMT2
# GPS
mkdir /data/vendor/gps 0770 gps system
chown gps gps /dev/stpgps
chown gps gps /dev/stpgps2
chmod 0660 /dev/stpgps
chmod 0660 /dev/stpgps2
# GPS EMI
chmod 666 /dev/gps_emi
# WiFi
mkdir /data/misc/wifi 0770 wifi wifi
mkdir /data/misc/wifi/sockets 0770 wifi wifi
mkdir /data/misc/wpa_supplicant 0770 wifi wifi
#
# Connectivity related device nodes & configuration (end)
#
on boot
#
# Connectivity related services (Begin)
#
# GPS
#service mnld /vendor/bin/mnld
# class main
# user gps
# group gps inet misc sdcard_rw sdcard_r media_rw system radio
# socket mnld stream 660 gps system
#service BGW /vendor/bin/BGW
# user system
# group gps system radio
# class main
service wlan_assistant /vendor/bin/wlan_assistant
class main
user wifi
group system gps inet
#
# Connectivity related services (End)
#
#
# Connectivity related kernel objects (Begin)
#
# load connfem driver
on boot
insmod /vendor/lib/modules/connfem.ko
# load bt_drv
on property:vendor.connsys.driver.ready=yes
insmod /vendor/lib/modules/bt_drv_${ro.vendor.bt.platform}.ko
# load wifi chrdev driver and wlan driver after wmt_loader finish
on property:vendor.connsys.driver.ready=yes
insmod /vendor/lib/modules/${ro.vendor.wlan.chrdev}.ko
insmod /vendor/lib/modules/wlan_drv_${ro.vendor.wlan.gen}.ko
start wlan_assistant
# load fmradio_drv
on property:vendor.connsys.driver.ready=yes
insmod /vendor/lib/modules/fmradio_drv_${ro.vendor.fm.platform}.ko
# load gps_drv
on property:vendor.connsys.driver.ready=yes
insmod /vendor/lib/modules/${ro.vendor.gps.chrdev}.ko
#
# Connectivity related kernel objects (End)
#

View File

@ -0,0 +1,34 @@
import /vendor/etc/init/hw/factory_init.connectivity.common.rc
on boot
#
# Connectivity related services (Begin)
#
# WMT
service wmt_loader /vendor/bin/wmt_loader
user system
group system
oneshot
service wmt_launcher /vendor/bin/wmt_launcher -p /vendor/firmware/
user system
group system
#
# Connectivity related services (End)
#
#
# Connectivity related kernel objects (Begin)
#
# load wmt_drv
on boot
insmod /vendor/lib/modules/wmt_drv.ko
#
# Connectivity related kernel objects (End)
#

View File

@ -0,0 +1,42 @@
import /vendor/etc/init/hw/init.mtkgki.rc
mkdir /data/misc/sensors 0664 system system
service msensord /system/bin/msensord
user system
group system
oneshot
service akmd8963 /system/bin/akmd8963
disabled
user system
group system
on post-fs
# disable HPS
write /proc/hps/enabled 0
chmod 0660 /dev/spm
chown system system /dev/spm
on boot
service spm_script /vendor/bin/spm_loader
user system
group system
oneshot
on property:sys.usb.config=gs1gs3
write /sys/class/android_usb/android0/enable 0
write /sys/class/android_usb/android0/idVendor ${sys.usb.vid}
write /sys/class/android_usb/android0/idProduct 2029
write /sys/class/android_usb/android0/f_acm/port_index 2,4
write /sys/devices/platform/mt_usb/saving 1
write /sys/class/android_usb/android0/functions mass_storage,adb,acm
write /sys/class/android_usb/android0/enable 1
start adbd
setprop sys.usb.state ${sys.usb.config}
setprop sys.usb.acm_idx 2,4

890
rootdir/etc/factory_init.rc Normal file
View File

@ -0,0 +1,890 @@
# 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.
#
import /system_ext/etc/init/hw/vendor_init_as_system.rc
import ${ro.vendor.rc}factory_init.connectivity.rc
import ${ro.vendor.rc}factory_init.thp.rc
import /init.environ.rc
import /vendor/etc/init/trustonic.rc
import ${ro.vendor.rc}init.nvdata.rc
import /vendor/etc/init/microtrust.rc
import /vendor/etc/init/hw/init.aee.rc
import /system_ext/etc/init/hw/init.aee.rc
import /vendor/etc/init/vendor.mediatek.hardware.mtkpower@1.0-service.rc
import /vendor/etc/init/android.hardware.boot@1.2-service.rc
import /vendor/etc/init/android.hardware.boot@1.2-service-lazy.rc
import /vendor/etc/init/vendor.mediatek.hardware.thp@1.0-service.rc
import /vendor/etc/init/android.hardware.health@2.1-service.rc
#NFC
import /vendor/etc/init/hw/init.stnfc.rc
#copy from system/etc for APEX
import /system/etc/init/apexd.rc
import /system/etc/init/art_apex_boot_integrity.rc
import /system/etc/init/vold.rc
import /vendor/etc/init/hw/factory_init.project.rc
import /system/etc/init/servicemanager.rc
import /system/etc/init/hwservicemanager.rc
import /system/etc/init/android.hidl.allocator@1.0-service.rc
import ${ro.vendor.rc}multi_init.rc
on early-init
# Set init and its forked children's oom_adj.
write /proc/1/oom_score_adj -1000
# Disable sysrq from keyboard
write /proc/sys/kernel/sysrq 0
# Set the security context of /adb_keys if present.
restorecon /adb_keys
# Set the security context of /postinstall if present.
restorecon /postinstall
# Set up linker config subdirectories based on mount namespaces
mkdir /linkerconfig/bootstrap 0755
mkdir /linkerconfig/default 0755
# Generate ld.config.txt for early executed processes
exec -- /system/bin/bootstrap/linkerconfig --target /linkerconfig/bootstrap
chmod 644 /linkerconfig/bootstrap/ld.config.txt
copy /linkerconfig/bootstrap/ld.config.txt /linkerconfig/default/ld.config.txt
chmod 644 /linkerconfig/default/ld.config.txt
# Mount bootstrap linker configuration as current
mount none /linkerconfig/bootstrap /linkerconfig bind rec
start ueventd
# Run apexd-bootstrap so that APEXes that provide critical libraries
# become available. Note that this is executed as exec_start to ensure that
# the libraries are available to the processes started after this statement.
exec_start apexd-bootstrap
# Generate linker config based on apex mounted in bootstrap namespace
update_linker_config
#INTERNAL_START
mount debugfs debugfs /sys/kernel/debug
chmod 0755 /sys/kernel/debug
#INTERNAL_END
# initialize vendor.all.modules.ready to 1 here to prevent NOT GKI project blocked
setprop vendor.all.modules.ready 1
on init
sysclktz 0
# Mix device-specific information into the entropy pool
copy /proc/cmdline /dev/urandom
copy /default.prop /dev/urandom
write /proc/bootprof "INIT: on init start"
# Backward compatibility.
symlink /system/bin /bin
symlink /system/etc /etc
# Backward compatibility.
symlink /sys/kernel/debug /d
# Link /vendor to /system/vendor for devices without a vendor partition.
symlink /system/vendor /vendor
# Temp Backward compatibility
symlink /dev/block/by-name/boot /dev/bootimg
symlink /dev/block/by-name/recovery /dev/recovery
symlink /dev/block/by-name/secro /dev/sec_ro
symlink /dev/block/by-name/kb /dev/kb
symlink /dev/block/by-name/dkb /dev/dkb
symlink /dev/block/by-name/seccfg /dev/seccfg
symlink /dev/block/by-name/proinfo /dev/pro_info
symlink /dev/block/by-name/nvram /dev/nvram
symlink /dev/block/by-name/para /dev/misc
symlink /dev/block/by-name/logo /dev/logo
# Mount cgroup mount point for cpu accounting
mount cgroup none /acct cpuacct
mkdir /acct/uid
# Create energy-aware scheduler tuning nodes
mkdir /dev/stune
mount cgroup none /dev/stune nodev noexec nosuid schedtune
mkdir /dev/stune/foreground
mkdir /dev/stune/background
mkdir /dev/stune/top-app
mkdir /dev/stune/rt
chown system system /dev/stune
chown system system /dev/stune/foreground
chown system system /dev/stune/background
chown system system /dev/stune/top-app
chown system system /dev/stune/rt
chown system system /dev/stune/tasks
chown system system /dev/stune/foreground/tasks
chown system system /dev/stune/background/tasks
chown system system /dev/stune/top-app/tasks
chown system system /dev/stune/rt/tasks
chmod 0664 /dev/stune/tasks
chmod 0664 /dev/stune/foreground/tasks
chmod 0664 /dev/stune/background/tasks
chmod 0664 /dev/stune/top-app/tasks
chmod 0664 /dev/stune/rt/tasks
# Permissions for System Server and daemons.
chown system system /sys/power/autosleep
chown system system /sys/power/state
chown system system /sys/power/wakeup_count
chown radio wakelock /sys/power/wake_lock
chown radio wakelock /sys/power/wake_unlock
chmod 0660 /sys/power/state
chmod 0660 /sys/power/wake_lock
chmod 0660 /sys/power/wake_unlock
chmod 0660 /sys/power/wakeup_count
restorecon_recursive /mnt
# Support legacy paths
symlink /sdcard /mnt/sdcard
mount configfs none /config nodev noexec nosuid
chmod 0770 /config/sdcardfs
chown system package_info /config/sdcardfs
# Mount binderfs
mkdir /dev/binderfs
mount binder binder /dev/binderfs stats=global
chmod 0755 /dev/binderfs
# Mount fusectl
mount fusectl none /sys/fs/fuse/connections
symlink /dev/binderfs/binder /dev/binder
symlink /dev/binderfs/hwbinder /dev/hwbinder
symlink /dev/binderfs/vndbinder /dev/vndbinder
chmod 0666 /dev/binderfs/hwbinder
chmod 0666 /dev/binderfs/binder
chmod 0666 /dev/binderfs/vndbinder
mkdir /mnt/secure 0700 root root
mkdir /mnt/secure/asec 0700 root root
mkdir /mnt/asec 0755 root system
mkdir /mnt/obb 0755 root system
mkdir /mnt/media_rw 0750 root media_rw
mkdir /mnt/user 0755 root root
mkdir /mnt/user/0 0755 root root
mkdir /mnt/expand 0771 system system
mkdir /mnt/appfuse 0711 root root
# Storage views to support runtime permissions
mkdir /mnt/runtime 0700 root root
mkdir /mnt/runtime/default 0755 root root
mkdir /mnt/runtime/default/self 0755 root root
mkdir /mnt/runtime/read 0755 root root
mkdir /mnt/runtime/read/self 0755 root root
mkdir /mnt/runtime/write 0755 root root
mkdir /mnt/runtime/write/self 0755 root root
# Symlink to keep legacy apps working in multi-user world
symlink /storage/self/primary /sdcard
symlink /storage/self/primary /mnt/sdcard
symlink /mnt/user/0/primary /mnt/runtime/default/self/primary
# root memory control cgroup, used by lmkd
mkdir /dev/memcg 0700 root system
mount cgroup none /dev/memcg memory
# app mem cgroups, used by activity manager, lmkd and zygote
mkdir /dev/memcg/apps/ 0755 system system
write /proc/sys/kernel/panic_on_oops 1
write /proc/sys/kernel/hung_task_timeout_secs 0
write /proc/cpu/alignment 4
# scheduler tunables
# Disable auto-scaling of scheduler tunables with hotplug. The tunables
# will vary across devices in unpredictable ways if allowed to scale with
# cpu cores.
write /proc/sys/kernel/sched_tunable_scaling 0
write /proc/sys/kernel/sched_latency_ns 10000000
write /proc/sys/kernel/sched_wakeup_granularity_ns 2000000
write /proc/sys/kernel/sched_child_runs_first 0
write /proc/sys/kernel/randomize_va_space 2
write /proc/sys/vm/mmap_min_addr 32768
write /proc/sys/net/ipv4/ping_group_range "0 2147483647"
write /proc/sys/net/unix/max_dgram_qlen 600
write /proc/sys/kernel/sched_rt_runtime_us 950000
write /proc/sys/kernel/sched_rt_period_us 1000000
# Assign reasonable ceiling values for socket rcv/snd buffers.
# These should almost always be overridden by the target per the
# the corresponding technology maximums.
write /proc/sys/net/core/rmem_max 262144
write /proc/sys/net/core/wmem_max 262144
# reflect fwmark from incoming packets onto generated replies
write /proc/sys/net/ipv4/fwmark_reflect 1
write /proc/sys/net/ipv6/fwmark_reflect 1
# set fwmark on accepted sockets
write /proc/sys/net/ipv4/tcp_fwmark_accept 1
# disable icmp redirects
write /proc/sys/net/ipv4/conf/all/accept_redirects 0
write /proc/sys/net/ipv6/conf/all/accept_redirects 0
#INTERNAL_START
mkdir /mnt/cd-rom 0000 system system
#INTERNAL_END
# enable armv8_deprecated instruction hooks
write /proc/sys/abi/swp 1
# Linux's execveat() syscall may construct paths containing /dev/fd
# expecting it to point to /proc/self/fd
symlink /proc/self/fd /dev/fd
# set RLIMIT_NICE to allow priorities from 19 to -20
setrlimit nice 40 40
start servicemanager
start hwservicemanager
start hidl_memory
# Healthd can trigger a full boot from charger mode by signaling this
# property when the power button is held.
on property:sys.boot_from_charger_mode=1
class_stop charger
trigger late-init
# Load properties from /system/ + /factory after fs mount.
on load_system_props_action
load_system_props
on load_persist_props_action
load_persist_props
start logd
start logd-reinit
# Indicate to fw loaders that the relevant mounts are up.
on firmware_mounts_complete
rm /dev/.booting
# Mount filesystems and start core system services.
on late-init
trigger early-fs
# Mount fstab in init.{$device}.rc by mount_all command. Optional parameter
# '--early' can be specified to skip entries with 'latemount'.
# /system and /vendor must be mounted by the end of the fs stage,
# while /data is optional.
trigger fs
trigger post-fs
# Load properties from /system/ + /factory after fs mount. Place
# this in another action so that the load will be scheduled after the prior
# issued fs triggers have completed.
trigger load_system_props_action
# Mount fstab in init.{$device}.rc by mount_all with '--late' parameter
# to only mount entries with 'latemount'. This is needed if '--early' is
# specified in the previous mount_all command on the fs stage.
# With /system mounted and properties form /system + /factory available,
# some services can be started.
trigger late-fs
# Now we can mount /data. File encryption requires keymaster to decrypt
# /data, which in turn can only be loaded when system properties are present.
trigger post-fs-data
# Load persist properties and override properties (if enabled) from /data.
trigger load_persist_props_action
# Remove a file to wake up anything waiting for firmware.
trigger firmware_mounts_complete
trigger early-boot
trigger boot
on early-fs
# Once metadata has been mounted, we'll need vold to deal with userdata checkpointing
start vold
# mount different fs start
on fs
#USB configfs
mkdir /dev/usb-ffs 0770 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 0xFFFF
write /config/usb_gadget/g1/bcdUSB 0x0200
mkdir /config/usb_gadget/g1/strings/0x409 0770
write /config/usb_gadget/g1/strings/0x409/manufacturer "Android"
write /config/usb_gadget/g1/strings/0x409/product "Android"
write /config/usb_gadget/g1/bDeviceClass 0
write /config/usb_gadget/g1/bDeviceSubClass 0
write /config/usb_gadget/g1/bDeviceProtocol 0
mkdir /config/usb_gadget/g1/functions/mass_storage.usb0
mkdir /config/usb_gadget/g1/functions/ffs.adb
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/configs/b.1 0770 shell shell
mkdir /config/usb_gadget/g1/configs/b.1/strings/0x409 0770 shell shell
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 uid=2000,gid=2000
#INTERNAL_START
write /proc/bootprof "INIT:Mount_START"
start vendor.boot-hal-1-2
mount_all --early
write /proc/bootprof "INIT:Mount_END"
#INTERNAL_END
# mount different fs end
on post-fs
start logd
start light-default
start system_suspend
start merged_hal_service
start capi-2-0
start health-hal-2-1
# Once everything is setup, no need to modify /.
# The bind+ro combination avoids modifying any other mount flags.
# mount rootfs rootfs / remount bind ro
# Mount shared so changes propagate into child namespaces
mount rootfs rootfs / shared rec
# Mount default storage into root namespace
mount none /mnt/runtime/default /storage bind rec
mount none none /storage slave rec
# Make sure /sys/kernel/debug (if present) is labeled properly
# Note that tracefs may be mounted under debug, so we need to cross filesystems
restorecon --recursive --cross-filesystems /sys/kernel/debug
# Support legacy paths
symlink /sdcard /storage/sdcard0
chown system system /system/data
mkdir /system/cache 0770 system cache
# We restorecon /cache in case the cache partition has been reset.
restorecon_recursive /cache
# Same reason as /data above
chown system cache /cache
chmod 0770 /cache
# This may have been created by the recovery system with odd permissions
chown system cache /cache/recovery
chmod 0770 /cache/recovery
#change permissions on vmallocinfo so we can grab it from bugreports
chown root log /proc/vmallocinfo
chmod 0440 /proc/vmallocinfo
#change permissions on kmsg & sysrq-trigger so bugreports can grab kthread stacks
chown root system /proc/kmsg
chmod 0440 /proc/kmsg
chown root system /proc/sysrq-trigger
chmod 0220 /proc/sysrq-trigger
chown system log /proc/last_kmsg
chmod 0440 /proc/last_kmsg
# make the selinux kernel policy world-readable
chmod 0444 /sys/fs/selinux/policy
# create the lost+found directories, so as to enforce our permissions
mkdir /cache/lost+found 0770 root root
#INTERNAL_START
mkdir /cache/recovery 0770 system system
chown system system /mnt/vendor/protect_f
chmod 0770 /mnt/vendor/protect_f
chown system system /mnt/vendor/protect_s
chmod 0770 /mnt/vendor/protect_s
chown system system /mnt/vendor/nvcfg
chmod 0771 /mnt/vendor/nvcfg
restorecon_recursive /mnt/vendor/nvcfg
chown root system /mnt/vendor/nvdata
chmod 0771 /mnt/vendor/nvdata
mkdir /mnt/vendor/nvdata/media 0771 media audio
restorecon_recursive /mnt/vendor/nvdata
#INTERNAL_END
on late-fs
# HALs required before storage encryption can get unlocked (FBE/FDE)
class_start early_hal
wait_for_prop hwservicemanager.ready "true"
start vendor.keymaster-3-0
start vendor.keymaster-3-0-trustonic
start vendor.keymaster-4-0
start vendor.keymaster-4-0-trustonic
start vendor.keymaster-4-0-beanpod
start vendor.keymaster-4-1-beanpod
start vendor.keymint-default
start keymaster_attestation-1-1
exec_start wait_for_keymaster
mount_all --late
on post-fs-data
write /proc/bootprof "INIT:post-fs-data"
wait_for_prop vendor.all.modules.ready 1
write /proc/bootprof "modprobe: Load_Module_DONE"
#Thermal
mkdir /data/.tp/ 0775 system system
# symlink to bugreport storage location
rm /data/bugreports
symlink /data/user_de/0/com.android.shell/files/bugreports /data/bugreports
# VIA flashlessd service
mkdir /data/flashless 0770 radio nvram
mkdir /mnt/vendor/nvdata/md_via 0770 root nvram
chmod 0660 /dev/ttyMT4
chown radio radio /dev/ttyMT4
chmod 0660 /dev/vmodem
chown radio radio /dev/vmodem
#VIA pppd service
mkdir /data/pppd_via 0770 radio system
# md32 boot
chown root system /dev/md32
chmod 0440 /dev/md32
chown root system /sys/class/misc/md32/md32_mobile_log
chmod 0660 /sys/class/misc/md32/md32_mobile_log
write /sys/class/misc/md32/md32_boot 1
# dhcp server
mkdir /data/misc/dhcp 0770 dhcp dhcp
chown dhcp dhcp /data/misc/dhcp
# device info interface
chmod 0440 /dev/devmap
chown root system /dev/devmap
#change partition permission
exec /vendor/etc/partition_permission.sh
#INTERNAL_START
#SeLinux
mkdir /data/ccci_cfg 0770 system radio
restorecon /data/ccci_cfg
restorecon_recursive /mnt/vendor/protect_f
restorecon_recursive /mnt/vendor/protect_s
## Custom pos-fs area (START)
# Please add custom fs operation below
# Touch Panel
chown root diag /sys/module/tpd_setting/parameters/tpd_calmat
chown root diag /sys/module/tpd_setting/parameters/tpd_em_debounce_time
chown root diag /sys/module/tpd_debug/parameters/tpd_em_log
chown root diag /sys/module/tpd_debug/parameters/tpd_em_log_to_fs
# RTC
mkdir /data/misc/rtc 0770 system system
# Modem related device nodes
mkdir /mnt/vendor/nvdata/md 0770 root system
mkdir /mnt/vendor/nvdata/md2 0770 root system
mkdir /mnt/vendor/nvdata/md3 0770 root system
mkdir /data/md3 0770 root system
chown radio radio /sys/kernel/ccci/boot
#set mlock limit to infinate (for m4u operation)
setrlimit 8 -1 -1
#VideoCodec
chmod 0666 /dev/Vcodec
mkdir /data/amit/
# GPIO
chmod 0666 /dev/mtgpio
chmod 0666 /dev/exm0
#NFC
rm /data/mtknfc_server
## Custom pos_fs area (END)
#INTERNAL_END
# Separate location for storing security policy files on data
mkdir /data/security 0711 system system
# It is recommended to put unnecessary data/ initialization from post-fs-data
# to start-zygote in device's init.rc to unblock zygote start.
on zygote-start && property:ro.crypto.state=unencrypted
# A/B update verifier that marks a successful boot.
exec_start update_verifier_nonencrypted
start netd
start zygote
start zygote_secondary
on zygote-start && property:ro.crypto.state=unsupported
# A/B update verifier that marks a successful boot.
exec_start update_verifier_nonencrypted
start netd
start zygote
start zygote_secondary
on zygote-start && property:ro.crypto.state=encrypted && property:ro.crypto.type=file
# A/B update verifier that marks a successful boot.
exec_start update_verifier_nonencrypted
start netd
start zygote
start zygote_secondary
on boot
setprop sys.usb.configfs 1
setprop sys.usb.controller "11201000.usb0"
setprop sys.usb.ffs.aio_compat 1
setprop vendor.usb.clear boot
# TTY
chmod 0660 /dev/ttyGS0
chown system radio /dev/ttyGS0
chmod 0660 /dev/ttyGS1
chown system radio /dev/ttyGS1
# For BT relayer
chown bluetooth radio /dev/ttyGS2
chmod 0660 /dev/ttyGS2
# For MD Logger
chown system radio /dev/ttyGS3
chmod 0660 /dev/ttyGS3
#VIA device property
setprop viatel.device.asci uart.4.ttyMT
setprop viatel.device.fls sdio.3.ttySDIO
setprop viatel.device.at sdio.4.ttySDIO
setprop viatel.device.data sdio.1.ttySDIO
# For backlight
chmod 0664 /sys/class/leds/lcd-backlight/brightness
chown system system /sys/class/leds/lcd-backlight/brightness
# Power Manager
write /sys/power/pm_freeze_timeout 2000
# basic network init
ifup lo
hostname localhost
domainname localdomain
#INTERNAL_START
# Start default class, this line is very important!!
class_start default
#INTERNAL_END
# Start standard binderized HAL daemons
class_start hal
class_start core
on nonencrypted
class_start main
class_start late_start
on property:vold.decrypt=trigger_default_encryption
start defaultcrypto
on property:vold.decrypt=trigger_encryption
start surfaceflinger
start encrypt
on property:vold.decrypt=trigger_reset_main
class_reset main
on property:vold.decrypt=trigger_load_persist_props
load_persist_props
start logd
start logd-reinit
on property:vold.decrypt=trigger_post_fs_data
trigger post-fs-data
trigger zygote-start
on property:vold.decrypt=trigger_restart_min_framework
# A/B update verifier that marks a successful boot.
exec_start update_verifier
class_start main
on property:vold.decrypt=trigger_restart_framework
stop surfaceflinger
start surfaceflinger
# A/B update verifier that marks a successful boot.
exec_start update_verifier
class_start main
class_start late_start
on property:vold.decrypt=trigger_shutdown_framework
class_reset late_start
class_reset main
# One shot invocation to deal with encrypted volume.
on defaultcrypto
exec - root -- /system/bin/vdc --wait cryptfs mountdefaultencrypted
# vold will set vold.decrypt to trigger_restart_framework (default
# encryption) or trigger_restart_min_framework (other encryption)
# One shot invocation to encrypt unencrypted volumes
# mtk modification:
# To speed up the booting in meta/factory mode, we don't encrypt the device.
# And then handle it as 'unencrypted' state.
on encrypt
mount ext4 /dev/block/by-name/userdata /data noatime nosuid nodev noauto_da_alloc discard wait
setprop vendor.crypto.fake_encrypt 1
setprop vold.post_fs_data_done 0
trigger post-fs-data
on property:vendor.crypto.fake_encrypt=1 && property:vold.post_fs_data_done=1
trigger load_persist_props_action
# setprop ro.crypto.state unencrypted
setprop vendor.soter.teei.crypto.state unencrypted
exec_start update_verifier
class_start main
class_start late_start
start mount_all_storages
service ueventd /system/bin/ueventd
class core
critical
seclabel u:r:ueventd:s0
service console /system/bin/sh
class core
console
disabled
user shell
group shell log readproc
seclabel u:r:shell:s0
on property:sys.powerctl=*
powerctl ${sys.powerctl}
#Log too much setting
on property:ro.vendor.mtklog_internal=1
setprop vendor.logmuch.value 10000
on property:ro.debuggable=1
# Give writes to anyone for the trace folder on debug builds.
# The folder is used to store method traces.
chmod 0773 /data/misc/trace
start console
# adbd is controlled via property triggers in init.<platform>.usb.rc
service adbd /apex/com.android.adbd/bin/adbd --root_seclabel=u:r:su:s0
class core
socket adbd seqpacket 660 system system
disabled
override
seclabel u:r:adbd:s0
#INTERNAL_START
## Custom service area (START)
# Please add custom service below
service thermal_manager /vendor/bin/thermal_manager
user root
group system
oneshot
service permission_check /vendor/bin/permission_check
user root
group system radio
oneshot
service ccci_mdinit /vendor/bin/ccci_mdinit 0
user system
group radio system
oneshot
service ccci_rpcd /vendor/bin/ccci_rpcd 0
user radio
group radio system
oneshot
service fuelgauged /vendor/bin/fuelgauged
class main
user system
group system
service mdlogger /system/bin/mdlogger
class main
user shell
group shell system radio sdcard_rw inet
disabled
oneshot
service dualmdlogger /system/bin/dualmdlogger
class main
user shell
group shell system radio sdcard_rw inet
disabled
oneshot
service factory_no_image /vendor/bin/factory
user root
group radio system wifi media gps audio bluetooth wakelock nfc
capabilities BLOCK_SUSPEND NET_RAW NET_ADMIN SYS_ADMIN SYS_BOOT
service emdlogger1 /system/system_ext/bin/emdlogger1
class main
user shell
group system shell radio sdcard_rw inet sdcard_r media_rw
disabled
oneshot
service emdlogger2 /system/bin/emdlogger2
class main
user shell
group system shell radio sdcard_rw inet sdcard_r media_rw
disabled
oneshot
service emdlogger3 /system/bin/emdlogger3
class main
user shell
group system shell radio sdcard_rw inet sdcard_r media_rw
disabled
oneshot
service emdlogger5 /system/bin/emdlogger5
class main
user shell
group system shell radio sdcard_rw inet sdcard_r media_rw
disabled
oneshot
service emdlogger6 /system/bin/emdlogger6
class main
user shell
group system shell radio sdcard_rw inet sdcard_r media_rw
disabled
oneshot
## Custom service area (END)
on property:vendor.usb.clear=1 && property:sys.usb.configfs=1
stop adbd
setprop sys.usb.ffs.ready 0
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
write /sys/devices/platform/mt_usb/saving 0
setprop vendor.usb.clear 2
start adbd
#mass_storage,adb,acm
on property:ro.boot.usbconfig=0 && property:sys.usb.configfs=1 && property:vendor.usb.clear=boot
start adbd
on property:sys.usb.ffs.ready=1 && property:ro.boot.usbconfig=0 && \
property:sys.usb.configfs=1 && property:vendor.usb.clear=boot
write /config/usb_gadget/g1/UDC "none"
write /config/usb_gadget/g1/strings/0x409/serialnumber ${ro.serialno}
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "adb_acm"
write /config/usb_gadget/g1/idProduct 0x2006
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.gs0 /config/usb_gadget/g1/configs/b.1/f3
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop vendor.usb.acm_idx "1"
on property:ro.boot.usbconfig=1 && property:sys.usb.configfs=1 && property:vendor.usb.clear=boot
start adbd
on property:sys.usb.ffs.ready=1 && property:ro.boot.usbconfig=1 && \
property:sys.usb.configfs=1 && property:vendor.usb.clear=boot
write /config/usb_gadget/g1/UDC "none"
write /config/usb_gadget/g1/strings/0x409/serialnumber ${ro.serialno}
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "adb_acm"
write /config/usb_gadget/g1/idProduct 0x2006
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.gs0 /config/usb_gadget/g1/configs/b.1/f3
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop vendor.usb.acm_idx "1"
#singloe modem comport for factory mode
on property:sys.usb.config=gs3,dual_acm && property:sys.usb.configfs=1
setprop vendor.usb.clear 1
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=gs3,dual_acm && \
property:vendor.usb.clear=2 && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "gs3_dual_acm"
write /config/usb_gadget/g1/idProduct 0x202E
write /sys/devices/platform/mt_usb/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.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 ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
setprop vendor.usb.clear 0
setprop vendor.usb.acm_idx "1,4"
on property:sys.usb.config=gs1gs3,dual_acm && property:sys.usb.configfs=1
setprop vendor.usb.clear 1
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=gs1gs3,dual_acm && \
property:vendor.usb.clear=2 && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "gs1gs3_dual_acm"
write /config/usb_gadget/g1/idProduct 0x202F
write /sys/devices/platform/mt_usb/saving 1
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/acm.gs0 /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/acm.gs1 /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 ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
setprop vendor.usb.clear 0
setprop vendor.usb.acm_idx "1,2,4"
on property:sys.usb.config=gs1gs3 && property:sys.usb.configfs=1
setprop vendor.usb.clear 1
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=gs1gs3 && \
property:vendor.usb.clear=2 && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "gs1gs3"
write /config/usb_gadget/g1/idProduct 0x2029
write /sys/devices/platform/mt_usb/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.gs1 /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 ${sys.usb.controller}
setprop vendor.usb.clear 0
setprop vendor.usb.acm_idx "1,4"
# MTK fast charging support
on property:persist.vendor.mediatek.fast_charging.support=*
write /sys/devices/platform/charger/fast_chg_indicator ${persist.vendor.mediatek.fast_charging.support}
#INTERNAL_END

View File

@ -0,0 +1 @@
/dev/block/zram0 none swap defaults zramsize=75%,max_comp_streams=8,zram_backingdev_size=prop

2
rootdir/etc/init.aee.rc Normal file
View File

@ -0,0 +1,2 @@
on init
write /proc/aed/generate-oops aee0

View File

@ -0,0 +1,67 @@
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 && property:ro.bootmode=charger
# set governor.
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_util_clamp_min_rt_default 0
# restore boot perf.
write /proc/sys/kernel/sched_migration_cost_ns 200000
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 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 /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_util_clamp_min_rt_default 0
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

View File

@ -0,0 +1,14 @@
on post-fs
chown system system /mnt/vendor/tzapp
chmod 0770 /mnt/vendor/tzapp
restorecon_recursive /mnt/vendor/tzapp
service trustlet_backup /vendor/bin/init.mmi.backup.trustlet.sh
class main
user system
group system
oneshot
disabled
on property:sys.boot_completed=1
start trustlet_backup

View File

@ -0,0 +1,25 @@
import /vendor/etc/init/hw/init.mmi.backup.trustlet.rc
#insmod usbnet.ko when on factory mode
on early-init && property:ro.boot.atm=enable && property:ro.bootmode=mot-factory
insmod /vendor/lib/modules/moto_f_usbnet.ko
on early-init
insmod /vendor/lib/modules/mmi_info.ko
on early-boot && property:ro.vendor.build.motfactory=1
wait /sys/devices/platform/moto_chg_tcmd/force_chg_usb_suspend
chown system system /sys/devices/platform/moto_chg_tcmd/force_chg_usb_suspend
on post-fs-data
# for batt_health server
mkdir /mnt/vendor/persist/batt_health 0770 vendor_pwric vendor_pwric
on property:sys.boot_completed=1 && property:ro.build.type=userdebug
start vendor.batt_health
on charger && property:ro.build.type=userdebug
start vendor.batt_health
service vendor.batt_health /vendor/bin/batt_health
class late_start
user vendor_pwric
group vendor_pwric cache net_admin log system
disabled

View File

@ -0,0 +1,210 @@
on early-init
insmod /vendor/lib/modules/sensors_class.ko
insmod /vendor/lib/modules/sx937x_sar.ko
insmod /vendor/lib/modules/bq25980_mmi.ko
insmod /vendor/lib/modules/mmi_decrete_charger_cp_qc3p.ko
insmod /vendor/lib/modules/moto_mmap_fault.ko
exec_background u:r:vendor_modprobe:s0 -- /vendor/bin/modprobe -a -d /vendor/lib/modules qpnp_adaptive_charge leds-gpio pn557
exec u:r:vendor_modprobe:s0 -- /vendor/bin/modprobe -r -d /vendor/lib/modules zram
on post-fs-data
# calibration
mkdir /data/vendor/sensor 0774 system system
# Sensor
chmod 0660 /dev/hf_manager
chown system system /dev/hf_manager
# config fingerprint
mkdir /data/vendor/.fps 0770 system vendor_fingerp
mkdir /mnt/vendor/persist/fps 0770 system system
mkdir /data/vendor/egis 0770 system vendor_fingerp
mkdir /data/vendor/egis/cqa 0770 system vendor_fingerp
mkdir /mnt/vendor/persist/egis 0770 system vendor_fingerp
# Required by touchRec for write the touch data
mkdir /data/vendor/touchrec 0770 input input
chown input input /data/vendor/touchrec/bootindex
chown input input /data/vendor/touchrec/lastbootuuid
chown input input /data/vendor/touchrec/touch_data.txt
chmod 0664 /data/vendor/touchrec/touch_data.txt
service vendor.modem-rfs-sh /vendor/bin/init.mmi.modem-rfs.sh loop 600
class late_start
user root
group log system radio
oneshot
on late-init
#moto algo params
chmod 0660 /sys/bus/platform/drivers/mtk_nanohub/algo_params
chown system system /sys/bus/platform/drivers/mtk_nanohub/algo_params
chown system system /sys/class/sensors/capsense_bottom_left/enable
chown system system /sys/class/sensors/capsense_bottom_left/poll_delay
chown system system /sys/class/sensors/capsense_bottom_right/enable
chown system system /sys/class/sensors/capsense_bottom_right/poll_delay
chown system system /sys/class/sensors/capsense_top_left/enable
chown system system /sys/class/sensors/capsense_top_left/poll_delay
chown system system /sys/class/sensors/capsense_top_mid/enable
chown system system /sys/class/sensors/capsense_top_mid/poll_delay
chown system system /sys/class/sensors/capsense_top_right/enable
chown system system /sys/class/sensors/capsense_top_right/poll_delay
exec u:r:vendor_modprobe:s0 -- /vendor/bin/modprobe -a -d /vendor/lib/modules moto_mm moto_swap
service capsense_reset /vendor/bin/capsense_reset
class core
user system
group system input
disabled
on property:sys.boot_completed=1
start capsense_reset
# Turn on led to indicate device on in factory mode
on property:ro.bootmode=mot-factory
write /sys/class/leds/charging/brightness 255
on early-boot
# Permission for Health Storage HAL
chown system system /sys/devices/platform/soc/112b0000.ufshci/manual_gc
chown system system /sys/devices/platform/soc/112b0000.ufshci/ufshid/trigger
service nxpnfcinfo /system/vendor/bin/nxpnfcinfo
class late_start
group nfc
user system
oneshot
on property:ro.vendor.hw.nfc=ese_nq
insmod /vendor/lib/modules/nxp_i2c.ko
insmod /vendor/lib/modules/nxp_ese.ko
wait /dev/nq-nci
chown nfc nfc /dev/nq-nci
chmod 0666 /dev/nq-nci
wait /dev/p73
chown secure_element secure_element /dev/p73
chmod 0666 /dev/p73
on property:ro.vendor.hw.nfc=samsung
insmod /vendor/lib/modules/sec_nfc.ko
wait /dev/sec-nfc
chown nfc nfc /dev/sec-nfc
chmod 0770 /dev/sec-nfc
on boot
write /sys/class/i2c-dev/i2c-9/device/9-0030/wireless_fw_update 1
# Set wls perms for HAL
chown system system /sys/class/power_supply/wireless/device/pen_control
chown system system /sys/class/power_supply/wireless/device/tx_mode
chown system system /sys/class/power_supply/wireless/device/wls_input_current_limit
chown system system /sys/class/power_supply/wireless/device/folio_mode
chmod 0660 /sys/class/power_supply/wireless/device/pen_control
chmod 0660 /sys/class/power_supply/wireless/device/tx_mode
chmod 0660 /sys/class/power_supply/wireless/device/wls_input_current_limit
chmod 0660 /sys/class/power_supply/wireless/device/folio_mode
# change permission for capsensor
chown system system /sys/class/capsense/reset
chown system system /sys/class/capsense/int_state
chown radio system /sys/class/capsense/reg
chown radio system /sys/class/capsense/fw_download_status
chmod 0660 /sys/class/capsense/reset
chmod 0660 /sys/class/capsense/int_state
chmod 0660 /sys/class/capsense/reg
chmod 0660 /sys/class/capsense/fw_download_status
# change dir permission
mkdir /data/vendor/camera_dump
chown root camera /data/vendor/camera_dump
chmod 0770 /data/vendor/camera_dump
# Change ownership and permission for cp-standalone factory testing
chown system system /sys/class/power_supply/cp-standalone/voltage_now
chown system system /sys/class/power_supply/cp-standalone/device/force_chg_auto_enable
chmod 0644 /sys/class/power_supply/cp-standalone/voltage_now
# Set adaptive charging perms for HAL
chown system system /sys/module/qpnp_adaptive_charge/parameters/upper_limit
chown system system /sys/module/qpnp_adaptive_charge/parameters/lower_limit
# touch api
chown system system /sys/class/touchscreen/primary/interpolation
chmod 0660 /sys/class/touchscreen/primary/interpolation
chown system system /sys/class/touchscreen/primary/first_filter
chmod 0660 /sys/class/touchscreen/primary/first_filter
chown system system /sys/class/touchscreen/primary/edge
chmod 0660 /sys/class/touchscreen/primary/edge
chown system system /sys/class/touchscreen/primary/gesture
chmod 0660 /sys/class/touchscreen/primary/gesture
chmod 0664 /proc/cts_tool
write /sys/block/sdc/queue/scheduler bfq
write /sys/block/sdc/queue/iosched/slice_idle 0
write /proc/sys/vm/dirty_background_bytes 26214400
write /proc/sys/vm/dirty_bytes 104857600
on fs
exec_background u:r:vendor_modprobe:s0 -- /vendor/bin/modprobe -a -d /vendor/lib/modules mmi_relay nova_0flash_mmi_v2 focaltech_0flash_mmi_v2 ilitek_v3_mmi
# camera eeprom calibration
on property:sys.boot_completed=1
chmod 0644 /data/vendor/camera_dump/mot_gt24p128f_ov50d_eeprom.bin
chmod 0644 /data/vendor/camera_dump/mot_gt24p128f_s5kjns_eeprom.bin
chmod 0644 /data/vendor/camera_dump/serial_number_main.bin
chmod 0644 /data/vendor/camera_dump/mot_gt24p64ba2_hi1634q_eeprom.bin
chmod 0644 /data/vendor/camera_dump/mot_gt24p64ba2_s5k3p9sp04_eeprom.bin
chmod 0644 /data/vendor/camera_dump/serial_number_front.bin
chmod 0644 /data/vendor/camera_dump/mot_cancunf_s5k4h7_otp.bin
chmod 0644 /data/vendor/camera_dump/serial_number_wide.bin
chmod 0644 /data/vendor/camera_dump/mot_cancunf_sc202acs_otp.bin
on moto-post-fs-data-fs-tune
write /sys/block/${dev.mnt.dev.system_ext}/queue/read_ahead_kb 2048
write /sys/block/${dev.mnt.dev.vendor}/queue/read_ahead_kb 2048
write /sys/block/${dev.mnt.dev.product}/queue/read_ahead_kb 2048
write /sys/block/${dev.mnt.dev.data}/queue/read_ahead_kb 2048
write /sys/block/${dev.mnt.dev.root}/queue/read_ahead_kb 2048
write /sys/block/${dev.mnt.dev.vendor_dlkm}/queue/read_ahead_kb 2048
on moto-boot-completed-fs-tune
write /sys/block/dm-0/queue/read_ahead_kb 512
write /sys/block/dm-1/queue/read_ahead_kb 512
write /sys/block/dm-2/queue/read_ahead_kb 512
write /sys/block/dm-3/queue/read_ahead_kb 512
write /sys/block/dm-4/queue/read_ahead_kb 512
write /sys/block/dm-5/queue/read_ahead_kb 512
write /sys/block/${dev.mnt.dev.system_ext}/queue/read_ahead_kb 512
write /sys/block/${dev.mnt.dev.vendor}/queue/read_ahead_kb 512
write /sys/block/${dev.mnt.dev.product}/queue/read_ahead_kb 512
write /sys/block/${dev.mnt.dev.data}/queue/read_ahead_kb 512
write /sys/block/${dev.mnt.dev.root}/queue/read_ahead_kb 512
write /sys/block/${dev.mnt.dev.vendor_dlkm}/queue/read_ahead_kb 512
# === DEBUGGING FEATURE ===
# Redirect LOG[E|W|I] logs to uart in case system server keeps rebooting without adb connection
# Pass logcat buffer names to androidboot.loge2uart by cmdl under fastboot.
# For example: fastboot oem config cmdl "androidboot.loge2uart=system,main"
# Of course, console must be enabled to make this work
service loge2uart /system/bin/logcat -b ${ro.boot.loge2uart} -v threadtime -f /dev/ttyS0 *:E
user root
group root
disabled
service logw2uart /system/bin/logcat -b ${ro.boot.logw2uart} -v threadtime -f /dev/ttyS0 *:W
user root
group root
disabled
service logi2uart /system/bin/logcat -b ${ro.boot.logi2uart} -v threadtime -f /dev/ttyS0 *:I
user root
group root
disabled
on late-init && property:ro.boot.loge2uart=*
setprop persist.vendor.uartconsole.enable 1
start loge2uart
on late-init && property:ro.boot.logw2uart=*
setprop persist.vendor.uartconsole.enable 1
start logw2uart
on late-init && property:ro.boot.logi2uart=*
setprop persist.vendor.uartconsole.enable 1
start logi2uart

314
rootdir/etc/init.mmi.rc Normal file
View File

@ -0,0 +1,314 @@
# Test commands
import /vendor/etc/init/hw/init.mmi.tcmd.rc
import /vendor/etc/init/hw/apanic.rc
# Chipset-specific file
import /vendor/etc/init/hw/init.mmi.chipset.rc
# Target-specific file
import /vendor/etc/init/hw/init.mmi.overlay.rc
#USB rc
import /vendor/etc/init/hw/init.mmi.usb.configfs.rc
# Add debug specific - currently used for install attestation keys on userdebug builds
import /vendor/etc/init/hw/init.mmi.debug.rc
on early-init
wait /dev/block/by-name/hw
exec_start vendor.oem-hw-sh
# Make sure ro.boot.product.hardware.sku is set before hwservicemanager startup.
setprop ro.boot.product.hardware.sku ${ro.vendor.product.hardware.sku.variant}
# Map oem properties, this must follow
# execution of vendor.oem-hw-sh to set
# required properties.
setprop ro.vendor.hw.radio ${ro.boot.radio}
setprop ro.carrier ${ro.boot.carrier}
setprop ro.sf.lcd_density ${ro.boot.lcd_density}
setprop ro.vendor.fsg-id ${ro.boot.fsg-id}
setprop ro.vendor.hw.device ${ro.boot.device}
setprop ro.vendor.hw.hwrev ${ro.boot.hwrev}
setprop ro.vendor.hw.modelno ${ro.boot.modelno}
setprop ro.vendor.hw.revision ${ro.boot.revision}
setprop ro.vendor.hw.nav_keys ${ro.boot.nav_keys}
setprop ro.product.vendor.device ${ro.vendor.product.device}
setprop ro.product.vendor.name ${ro.vendor.product.name}
setprop ro.vendor.boot.cid ${ro.boot.cid}
setprop ro.vendor.boot.powerup_reason ${ro.boot.powerup_reason}
setprop ro.vendor.boot.bl_state ${ro.boot.bl_state}
setprop ro.vendor.boot.serialno ${ro.boot.serialno}
setprop ro.vendor.boot.nal_id ${ro.boot.nal_id}
setprop ro.vendor.zygote ${ro.zygote}
setprop ro.carrier unknown
on property:sys.boot_completed=1 && property:ro.vendor.zram.product_swapon=""
write /sys/block/zram0/comp_algorithm lz4
write /proc/sys/vm/page-cluster 0
swapon_all /vendor/etc/fstab.${ro.hardware.soc.manufacturer}
write /proc/sys/vm/swappiness 100
setprop sys.sysctl.swappiness 100
on post-fs
# for batt_health server
mkdir /mnt/vendor/persist/batt_health 0770 vendor_pwric vendor_pwric
restorecon_recursive /mnt/vendor/persist
# Set dm-verity property for dm-verified partitions
verity_update_state
on post-fs-data
setprop ro.vendor.build.fingerprint ${ro.product.vendor.brand}/${ro.product.vendor.name}/${ro.product.vendor.device}:${ro.vendor.build.version.release}/${ro.vendor.build.id}/${ro.vendor.build.version.incremental}:${ro.vendor.build.type}/${ro.vendor.build.tags}
# Setup folders for security
mkdir /mnt/vendor/persist/security 02770 drmrpc drmrpc
mkdir /data/vendor/dbvc 0750 vendor_tcmd shell
chown drmrpc vendor_tcmd /mnt/vendor/persist/security
# Setup folder for native to transfer data to NativeDropBoxAgent
mkdir /data/vendor/dropbox-add 0730 log diag
# Create panic dump dir.
mkdir /data/vendor/dontpanic 0750 root log
mkdir /data/vendor/misc 0771 system system
# Create directory for cutback
mkdir /data/vendor/misc/cutback 0770 radio wifi
# Imager tuning data for camera subsystem
mkdir /data/vendor/misc/imager 0771 camera system
# Imager tuning metadata for camera subsystem
mkdir /data/vendor/misc/imager/metadata 0771 camera camera
# Imager tuning data for rescue Feature
mkdir /mnt/vendor/persist/camera/iqtuning 0771 camera camera
# Create bug2go folder
mkdir /data/vendor/bug2go 0770 log log
# Setup folder for aplogd
mkdir /data/vendor/aplogd 0770 log log
# Create directory used by power_supply_logger
mkdir /data/vendor/power_supply_logger 0750 vendor_pwric log
# Create directory power_supply_logger used by memtest and batt_health
mkdir /data/vendor_de/power_supply_logger 0770 root log
mkdir /data/vendor/hardware_revisions 0755 system system
copy /data/vendor_de/power_supply_logger/memtest.log /data/vendor/power_supply_logger/memtest.log
service vendor.bl_logs_copy /vendor/bin/apanic_copy.sh -i
class late_start
group log
oneshot
disabled
on charger
trigger early-fs
trigger fs
trigger post-fs
trigger late-fs
trigger post-fs-data
trigger tks-charger
class_stop main
class_stop late_start
chown system system /sys/class/leds/lcd-backlight/max_brightness
on tks-charger && property:persist.sys.tksautoboot=1
setprop sys.powerctl "reboot,tks-charger"
on boot
# Change ownership and permission for leds backlight
chown system system /sys/class/leds/charging/brightness
chmod 0664 /sys/class/leds/charging/brightness
# Change ownership and permission for charge
chown system system /sys/class/power_supply/battery/charging_enabled
chmod 0664 /sys/class/power_supply/battery/charging_enabled
# Change ownership and permission for vibrator
chown system system /sys/class/leds/vibrator/state
chmod 0660 /sys/class/leds/vibrator/state
chown system system /sys/class/leds/vibrator/activate
chmod 0660 /sys/class/leds/vibrator/activate
chown system system /sys/class/leds/vibrator/duration
chmod 0660 /sys/class/leds/vibrator/duration
chown system system /sys/class/leds/vibrator/seq
chmod 0660 /sys/class/leds/vibrator/seq
# change permission for widevine L1
chmod 0664 /mnt/vendor/persist/wv.keys
#change ownership and permission for capsense
chown radio system /sys/class/capsense/reg
chown radio system /sys/class/capsense/fw_download_status
chmod 0660 /sys/class/capsense/reg
chmod 0660 /sys/class/capsense/fw_download_status
# change ownership and permission for lcd-backlight
chown system system /sys/class/leds/lcd-backlight/max_brightness
on property:sys.boot_completed=*
setprop vendor.boot_completed ${sys.boot_completed}
setprop ro.vendor.boot.uid ${ro.boot.uid}
setprop ro.vendor.boot.secure_hardware ${ro.boot.secure_hardware}
service vendor.mmi-block-perm /vendor/bin/init.mmi.block_perm.sh
class main
user root
oneshot
service vendor.mmi-touch-sh /vendor/bin/init.mmi.touch.sh
class core
user root
oneshot
service vendor.mmi-shutdown-sh /vendor/bin/init.mmi.shutdown.sh
class core
user root
oneshot
disabled
service vendor.hal-fps-sh /vendor/bin/init.oem.fingerprint2.sh
class late_start
user root
group system
oneshot
service vendor.oem-hw-sh /vendor/bin/init.oem.hw.sh
class core
user root
oneshot
disabled
service vendor.touch-dead-sh /vendor/bin/init.oem.hw.sh -f
class main
user root
oneshot
disabled
service vendor.touch-ready-sh /vendor/bin/init.oem.hw.sh -r
class main
user root
oneshot
disabled
service vendor.oem-hw-config-sh /vendor/bin/init.oem.hw.sh -p
class main
user root
oneshot
disabled
on property:vendor.hw.touch.status="dead"
start vendor.touch-dead-sh
on property:vendor.hw.touch.status="ready"
start vendor.touch-ready-sh
service vendor.mbm_spy /vendor/bin/mbm_spy
class late_start
user system
group system
oneshot
service vendor.hw_revs /vendor/bin/hardware_revisions.sh
class late_start
user system
group system
oneshot
service vendor.mmi-boot-sh /vendor/bin/init.mmi.boot.sh
class core
user root
oneshot
# set rkp csr indicatory property
on property:ro.vendor.mot.hw.rkp_csr_uploaded=* && property:sys.boot_completed=1
setprop ro.rkp.csr_uploaded ${ro.vendor.mot.hw.rkp_csr_uploaded}
on property:ro.boot.force_aplogd_enable=1
setprop ro.logd.kernel true
stop logd
start logd
on post-fs && property:ro.boot.force_aplogd_enable=1
setprop persist.vendor.log.aplogd.enable 1
on property:persist.vendor.log.aplogd.enable=1
start vendor.aplogd
on property:persist.vendor.log.aplogd.enable=0
stop vendor.aplogd
on property:ro.vendor.hw.dualsim=true
setprop persist.radio.multisim.config dsds
setprop persist.vendor.radio.msimmode dsds
setprop telephony.active_modems.max_count 2
setprop ro.vendor.radio.max.multisim dsds
setprop ro.telephony.sim.count 2
setprop persist.vendor.mims_support 2
setprop persist.vendor.radio.smart.data.switch 1
setprop ro.vendor.mtk_disable_cap_switch 0
setprop ro.vendor.mtk_data_config 1
on property:ro.vendor.hw.dualsim=false
setprop persist.radio.multisim.config ss
setprop persist.vendor.radio.msimmode ss
setprop telephony.active_modems.max_count 1
setprop ro.vendor.radio.max.multisim ss
setprop ro.telephony.sim.count 1
setprop persist.vendor.mims_support 1
setprop persist.vendor.radio.smart.data.switch 0
setprop ro.vendor.mtk_disable_cap_switch 1
setprop ro.vendor.mtk_data_config 0
service vendor.aplogd /vendor/bin/aplogd
class late_start
#user log
#group log system sdcard_rw sdcard_r media_rw mount
# The user and group definitions above are intentionally disabled and left
# only as documentation. It actually starts as root and immediately drops
# to log plus those groups after preserving CAP_SYS_ADMIN, which is required
# for kernel logging.
disabled
# from P onwards aplogd cannot read vold.post_fs_data_done so a new property
# shall be used to allow aplogd checking if FBE has finished /data decryption
on property:vold.post_fs_data_done=*
setprop vendor.vold.post_fs_data_done ${vold.post_fs_data_done}
on property:ro.vendor.build.motfactory=1
write /sys/devices/platform/charger/factory_image_mode 1
on property:sys.sysctl.swappiness=*
write /proc/sys/vm/swappiness ${sys.sysctl.swappiness}
# IKSWU-152028: Force shutter tone on Japan softbank carrier
on property:ro.carrier=softbank
setprop audio.camerasound.force true
# IKSWT-90913: Force shutter tone on Japan ymobile carrier
on property:ro.carrier=ymobile
setprop audio.camerasound.force true
# IKSWU-148561: Force shutter tone on Japan Docomo carrier
on property:ro.carrier=docomo
setprop audio.camerasound.force true
# IKSWU-165346: Force shutter tone on Korea carriers
on property:ro.carrier=retkr
setprop audio.camerasound.force true
on property:ro.sys.force_max_chrg_temp=*
write /sys/devices/platform/charger/force_max_chrg_temp ${ro.sys.force_max_chrg_temp}
on property:ro.sys.force_demo_mode=*
write /sys/devices/platform/charger/force_demo_mode ${ro.sys.force_demo_mode}
on shutdown
exec_start vendor.mmi-shutdown-sh
# Sync the system MSI property of RKP state onto vendor
on property:sys.rkp.enable=* && property:sys.boot_completed=1
setprop persist.vendor.moto.rkp.enable ${sys.rkp.enable}
start vendor.mbm_spy

View File

@ -0,0 +1,247 @@
service vendor.tcmd /vendor/bin/tcmd
class core
# Total number of supplementary groups below is 14 now. Limit defined in service.h is 32.
# Please update the current number if you add more groups.
group vendor_tcmd vendor_pwric system radio input log sdcard_rw inet graphics audio mount media shell media_rw bluetooth camera
socket local_tcmd stream 0660 vendor_tcmd vendor_tcmd
socket batch_socket stream 0600 vendor_tcmd vendor_tcmd
oneshot
disabled
service vendor.tcmdhelp /vendor/bin/tcmdhelp
class main
user root
group system oem_2901 root vendor_pwric
socket tcmdhelp stream 0600 vendor_tcmd vendor_tcmd
oneshot
disabled
service tcmd_system /system_ext/bin/tcmd_system
class main
user root
group vendor_prod_persist
oneshot
disabled
# Power up to suspend
on property:vendor.tcmd.suspend=1
stop zygote
stop surfaceflinger
stop sensors
# Normal to suspend
on property:vendor.tcmd.suspend=2
stop vendor.hwcomposer-2-1
stop vendor.hwcomposer-2-2
stop aee_aed
stop aee_aedv
stop surfaceflinger
stop sensors
stop cameraserver
stop zygote
write /proc/monitor_hang 0
on property:vendor.tcmd.suspend=3
write /proc/monitor_hang 1
start zygote
start cameraserver
start sensors
start surfaceflinger
start aee_aedv
start aee_aed
start vendor.hwcomposer-2-2
start vendor.hwcomposer-2-1
on property:vendor.tcmd.start_tcmdhelp=1
start vendor.tcmdhelp
on property:vendor.tcmd.start_tcmd=0
stop vendor.tcmd
on property:vendor.tcmd.start_tcmd=1
start vendor.tcmd
on property:vendor.tcmd_system.action=*
setprop sys.tcmd_system.action ${vendor.tcmd_system.action}
start tcmd_system
on property:vendor.tcmd.update_keyperm=1
chown vendor_tcmd system /mnt/vendor/persist/wv.keys
chmod 0640 /mnt/vendor/persist/wv.keys
chown vendor_tcmd system /mnt/vendor/persist/attest_keybox.so
chmod 0640 /mnt/vendor/persist/attest_keybox.so
chown vendor_tcmd system /mnt/vendor/persist/attestation_ids.so
chmod 0640 /mnt/vendor/persist/attestation_ids.so
on early-boot && property:ro.vendor.build.motfactory=1
write /proc/sys/kernel/poweroff_cmd "/system/bin/reboot -p"
on post-fs
mkdir /mnt/vendor/persist/factory 0755 vendor_tcmd vendor_tcmd
chown vendor_tcmd vendor_tcmd /mnt/vendor/persist/factory/fti
chmod 0664 /mnt/vendor/persist/factory/fti
mkdir /mnt/vendor/persist/camera 0775 vendor_tcmd vendor_tcmd
mkdir /mnt/vendor/persist/camera/dualcal 0775 camera vendor_tcmd
mkdir /mnt/vendor/persist/camera/focus 0775 camera vendor_tcmd
restorecon /mnt/vendor/persist/camera
restorecon /mnt/vendor/persist/camera/focus
restorecon /mnt/vendor/persist/camera/focus/offset_cal
restorecon /mnt/vendor/persist/camera/focus/xtalk_cal
mkdir /mnt/vendor/persist/camera/ledcal 0775 camera vendor_tcmd
mkdir /mnt/vendor/persist/camera/ois 0775 cameraserver vendor_tcmd
mkdir /mnt/vendor/persist/camera/iqtuning 0775 vendor_tcmd vendor_tcmd
mkdir /mnt/vendor/persist/factory/audio 0755 vendor_tcmd system
mkdir /mnt/vendor/persist/factory/wlan 0755 vendor_tcmd vendor_tcmd
mkdir /mnt/vendor/persist/factory/regulatory 0755 vendor_tcmd system
mkdir /mnt/vendor/persist/public 0755 vendor_tcmd vendor_tcmd
mkdir /mnt/vendor/persist/public/att_dm 0775 radio vendor_tcmd
mkdir /mnt/vendor/persist/public/hiddenmenu 0775 radio vendor_tcmd
mkdir /mnt/vendor/persist/public/hiddenmenu/data 0775 system vendor_tcmd
mkdir /mnt/vendor/persist/wifi 0755 vendor_tcmd vendor_tcmd
mkdir /mnt/vendor/persist/bt 0755 vendor_tcmd bluetooth
# This dir is used to store any OMA(both DM and CP) files in persist partition
# Any app with radio UID or vendor_tcmd GID can read/write/execute files in this dir.
mkdir /mnt/vendor/persist/public/oma 0775 radio vendor_tcmd
chown camera vendor_tcmd /mnt/vendor/persist/camera/dualcal/dual_cal_data.bin
chown camera vendor_tcmd /mnt/vendor/persist/camera/dualcal/dual_cal_data_depth.bin
chown camera vendor_tcmd /mnt/vendor/persist/camera/dualcal/dual_cal_data_wide.bin
chown camera vendor_tcmd /mnt/vendor/persist/camera/dualcal/module_id_aux.bin
chown camera vendor_tcmd /mnt/vendor/persist/camera/dualcal/module_id_main.bin
chown camera vendor_tcmd /mnt/vendor/persist/camera/dualcal/module_id_depth.bin
chown camera vendor_tcmd /mnt/vendor/persist/camera/dualcal/module_id_wide.bin
chmod 0664 /mnt/vendor/persist/camera/dualcal/dual_cal_data.bin
chmod 0664 /mnt/vendor/persist/camera/dualcal/dual_cal_data_depth.bin
chmod 0664 /mnt/vendor/persist/camera/dualcal/dual_cal_data_wide.bin
chmod 0664 /mnt/vendor/persist/camera/dualcal/module_id_aux.bin
chmod 0664 /mnt/vendor/persist/camera/dualcal/module_id_main.bin
chmod 0664 /mnt/vendor/persist/camera/dualcal/module_id_depth.bin
chmod 0664 /mnt/vendor/persist/camera/dualcal/module_id_wide.bin
chown vendor_tcmd vendor_tcmd /mnt/vendor/persist/factory/byte
chmod 0660 /mnt/vendor/persist/factory/byte
chmod 0660 /mnt/vendor/persist/wifi/wlan_mac.bin
chown vendor_tcmd vendor_tcmd /mnt/vendor/persist/bt/bt_bdaddr
chmod 0664 /mnt/vendor/persist/bt/bt_bdaddr
# Set life_calls and life_timer file permissions
chown radio vendor_tcmd /mnt/vendor/persist/public/hiddenmenu/life_calls
chmod 0775 /mnt/vendor/persist/public/hiddenmenu/life_calls
chown radio vendor_tcmd /mnt/vendor/persist/public/hiddenmenu/life_timer
chmod 0775 /mnt/vendor/persist/public/hiddenmenu/life_timer
# change permission of utag for tcmd daemon
chown root system /proc/config
chown root system /proc/config/all
chown root system /proc/config/all/new
chown root system /proc/config/all/lock
chown root system /proc/config/all/.delete
chown root system /proc/config/barcode/ascii
chown root system /proc/config/battid/ascii
chown root system /proc/config/bootmode/ascii
chown root system /proc/config/bt_mac/ascii
chown root system /proc/config/carrier_sku/ascii
chown root system /proc/config/date/ascii
chown root system /proc/config/fti/ascii
chown root system /proc/config/imei/ascii
chown root system /proc/config/sku/ascii
chown root system /proc/config/reload
chown root system /proc/config/wifi_mac/ascii
chown root system /proc/hw
chown root system /proc/hw/all
chown root system /proc/hw/all/new
chown root system /proc/hw/all/lock
chown root system /proc/hw/all/.delete
chown root system /proc/hw/dualsim/ascii
chown root system /proc/hw/frontcolor/ascii
chown root system /proc/hw/reload
chown vendor_tcmd vendor_tcmd /sys/devices/platform/moto_chg_tcmd/address
chmod 660 /sys/devices/platform/moto_chg_tcmd/address
chown vendor_tcmd vendor_tcmd /sys/devices/platform/moto_chg_tcmd/data
chmod 660 /sys/devices/platform/moto_chg_tcmd/data
chown vendor_tcmd vendor_tcmd /sys/devices/platform/moto_chg_tcmd/bat_voltage
chmod 660 /sys/devices/platform/moto_chg_tcmd/bat_voltage
chown vendor_tcmd vendor_tcmd /sys/devices/platform/moto_chg_tcmd/bat_id
chmod 660 /sys/devices/platform/moto_chg_tcmd/bat_id
chown vendor_tcmd vendor_tcmd /sys/devices/platform/moto_chg_tcmd/bat_ocv
chmod 660 /sys/devices/platform/moto_chg_tcmd/bat_ocv
chown vendor_tcmd vendor_tcmd /sys/devices/platform/moto_chg_tcmd/bat_temp
chmod 660 /sys/devices/platform/moto_chg_tcmd/bat_temp
chown vendor_tcmd vendor_tcmd /sys/devices/platform/moto_chg_tcmd/bat_cycle
chmod 660 /sys/devices/platform/moto_chg_tcmd/bat_cycle
chown vendor_tcmd vendor_tcmd /sys/devices/platform/moto_chg_tcmd/usb_voltage
chmod 660 /sys/devices/platform/moto_chg_tcmd/usb_voltage
chown vendor_tcmd vendor_tcmd /sys/devices/platform/moto_chg_tcmd/force_chg_auto_enable
chmod 660 /sys/devices/platform/moto_chg_tcmd/force_chg_auto_enable
chown vendor_tcmd vendor_tcmd /sys/devices/platform/moto_chg_tcmd/force_chg_iusb
chmod 660 /sys/devices/platform/moto_chg_tcmd/force_chg_iusb
chown vendor_tcmd vendor_tcmd /sys/devices/platform/moto_chg_tcmd/force_chg_usb_suspend
chmod 660 /sys/devices/platform/moto_chg_tcmd/force_chg_usb_suspend
chown vendor_tcmd vendor_tcmd /sys/devices/platform/moto_chg_tcmd/force_chg_ibatt
chmod 660 /sys/devices/platform/moto_chg_tcmd/force_chg_ibatt
chown vendor_tcmd vendor_tcmd /sys/devices/platform/moto_chg_tcmd/force_chg_fail_clear
chmod 660 /sys/devices/platform/moto_chg_tcmd/force_chg_fail_clear
chown vendor_tcmd vendor_tcmd /sys/devices/platform/moto_chg_tcmd/factory_kill_disable
chmod 660 /sys/devices/platform/moto_chg_tcmd/factory_kill_disable
chown vendor_tcmd vendor_tcmd /sys/devices/platform/moto_chg_tcmd/wireless_en
chmod 660 /sys/devices/platform/moto_chg_tcmd/wireless_en
chown vendor_tcmd vendor_tcmd /sys/devices/platform/moto_chg_tcmd/wireless_chip_id
chmod 660 /sys/devices/platform/moto_chg_tcmd/wireless_chip_id
on post-fs-data
# Setup folders for security
mkdir /mnt/vendor/persist/security 02770 drmrpc drmrpc
mkdir /data/vendor/dbvc 0750 vendor_tcmd shell
chown drmrpc vendor_tcmd /mnt/vendor/persist/security
# Setup DAC for WFD HDCP sfs file
chown vendor_tcmd system /mnt/vendor/persist/data
chmod 0750 /mnt/vendor/persist/data
chown vendor_tcmd system /mnt/vendor/persist/data/dxhdcp2
chmod 0750 /mnt/vendor/persist/data/dxhdcp2
chown vendor_tcmd system /mnt/vendor/persist/data/dxhdcp2/dxhdcp2
chmod 0750 /mnt/vendor/persist/data/dxhdcp2/dxhdcp2
chown vendor_tcmd system /mnt/vendor/persist/data/dxhdcp2/dxhdcp2/dxhdcp2.sfs
chmod 0640 /mnt/vendor/persist/data/dxhdcp2/dxhdcp2/dxhdcp2.sfs
# Setup folder for Pre-Activation Kill Switch app (PAKS)
mkdir /mnt/vendor/persist/paks 02770 vendor_tcmd vendor_tcmd
on property:ro.bootmode=mot-factory
mkdir /mnt/vendor/mot_factory
mount tmpfs tmpfs /mnt/vendor/mot_factory
chown vendor_tcmd vendor_tcmd /mnt/vendor/mot_factory
chmod 0770 /mnt/vendor/mot_factory
on post-fs-data && property:ro.bootmode=mot-factory
restorecon /mnt/vendor/mot_factory
on property:sys.bootbroadcast_completed=*
setprop vendor.sys.bootbroadcast_completed ${sys.bootbroadcast_completed}
on property:ro.vendor.build.motfactory=1
# Change ownership and permission for current_cmd factory testing
chown system system /proc/mtk_battery_cmd/current_cmd
chmod 0664 /proc/mtk_battery_cmd/current_cmd
on property:vendor.boot_completed=1
setprop ro.vendor.boot.hwrev ${ro.boot.hwrev}
setprop ro.vendor.carrier ${ro.carrier}
setprop ro.vendor.build.version.sdk ${ro.build.version.sdk}
setprop ro.vendor.sys.adb_reset_protected ${ro.sys.adb_reset_protected}
setprop ro.vendor.telephony.default_network ${ro.telephony.default_network}
setprop ro.vendor.boot.radio ${ro.boot.radio}
setprop ro.vendor.build.description ${ro.build.description}
setprop vendor.init.svc.adbd ${init.svc.adbd}
setprop ro.vendor.boot.secure_hardware ${ro.boot.secure_hardware}
setprop ro.vendor.sys.adb_reset_protected ${ro.sys.adb_reset_protected}

View File

@ -0,0 +1,910 @@
# Copyright (c) 2011-2016, 2018-2020 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 init
mount configfs none /config
mkdir /config/usb_gadget/g1 0775
mkdir /config/usb_gadget/g2 0770
mkdir /config/usb_gadget/g1/strings/0x409 0770
mkdir /config/usb_gadget/g2/strings/0x409 0770
write /config/usb_gadget/g1/bcdUSB 0x0200
write /config/usb_gadget/g2/bcdUSB 0x0200
write /config/usb_gadget/g1/os_desc/use 1
mkdir /config/usb_gadget/g1/functions/usbnet.usb0
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/mtk_rndis.gs4
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/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/rndis_bam.rndis
mkdir /config/usb_gadget/g1/functions/rndis.rndis
mkdir /config/usb_gadget/g1/functions/ncm.0
mkdir /config/usb_gadget/g1/functions/ccid.ccid
mkdir /config/usb_gadget/g1/functions/uac2.0
mkdir /config/usb_gadget/g1/functions/uvc.0
mkdir /config/usb_gadget/g1/functions/uvc.0/control/header/h
symlink /config/usb_gadget/g1/functions/uvc.0/control/header/h /config/usb_gadget/g1/functions/uvc.0/control/class/fs/h
symlink /config/usb_gadget/g1/functions/uvc.0/control/header/h /config/usb_gadget/g1/functions/uvc.0/control/class/ss/h
mkdir /config/usb_gadget/g1/functions/uvc.0/streaming/uncompressed/u
mkdir /config/usb_gadget/g1/functions/uvc.0/streaming/uncompressed/u/360p
write /config/usb_gadget/g1/functions/uvc.0/streaming/uncompressed/u/360p/dwFrameInterval \
"333333
666666
"
write /config/usb_gadget/g1/functions/uvc.0/streaming/uncompressed/u/360p/wWidth 640
write /config/usb_gadget/g1/functions/uvc.0/streaming/uncompressed/u/360p/wHeight 360
write /config/usb_gadget/g1/functions/uvc.0/streaming/uncompressed/u/360p/dwMaxVideoFrameBufferSize 460800
write /config/usb_gadget/g1/functions/uvc.0/streaming/uncompressed/u/360p/dwMinBitRate 55296000
write /config/usb_gadget/g1/functions/uvc.0/streaming/uncompressed/u/360p/dwMaxBitRate 110592000
mkdir /config/usb_gadget/g1/functions/uvc.0/streaming/uncompressed/u/480p
write /config/usb_gadget/g1/functions/uvc.0/streaming/uncompressed/u/480p/dwFrameInterval \
"500000
666666
"
write /config/usb_gadget/g1/functions/uvc.0/streaming/uncompressed/u/480p/wWidth 640
write /config/usb_gadget/g1/functions/uvc.0/streaming/uncompressed/u/480p/wHeight 480
write /config/usb_gadget/g1/functions/uvc.0/streaming/uncompressed/u/480p/dwMaxVideoFrameBufferSize 614400
write /config/usb_gadget/g1/functions/uvc.0/streaming/uncompressed/u/480p/dwMinBitRate 73728000
write /config/usb_gadget/g1/functions/uvc.0/streaming/uncompressed/u/480p/dwMaxBitRate 98304000
mkdir /config/usb_gadget/g1/functions/uvc.0/streaming/uncompressed/u/720p
write /config/usb_gadget/g1/functions/uvc.0/streaming/uncompressed/u/720p/dwFrameInterval \
"1000000
"
write /config/usb_gadget/g1/functions/uvc.0/streaming/uncompressed/u/720p/wWidth 1280
write /config/usb_gadget/g1/functions/uvc.0/streaming/uncompressed/u/720p/wHeight 720
write /config/usb_gadget/g1/functions/uvc.0/streaming/uncompressed/u/720p/dwMaxVideoFrameBufferSize 1843200
write /config/usb_gadget/g1/functions/uvc.0/streaming/uncompressed/u/720p/dwMinBitRate 147456000
write /config/usb_gadget/g1/functions/uvc.0/streaming/uncompressed/u/720p/dwMaxBitRate 147456000
mkdir /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m
mkdir /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/360p
write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/360p/dwFrameInterval \
"333333
666666
"
write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/360p/wWidth 640
write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/360p/wHeight 360
write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/360p/dwMaxVideoFrameBufferSize 345600
write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/360p/dwMinBitRate 41472000
write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/360p/dwMaxBitRate 82944000
mkdir /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/480p
write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/480p/dwFrameInterval \
"333333
666666
"
write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/480p/wWidth 640
write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/480p/wHeight 480
write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/480p/dwMaxVideoFrameBufferSize 460800
write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/480p/dwMinBitRate 55296000
write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/480p/dwMaxBitRate 110592000
mkdir /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p
write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/dwFrameInterval \
"333333
666666
"
write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/wWidth 1280
write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/wHeight 720
write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/dwMaxVideoFrameBufferSize 1382400
write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/dwMinBitRate 165888000
write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/720p/dwMaxBitRate 331776000
mkdir /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/960p
write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/960p/dwFrameInterval \
"333333
666666
"
write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/960p/wWidth 1280
write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/960p/wHeight 960
write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/960p/dwMaxVideoFrameBufferSize 1843200
write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/960p/dwMinBitRate 221184000
write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/960p/dwMaxBitRate 442368000
mkdir /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p
write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/dwFrameInterval \
"333333
666666
"
write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/wWidth 1920
write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/wHeight 1080
write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/dwMaxVideoFrameBufferSize 3110400
write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/dwMinBitRate 373248000
write /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m/1080p/dwMaxBitRate 746496000
mkdir /config/usb_gadget/g1/functions/uvc.0/streaming/header/h
symlink /config/usb_gadget/g1/functions/uvc.0/streaming/uncompressed/u /config/usb_gadget/g1/functions/uvc.0/streaming/header/h/u
symlink /config/usb_gadget/g1/functions/uvc.0/streaming/mjpeg/m /config/usb_gadget/g1/functions/uvc.0/streaming/header/h/m
symlink /config/usb_gadget/g1/functions/uvc.0/streaming/header/h /config/usb_gadget/g1/functions/uvc.0/streaming/class/fs/h
symlink /config/usb_gadget/g1/functions/uvc.0/streaming/header/h /config/usb_gadget/g1/functions/uvc.0/streaming/class/hs/h
symlink /config/usb_gadget/g1/functions/uvc.0/streaming/header/h /config/usb_gadget/g1/functions/uvc.0/streaming/class/ss/h
write /config/usb_gadget/g1/functions/uvc.0/streaming_maxburst 15
write /config/usb_gadget/g1/functions/uvc.0/streaming_maxpacket 3072
write /config/usb_gadget/g1/functions/uvc.0/streaming_interval 2
write /config/usb_gadget/g1/functions/uvc.0/streaming_txfifo_hint 9
write /config/usb_gadget/g1/functions/uvc.0/function_name "Moto Webcam
"
mkdir /config/usb_gadget/g1/configs/b.1 0770
mkdir /config/usb_gadget/g2/configs/b.1 0770
mkdir /config/usb_gadget/g1/configs/b.1/strings/0x409 0770
mkdir /config/usb_gadget/g2/configs/b.1/strings/0x409 0770
write /config/usb_gadget/g1/configs/b.1/MaxPower 900
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
mkdir /dev/usb-ffs 0775 shell system
mkdir /dev/usb-ffs/adb 0770 shell shell
mount functionfs adb /dev/usb-ffs/adb uid=2000,gid=2000,rmode=0770,fmode=0660
chown system system /sys/class/android_usb/android0/secure
chmod 0660 /sys/class/android_usb/android0/secure
on boot && property:vendor.usb.use_ffs_mtp=1
mkdir /config/usb_gadget/g1/functions/ffs.mtp
mkdir /config/usb_gadget/g1/functions/ffs.ptp
mkdir /dev/usb-ffs/mtp 0770 mtp mtp
mount functionfs mtp /dev/usb-ffs/mtp rmode=0770,fmode=0660,uid=1024,gid=1024,no_disconnect=1
mkdir /dev/usb-ffs/ptp 0770 mtp mtp
mount functionfs ptp /dev/usb-ffs/ptp rmode=0770,fmode=0660,uid=1024,gid=1024,no_disconnect=1
# This is a good place to write these, since system props would be loaded.
on firmware_mounts_complete
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}
on firmware_mounts_complete && property:ro.vendor.product.display.plain_text=*
write /config/usb_gadget/g1/strings/0x409/product ${ro.vendor.product.display.plain_text}
on load_bpf_programs
setprop vendor.usb.config ${sys.usb.config}
setprop persist.vendor.mot.usb.config ${persist.sys.usb.config:-" "}
setprop persist.vendor.usb.config ${persist.sys.usb.config:-" "}
on property:ro.boot.console=ttyGS0 && property:sys.usb.configfs=1
write /config/usb_gadget/g1/UDC "none"
mkdir /config/usb_gadget/g1/functions/acm.0
# "f0" is used here so that we won't take anything from f1 ~ f9
symlink /config/usb_gadget/g1/functions/acm.0 /config/usb_gadget/g1/configs/b.1/f0
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
on property:sys.boot_completed=*
setprop vendor.boot_completed ${sys.boot_completed}
on property:persist.vendor.usb.config=*
setprop persist.sys.usb.config ${persist.vendor.usb.config}
on property:vendor.usb.config=*
setprop sys.usb.config ${vendor.usb.config}
on property:vendor.usb.controller=*
setprop sys.usb.controller ${vendor.usb.controller}
on property:persist.vendor.usb.mot-factory.config=*
setprop persist.sys.usb.mot-factory.config ${persist.vendor.usb.mot-factory.config}
setprop persist.sys.usb.mot-factory.func ${persist.vendor.usb.mot-factory.config}
### Support USB Secure Mode
on property:sys.usb.secure_mode=*
setprop vendor.usb.secure_mode ${sys.usb.secure_mode}
on property:vendor.usb.secure_mode=1
setprop sys.usb.controller none
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
on property:vendor.usb.secure_mode=0
setprop sys.usb.controller ${vendor.usb.controller}
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
service vendor.mmi-usb-sh /vendor/bin/init.mmi.usb.sh
class late_start
user root
group system
oneshot
on userspace-reboot-resume
setprop persist.vendor.mot.usb.config ${persist.sys.usb.config}
setprop persist.vendor.usb.config ${persist.sys.usb.config}
on charger
insmod /vendor/lib/modules/moto_f_mass_storage.ko
setprop vendor.usb.adb_early ${ro.boot.adb_early:-"0"}
setprop vendor.usb.charging.func.name moto_mass_storage
start vendor.mmi-usb-sh
# Wait for the USB init shell script to finish, to prevent enumeration issues
on property:init.svc.vendor.mmi-usb-sh=stopped && property:ro.boot.mode=charger && property:vendor.usb.adb_early=0
setprop sys.usb.configfs 1
setprop sys.usb.config charging
on property:init.svc.vendor.mmi-usb-sh=stopped && property:ro.boot.mode=charger && property:vendor.usb.adb_early=1
setprop sys.usb.configfs 1
setprop sys.usb.config charging,adb
### Factory Compositions
on property:sys.usb.config=usbnet,adb && property:sys.usb.configfs=1
start adbd
start vendor.tcmd
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=usbnet,adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "Motorola Test Command"
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
write /config/usb_gadget/g1/idVendor 0x22b8
write /config/usb_gadget/g1/idProduct 0x2e2d
write /config/usb_gadget/g1/os_desc/use 1
symlink /config/usb_gadget/g1/functions/usbnet.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 ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=usbnet && property:sys.usb.configfs=1
start vendor.tcmd
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "Motorola Test Command without ADB"
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
write /config/usb_gadget/g1/idVendor 0x22b8
write /config/usb_gadget/g1/idProduct 0x2e2c
write /config/usb_gadget/g1/os_desc/use 0
symlink /config/usb_gadget/g1/functions/usbnet.usb0 /config/usb_gadget/g1/configs/b.1/f1
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=atm_gs0gs3 && 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/${vendor.usb.rndis.func.name}
start adbd
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=atm_gs0gs3 && \
property:sys.usb.configfs=1 && property:ro.bootmode=mot-factory
start vendor.tcmd
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 /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "adb_acm"
write /sys/class/udc/${sys.usb.controller}/device/saving 1
write /sys/devices/platform/soc/mt_usb/saving 1
write /config/usb_gadget/g1/idVendor 0x22b8
write /config/usb_gadget/g1/idProduct 0x2e2d
symlink /config/usb_gadget/g1/functions/usbnet.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.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 ${sys.usb.controller}
on property:sys.usb.config=adb && property:vendor.usb.acm_enable=1 && \
property:sys.usb.configfs=1 && property:ro.bootmode=mot-factory
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/${vendor.usb.rndis.func.name}
start adbd
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=adb && \
property:vendor.usb.acm_enable=1 && property:sys.usb.configfs=1 && property:ro.bootmode=mot-factory
start vendor.tcmd
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "adb_acm"
write /config/usb_gadget/g1/idVendor 0x22b8
write /config/usb_gadget/g1/idProduct 0x2e2d
write /sys/class/udc/${sys.usb.controller}/device/saving 1
write /sys/devices/platform/soc/mt_usb/saving 1
symlink /config/usb_gadget/g1/functions/usbnet.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.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 ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
### ATCI
on property:persist.vendor.radio.port_index=1 && property:sys.boot_completed=1
setprop vendor.usb.acm_port0 0
setprop vendor.usb.acm_enable 1
setprop vendor.usb.acm_idx 1
setprop vendor.usb.acm_cnt 1
setprop sys.usb.config none
setprop sys.usb.config ${sys.usb.state}
on property:persist.vendor.radio.port_index=0 && property:vendor.usb.acm_enable=1
setprop vendor.usb.acm_enable 0
setprop vendor.usb.acm_idx ""
setprop vendor.usb.acm_cnt 0
setprop sys.usb.config none
setprop sys.usb.config ${sys.usb.state}
setprop persist.vendor.radio.port_index ""
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=adb && property:sys.usb.configfs=1 && \
property:vendor.usb.acm_enable=1 && property:persist.vendor.radio.port_index=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "atci"
write /config/usb_gadget/g1/idVendor 0x0e8d
write /config/usb_gadget/g1/idProduct 0x2006
write /sys/class/udc/${sys.usb.controller}/device/saving 1
write /sys/devices/platform/soc/mt_usb/saving 1
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/acm.gs0 /config/usb_gadget/g1/configs/b.1/f2
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=mtp,adb && property:sys.usb.configfs=1 && \
property:vendor.usb.acm_enable=1 && property:persist.vendor.radio.port_index=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "atci"
write /config/usb_gadget/g1/idVendor 0x0e8d
write /config/usb_gadget/g1/idProduct 0x200a
write /sys/class/udc/${sys.usb.controller}/device/saving 1
write /sys/devices/platform/soc/mt_usb/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.gs0 /config/usb_gadget/g1/configs/b.1/f3
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
### Bell
on property:sys.usb.config=acm_gs0gs3 && property:sys.usb.configfs=1
write /config/usb_gadget/g1/UDC "none"
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
start adbd
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=acm_gs0gs3 && \
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
setprop vendor.usb.acm_idx "1,4"
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "acm_gs0gs3"
write /sys/class/udc/${sys.usb.controller}/device/saving 1
write /sys/devices/platform/soc/mt_usb/saving 1
write /config/usb_gadget/g1/idVendor 0x0e8d
write /config/usb_gadget/g1/idProduct 0x2029
symlink /config/usb_gadget/g1/functions/mass_storage.0 /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 ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
### ELT Logging port
on property:persist.vendor.radio.port_index=4 && property:sys.boot_completed=1
setprop vendor.usb.acm_port0 3
setprop vendor.usb.acm_enable 1
setprop vendor.usb.acm_idx 4
setprop vendor.usb.acm_cnt 1
setprop sys.usb.config none
setprop sys.usb.config ${sys.usb.state}
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=adb && property:sys.usb.configfs=1 && \
property:vendor.usb.acm_enable=1 && property:persist.vendor.radio.port_index=4
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "ELT"
write /config/usb_gadget/g1/idVendor 0x0e8d
write /config/usb_gadget/g1/idProduct 0x2006
write /sys/class/udc/${sys.usb.controller}/device/saving 1
write /sys/devices/platform/soc/mt_usb/saving 1
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/acm.gs3 /config/usb_gadget/g1/configs/b.1/f2
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=mtp,adb && property:sys.usb.configfs=1 && \
property:vendor.usb.acm_enable=1 && property:persist.vendor.radio.port_index=4
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "ELT"
write /config/usb_gadget/g1/idVendor 0x0e8d
write /config/usb_gadget/g1/idProduct 0x200a
write /sys/class/udc/${sys.usb.controller}/device/saving 1
write /sys/devices/platform/soc/mt_usb/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.gs3 /config/usb_gadget/g1/configs/b.1/f3
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
### Charging Compositions
on property:vendor.usb.charging.func.name=moto_mass_storage
mkdir /config/usb_gadget/g1/functions/moto_mass_storage.0
on property:sys.usb.config=charging && property:sys.usb.configfs=1
write /config/usb_gadget/g1/strings/0x409/serialnumber ${ro.serialno}
write /config/usb_gadget/g1/UDC "none"
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "Motorola Charge Only"
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
write /config/usb_gadget/g1/idVendor 0x22b8
write /config/usb_gadget/g1/idProduct 0x2eb7
write /config/usb_gadget/g1/os_desc/use 0
symlink /config/usb_gadget/g1/functions/${vendor.usb.charging.func.name:-mass_storage}.0 /config/usb_gadget/g1/configs/b.1/f1
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=charging,adb
start adbd
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=charging,adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/strings/0x409/serialnumber ${ro.serialno}
write /config/usb_gadget/g1/UDC "none"
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "Motorola Charge Only"
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
write /config/usb_gadget/g1/idVendor 0x22b8
write /config/usb_gadget/g1/idProduct 0x2eb7
write /config/usb_gadget/g1/os_desc/use 1
symlink /config/usb_gadget/g1/functions/${vendor.usb.charging.func.name:-mass_storage}.0 /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 ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
### Android Compositions
on property:sys.usb.config=mtp && property:sys.usb.configfs=1
write /config/usb_gadget/g1/idProduct 0x2e82
write /config/usb_gadget/g1/idVendor 0x22b8
on property:sys.usb.config=mtp,adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/idProduct 0x2e76
write /config/usb_gadget/g1/idVendor 0x22b8
on property:sys.usb.config=mtp && property:vendor.usb.use_ffs_mtp=0 && property:sys.usb.configfs=1
write /config/usb_gadget/g1/functions/mtp.gs0/os_desc/interface.MTP/compatible_id "MTP"
on property:sys.usb.config=mtp && property:vendor.usb.use_ffs_mtp=1 && property:sys.usb.configfs=1
symlink /config/usb_gadget/g1/functions/ffs.mtp /config/usb_gadget/g1/configs/b.1/f1
on property:sys.usb.config=mtp,adb && property:vendor.usb.use_ffs_mtp=0 && property:sys.usb.configfs=1
write /config/usb_gadget/g1/functions/mtp.gs0/os_desc/interface.MTP/compatible_id "MTP"
on property:sys.usb.config=mtp,adb && property:vendor.usb.use_ffs_mtp=1 && property:sys.usb.configfs=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
on early-init && property:ro.vendor.usb.cdrom.func=moto_mass_storage
insmod /vendor/lib/modules/moto_f_mass_storage.ko
on init && property:ro.vendor.usb.cdrom.func=moto_mass_storage
mkdir /config/usb_gadget/g1/functions/moto_mass_storage.0
on init && property:ro.carrier=vzw
mkdir /config/usb_gadget/g1/functions/${ro.vendor.usb.cdrom.func:-mass_storage}.0/lun.1
on init && property:ro.carrier=vzwpre
mkdir /config/usb_gadget/g1/functions/${ro.vendor.usb.cdrom.func:-mass_storage}.0/lun.1
on property:sys.usb.config=mtp,cdrom && property:sys.usb.configfs=1
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
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "mtp, cdrom"
write /config/usb_gadget/g1/idProduct 0x2e61
write /config/usb_gadget/g1/idVendor 0x22b8
write /config/usb_gadget/g1/functions/${ro.vendor.usb.cdrom.func:-mass_storage}.0/lun.0/file ""
write /config/usb_gadget/g1/functions/${ro.vendor.usb.cdrom.func:-mass_storage}.0/lun.0/cdrom 1
write /config/usb_gadget/g1/functions/${ro.vendor.usb.cdrom.func:-mass_storage}.0/lun.0/file "/product/etc/cdrom"
on property:sys.usb.config=mtp,cdrom,adb && property:sys.usb.configfs=1
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
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "mtp, cdrom"
write /config/usb_gadget/g1/idProduct 0x2e61
write /config/usb_gadget/g1/idVendor 0x22b8
write /config/usb_gadget/g1/functions/${ro.vendor.usb.cdrom.func:-mass_storage}.0/lun.0/file ""
write /config/usb_gadget/g1/functions/${ro.vendor.usb.cdrom.func:-mass_storage}.0/lun.0/cdrom 1
write /config/usb_gadget/g1/functions/${ro.vendor.usb.cdrom.func:-mass_storage}.0/lun.0/file "/product/etc/cdrom"
on property:sys.usb.config=mtp,cdrom && property:sys.usb.configfs=1 && property:ro.carrier=vzw
write /config/usb_gadget/g1/functions/${ro.vendor.usb.cdrom.func:-mass_storage}.0/lun.1/file ""
write /config/usb_gadget/g1/functions/${ro.vendor.usb.cdrom.func:-mass_storage}.0/lun.1/cdrom 1
write /config/usb_gadget/g1/functions/${ro.vendor.usb.cdrom.func:-mass_storage}.0/lun.1/file "/product/etc/vzw_cdrom"
on property:sys.usb.config=mtp,cdrom,adb && property:sys.usb.configfs=1 && property:ro.carrier=vzw
write /config/usb_gadget/g1/functions/${ro.vendor.usb.cdrom.func:-mass_storage}.0/lun.1/file ""
write /config/usb_gadget/g1/functions/${ro.vendor.usb.cdrom.func:-mass_storage}.0/lun.1/cdrom 1
write /config/usb_gadget/g1/functions/${ro.vendor.usb.cdrom.func:-mass_storage}.0/lun.1/file "/product/etc/vzw_cdrom"
on property:sys.usb.config=mtp,cdrom && property:sys.usb.configfs=1 && property:ro.carrier=vzwpre
write /config/usb_gadget/g1/functions/${ro.vendor.usb.cdrom.func:-mass_storage}.0/lun.1/file ""
write /config/usb_gadget/g1/functions/${ro.vendor.usb.cdrom.func:-mass_storage}.0/lun.1/cdrom 1
write /config/usb_gadget/g1/functions/${ro.vendor.usb.cdrom.func:-mass_storage}.0/lun.1/file "/product/etc/vzw_cdrom"
on property:sys.usb.config=mtp,cdrom,adb && property:sys.usb.configfs=1 && property:ro.carrier=vzwpre
write /config/usb_gadget/g1/functions/${ro.vendor.usb.cdrom.func:-mass_storage}.0/lun.1/file ""
write /config/usb_gadget/g1/functions/${ro.vendor.usb.cdrom.func:-mass_storage}.0/lun.1/cdrom 1
write /config/usb_gadget/g1/functions/${ro.vendor.usb.cdrom.func:-mass_storage}.0/lun.1/file "/product/etc/vzw_cdrom"
on property:sys.usb.config=mtp,cdrom && property:vendor.usb.use_ffs_mtp=0 && property:sys.usb.configfs=1
symlink /config/usb_gadget/g1/functions/mtp.gs0 /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/${ro.vendor.usb.cdrom.func:-mass_storage}.0 /config/usb_gadget/g1/configs/b.1/f2
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=mtp,cdrom && property:vendor.usb.use_ffs_mtp=1 && property:sys.usb.configfs=1
symlink /config/usb_gadget/g1/functions/ffs.mtp /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/${ro.vendor.usb.cdrom.func:-mass_storage}.0 /config/usb_gadget/g1/configs/b.1/f2
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=mtp,cdrom,adb && property:vendor.usb.use_ffs_mtp=0 && property:sys.usb.configfs=1
symlink /config/usb_gadget/g1/functions/mtp.gs0 /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/${ro.vendor.usb.cdrom.func:-mass_storage}.0 /config/usb_gadget/g1/configs/b.1/f2
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=mtp,cdrom,adb && property:vendor.usb.use_ffs_mtp=1 && property:sys.usb.configfs=1
symlink /config/usb_gadget/g1/functions/ffs.mtp /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/${ro.vendor.usb.cdrom.func:-mass_storage}.0 /config/usb_gadget/g1/configs/b.1/f2
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=rndis && property:sys.usb.configfs=1
setprop sys.usb.config rndis,${persist.vendor.usb.config.extra}
on property:sys.usb.config=rndis,none && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "rndis"
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
write /config/usb_gadget/g1/idVendor 0x22b8
write /config/usb_gadget/g1/idProduct 0x2e24
symlink /config/usb_gadget/g1/functions/${vendor.usb.rndis.func.name} /config/usb_gadget/g1/configs/b.1/f1
write /config/usb_gadget/g1/configs/b.1/f1/wceis 1
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state rndis
on property:sys.usb.config=rndis,adb && property:sys.usb.configfs=1
setprop sys.usb.config rndis,${persist.vendor.usb.config.extra},adb
on property:sys.usb.config=rndis,none,adb && property:sys.usb.configfs=1
start adbd
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=rndis,none,adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "rndis_adb"
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
write /config/usb_gadget/g1/idVendor 0x22b8
write /config/usb_gadget/g1/idProduct 0x2e25
symlink /config/usb_gadget/g1/functions/${vendor.usb.rndis.func.name} /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/configs/b.1/f1/wceis 1
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state rndis,adb
on property:sys.usb.config=rndis,webcam && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "rndis"
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
write /config/usb_gadget/g1/idVendor 0x22b8
write /config/usb_gadget/g1/idProduct 0x2e24
symlink /config/usb_gadget/g1/functions/uvc.0 /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/${vendor.usb.rndis.func.name} /config/usb_gadget/g1/configs/b.1/f2
write /config/usb_gadget/g1/configs/b.1/f2/wceis 1
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=rndis,webcam,adb && property:sys.usb.configfs=1
start adbd
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=rndis,webcam,adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "rndis_adb"
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
write /config/usb_gadget/g1/idVendor 0x22b8
write /config/usb_gadget/g1/idProduct 0x2e25
symlink /config/usb_gadget/g1/functions/uvc.0 /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/${vendor.usb.rndis.func.name} /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f3
write /config/usb_gadget/g1/configs/b.1/f2/wceis 1
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=ncm && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "ncm"
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
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
rm /config/usb_gadget/g1/configs/b.1/f9
write /config/usb_gadget/g1/idVendor 0x22b8
write /config/usb_gadget/g1/idProduct 0x2e44
write /config/usb_gadget/g1/functions/ncm.0/os_desc/interface.ncm/compatible_id "WINNCM"
symlink /config/usb_gadget/g1/functions/ncm.0 /config/usb_gadget/g1/configs/b.1/f1
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=ncm,adb && property:sys.usb.configfs=1
start adbd
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=ncm,adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "ncm_adb"
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
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
rm /config/usb_gadget/g1/configs/b.1/f9
write /config/usb_gadget/g1/idVendor 0x22b8
write /config/usb_gadget/g1/idProduct 0x2e45
write /config/usb_gadget/g1/functions/ncm.0/os_desc/interface.ncm/compatible_id "WINNCM"
symlink /config/usb_gadget/g1/functions/ncm.0 /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 ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=ncm,webcam && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "ncm"
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
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
rm /config/usb_gadget/g1/configs/b.1/f9
write /config/usb_gadget/g1/idVendor 0x22b8
write /config/usb_gadget/g1/idProduct 0x2e44
write /config/usb_gadget/g1/functions/ncm.0/os_desc/interface.ncm/compatible_id "WINNCM"
symlink /config/usb_gadget/g1/functions/uvc.0 /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/ncm.0 /config/usb_gadget/g1/configs/b.1/f2
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
wait /config/usb_gadget/uvc_delay_300ms 0.3
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=ncm,webcam,adb && property:sys.usb.configfs=1
start adbd
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=ncm,webcam,adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "ncm_adb"
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
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
rm /config/usb_gadget/g1/configs/b.1/f9
write /config/usb_gadget/g1/idVendor 0x22b8
write /config/usb_gadget/g1/idProduct 0x2e45
write /config/usb_gadget/g1/functions/ncm.0/os_desc/interface.ncm/compatible_id "WINNCM"
symlink /config/usb_gadget/g1/functions/uvc.0 /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/ncm.0 /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f3
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
wait /config/usb_gadget/uvc_delay_100ms 0.1
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=readyfor && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "readyfor"
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
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
rm /config/usb_gadget/g1/configs/b.1/f9
write /config/usb_gadget/g1/idVendor 0x22b8
write /config/usb_gadget/g1/idProduct 0x2e46
symlink /config/usb_gadget/g1/functions/${vendor.usb.rndis.func.name} /config/usb_gadget/g1/configs/b.1/f1
write /config/usb_gadget/g1/configs/b.1/f1/wceis 1
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=readyfor,adb && property:sys.usb.configfs=1
start adbd
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=readyfor,adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "readyfor_adb"
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
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
rm /config/usb_gadget/g1/configs/b.1/f9
write /config/usb_gadget/g1/idVendor 0x22b8
write /config/usb_gadget/g1/idProduct 0x2e47
symlink /config/usb_gadget/g1/functions/${vendor.usb.rndis.func.name} /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/configs/b.1/f1/wceis 1
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=ptp && property:sys.usb.configfs=1
write /config/usb_gadget/g1/idProduct 0x2e83
write /config/usb_gadget/g1/idVendor 0x22b8
on property:sys.usb.config=ptp,adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/idProduct 0x2e84
write /config/usb_gadget/g1/idVendor 0x22b8
on property:sys.usb.config=ptp && property:vendor.usb.use_ffs_mtp=0 && property:sys.usb.configfs=1
write /config/usb_gadget/g1/functions/ptp.gs1/os_desc/interface.MTP/compatible_id "PTP"
on property:sys.usb.config=ptp,adb && property:vendor.usb.use_ffs_mtp=0 && property:sys.usb.configfs=1
write /config/usb_gadget/g1/functions/ptp.gs1/os_desc/interface.MTP/compatible_id "PTP"
on property:sys.usb.config=ptp && property:vendor.usb.use_ffs_mtp=1 && property:sys.usb.configfs=1
write /config/usb_gadget/g1/functions/ffs.ptp/os_desc/interface.MTP/compatible_id "PTP"
symlink /config/usb_gadget/g1/functions/ffs.ptp /config/usb_gadget/g1/configs/b.1/f1
on property:sys.usb.config=ptp,adb && property:vendor.usb.use_ffs_mtp=1 && property:sys.usb.configfs=1
write /config/usb_gadget/g1/functions/ffs.ptp/os_desc/interface.MTP/compatible_id "PTP"
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
on init
setprop sys.usb.controller none
chown root system /sys/module/uvcvideo/parameters/quirks
chmod 0660 /sys/module/uvcvideo/parameters/quirks
setprop sys.usb.configfs 1
setprop ro.vendor.usb.moto_common_rc 1
on boot && property:ro.boot.adb_early=1
start vendor.mmi-usb-sh
on property:sys.usb.config=adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/idVendor 0x22b8
write /config/usb_gadget/g1/idProduct 0x2E81
on property:sys.usb.config=webcam && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "Webcam"
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
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
rm /config/usb_gadget/g1/configs/b.1/f9
write /config/usb_gadget/g1/idVendor 0x22b8
write /config/usb_gadget/g1/idProduct 0x2e85
symlink /config/usb_gadget/g1/functions/uvc.0 /config/usb_gadget/g1/configs/b.1/f1
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
wait /config/usb_gadget/uvc_delay_300ms 0.3
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=webcam,adb && property:sys.usb.configfs=1
start adbd
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=webcam,adb && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "Webcam"
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
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
rm /config/usb_gadget/g1/configs/b.1/f9
write /config/usb_gadget/g1/idVendor 0x22b8
write /config/usb_gadget/g1/idProduct 0x2e85
symlink /config/usb_gadget/g1/functions/uvc.0 /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 ${sys.usb.controller}
wait /config/usb_gadget/uvc_delay_100ms 0.1
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=adb,acm && property:sys.usb.configfs=1
start adbd
on property:sys.usb.ffs.ready=1 && property:sys.usb.config=adb,acm && property:sys.usb.configfs=1
mkdir /config/usb_gadget/g1/functions/acm.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
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
rm /config/usb_gadget/g1/configs/b.1/f9
write /config/usb_gadget/g1/idVendor 0x1d6b
write /config/usb_gadget/g1/idProduct 0x0104
symlink /config/usb_gadget/g1/functions/acm.0 /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 ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.config=acm && property:sys.usb.configfs=1
mkdir /config/usb_gadget/g1/functions/acm.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
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
rm /config/usb_gadget/g1/configs/b.1/f9
write /config/usb_gadget/g1/idVendor 0x1d6b
write /config/usb_gadget/g1/idProduct 0x0104
symlink /config/usb_gadget/g1/functions/acm.0 /config/usb_gadget/g1/configs/b.1/f1
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:vendor.em.usb.set=*
write /proc/mtk_usb/usb-phy0/u2_phy/${vendor.em.usb.set} ${vendor.em.usb.value}

42
rootdir/etc/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
on post-fs-data
write /proc/bootprof "post-fs-data: on modem start"
# Encrypt phone function
setprop vold.post_fs_data_done 1

1088
rootdir/etc/init.mt6855.rc Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,938 @@
on early-init
write /sys/module/musb_hdrc/parameters/kernel_init_done 1
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 "musb-hdrc"
setprop vendor.usb.controller "musb-hdrc"
setprop sys.usb.ffs.aio_compat 0
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
on charger
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/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/configs/b.1/MaxPower 500
mount functionfs adb /dev/usb-ffs/adb uid=2000,gid=2000
setprop sys.usb.configfs 1
setprop vendor.usb.controller "musb-hdrc"
setprop vendor.usb.acm_cnt 0
setprop vendor.usb.acm_port0 ""
setprop vendor.usb.acm_port1 ""
setprop vendor.usb.acm_enable 0
setprop sys.usb.config hid
### 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/devices/platform/soc/mt_usb/saving 0
### HID for KPOC ###
on property:sys.usb.config=hid && property:sys.usb.configfs=1
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "HID"
write /config/usb_gadget/g1/idProduct 0x20FF
write /config/usb_gadget/g1/functions/hid.gs0/protocol 0
write /config/usb_gadget/g1/functions/hid.gs0/subclass 0
#write /config/usb_gadget/g1/functions/hid.gs0/report_length 4
#write /config/usb_gadget/g1/functions/hid.gs0/report_desc \\x05\\x01\\x09\\x00\\xa1\\x01\\xc0
symlink /config/usb_gadget/g1/functions/hid.gs0 /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 : 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/devices/platform/soc/mt_usb/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/devices/platform/soc/mt_usb/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
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/devices/platform/soc/mt_usb/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/devices/platform/soc/mt_usb/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}
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/devices/platform/soc/mt_usb/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/devices/platform/soc/mt_usb/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/devices/platform/soc/mt_usb/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/devices/platform/soc/mt_usb/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/devices/platform/soc/mt_usb/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/devices/platform/soc/mt_usb/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/devices/platform/soc/mt_usb/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/devices/platform/soc/mt_usb/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/devices/platform/soc/mt_usb/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/devices/platform/soc/mt_usb/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/devices/platform/soc/mt_usb/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/devices/platform/soc/mt_usb/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: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/devices/platform/soc/mt_usb/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/devices/platform/soc/mt_usb/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/devices/platform/soc/mt_usb/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/musb-hdrc/device/cmode 0
on property:vendor.usb.charging=no
write /sys/class/udc/musb-hdrc/device/cmode 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.usb.port.mode=usb
write /sys/devices/platform/soc/mt_usb/portmode 0
on property:vendor.usb.port.mode=uart
write /sys/devices/platform/soc/mt_usb/portmode 1
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 ###

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

View File

@ -0,0 +1,61 @@
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
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
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,7 @@
# MTK platform .rc configure
on post-fs-data
# calibration
mkdir /data/vendor/sensor 0774 system system
# Sensor
chmod 0660 /dev/hf_manager
chown system system /dev/hf_manager

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

View File

@ -0,0 +1,80 @@
#INTERNAL_START
on post-fs-data
#
# Connectivity related modules and character device nodes (Begin)
#
#/dev/ttyMT2 for Connectivity BT/FM/GPS usage
chmod 0660 /dev/ttyMT2
chown system system /dev/ttyMT2
# 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 666 /dev/gps_emi
# WiFi
mkdir /data/misc/wifi 0770 wifi wifi
mkdir /data/misc/wifi/sockets 0770 wifi wifi
mkdir /data/misc/wpa_supplicant 0770 wifi wifi
#
# Connectivity related device nodes & configuration (end)
#
on boot
#
# Connectivity related services (Begin)
#
# GPS
service mnld /vendor/bin/mnld 1Hz=y meta log_ctrl
class main
user gps
group gps inet misc sdcard_rw sdcard_r media_rw system radio wakelock
socket mnld stream 660 gps system
#service BGW /vendor/bin/BGW
# user system
# group gps system radio
# class main
#
# Connectivity related services (End)
#
#
# Connectivity related kernel objects (Begin)
#
# load connfem driver
on boot
insmod /vendor/lib/modules/connfem.ko
# load bt_drv
on property:vendor.connsys.driver.ready=yes
insmod /vendor/lib/modules/bt_drv_${ro.vendor.bt.platform}.ko
# load wifi chrdev driver and wlan driver after wmt_loader finish
on property:vendor.connsys.driver.ready=yes
insmod /vendor/lib/modules/${ro.vendor.wlan.chrdev}.ko
insmod /vendor/lib/modules/wlan_drv_${ro.vendor.wlan.gen}.ko
# load fmradio_drv
on property:vendor.connsys.driver.ready=yes
insmod /vendor/lib/modules/fmradio_drv_${ro.vendor.fm.platform}.ko
# load gps_drv
on property:vendor.connsys.driver.ready=yes
insmod /vendor/lib/modules/${ro.vendor.gps.chrdev}.ko
#
# Connectivity related kernel objects (End)
#
#INTERNAL_END

View File

@ -0,0 +1,37 @@
import /vendor/etc/init/hw/meta_init.connectivity.common.rc
#INTERNAL_START
on boot
#
# Connectivity related services (Begin)
#
# WMT
service wmt_loader /vendor/bin/wmt_loader
user system
group system
oneshot
service wmt_launcher /vendor/bin/wmt_launcher -p /vendor/firmware/
user system
group system
#
# Connectivity related services (End)
#
#
# Connectivity related kernel objects (Begin)
#
# load wmt_drv
on boot
insmod /vendor/lib/modules/wmt_drv.ko
#
# Connectivity related kernel objects (End)
#
#INTERNAL_END

View File

@ -0,0 +1,39 @@
# 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 post-fs-data
write /proc/bootprof "post-fs-data: on meta modem start"
# Modem related device nodes
mkdir /mnt/vendor/nvdata/md 0770 root system
mkdir /mnt/vendor/nvdata/md3 0770 root system
mkdir /data/md3 0770 root system
# Build-in Modified - S
# insmod /vendor/lib/modules/ccci_plat.ko
# insmod /vendor/lib/modules/ccci.ko
# Build-in Modified - E
chown radio radio /sys/kernel/ccci/boot
#SeLinux
mkdir /data/ccci_cfg 0770 system radio
restorecon /data/ccci_cfg
restorecon_recursive /mnt/vendor/protect_f
restorecon_recursive /mnt/vendor/protect_s
# Encrypt phone function
setprop vold.post_fs_data_done 1
service ccci_mdinit /vendor/bin/ccci_mdinit 0
user system
group radio system
oneshot
service ccci_rpcd /vendor/bin/ccci_rpcd 0
user radio
group radio system
oneshot

View File

@ -0,0 +1,15 @@
import /vendor/etc/init/hw/init.mtkgki.rc
#INTERNAL_START
on post-fs
chmod 0660 /dev/spm
chown system system /dev/spm
service spm_script /vendor/bin/spm_loader
user system
group system
oneshot
#INTERNAL_END

378
rootdir/etc/meta_init.rc Normal file
View File

@ -0,0 +1,378 @@
# 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.
#
# I am S vendor meta_init.rc
import /vendor/etc/init/hw/init.aee.rc
import /vendor/etc/init/trustonic.rc
import ${ro.vendor.rc}meta_init.connectivity.rc
import /vendor/etc/init/hw/meta_init.project.rc
import /vendor/etc/init/microtrust.rc
import /vendor/etc/init/android.hardware.boot@1.2-service.rc
import /vendor/etc/init/android.hardware.boot@1.2-service-lazy.rc
import /vendor/etc/init/android.hardware.health@2.1-service.rc
#import ${ro.vendor.rc}multi_init.rc
#phase out multi_init.rc, move related vendor rc to here.
#start
import /vendor/etc/init/aee_aedv.rc
import /vendor/etc/init/aee_aedv64.rc
import /vendor/etc/init/storageproxyd.rc
import /vendor/etc/init/android.hardware.keymaster@3.0-service.rc
import /vendor/etc/init/android.hardware.keymaster@3.0-service.trustonic.rc
import /vendor/etc/init/android.hardware.keymaster@4.0-service.rc
import /vendor/etc/init/android.hardware.keymaster@4.0-service.trustonic.rc
import /vendor/etc/init/android.hardware.keymaster@4.0-service.beanpod.rc
import /vendor/etc/init/android.hardware.keymaster@4.0-service.beanpod.lite.rc
import /vendor/etc/init/android.hardware.keymaster@4.0-service.trustkernel.rc
import /vendor/etc/init/android.hardware.keymaster@4.0-service.mtee.rc
import /vendor/etc/init/android.hardware.keymaster@4.1-service.rc
import /vendor/etc/init/android.hardware.keymaster@4.1-service.trustonic.rc
import /vendor/etc/init/android.hardware.keymaster@4.1-service.beanpod.rc
import /vendor/etc/init/android.hardware.keymaster@4.1-service.beanpod.lite.rc
import /vendor/etc/init/android.hardware.keymaster@4.1-service.trustkernel.rc
import /vendor/etc/init/android.hardware.security.keymint-service.rc
#import /vendor/etc/init/vendor.mediatek.hardware.keyinstall@1.0-service.rc
import /vendor/etc/init/vendor.mediatek.hardware.keymanage@1.0-service.rc
import /vendor/etc/init/android.hardware.audio.service.mediatek.rc
import /vendor/etc/init/vendor.mediatek.hardware.keymaster_attestation@1.1-service.rc
import /vendor/etc/init/android.hardware.nfc@1.2-service-st.rc
import /vendor/etc/init/tee.rc
import /vendor/etc/init/vendor.mediatek.hardware.nvram@1.1-sevice.rc
import /vendor/etc/init/vendor.mediatek.hardware.nvram@1.1-sevice-lazy.rc
import /vendor/etc/init/android.hardware.light@2.0-service-mediatek.rc
import /vendor/etc/init/android.hardware.light@2.0-service-mediatek-lazy.rc
import /vendor/etc/init/lights-mtk-default.rc
import /vendor/etc/init/lights-mtk-lazy.rc
import /vendor/etc/init/merged_hal_service.rc
import /vendor/etc/init/spm_script.rc
import /vendor/etc/init/nvram_daemon.rc
import /vendor/etc/init/microtrust.bp_kmsetkey_ca.rc
import /vendor/etc/init/vendor.microtrust.hardware.thh@2.0-service.rc
import /vendor/etc/init/microtrust.init_thh.rc
#end
#Make sure meta_init.modem.rc is the last rc file.
import ${ro.vendor.rc}meta_init.modem.rc
on early-init
write /proc/bootprof "INIT:early-init"
# Set init and its forked children's oom_adj.
write /proc/1/oom_score_adj -1000
#INTERNAL_START
mount debugfs debugfs /sys/kernel/debug
chmod 0755 /sys/kernel/debug
#INTERNAL_END
# initialize vendor.all.modules.ready to 1 here to prevent NOT GKI project blocked
setprop vendor.all.modules.ready 1
on init
write /proc/bootprof "INIT:init"
write /proc/bootprof "INIT: on init mt6855 start"
# Backward compatibility.
symlink /system/bin /bin
symlink /system/etc /etc
# Backward compatibility.
symlink /sys/kernel/debug /d
# Link /vendor to /system/vendor for devices without a vendor partition.
symlink /system/vendor /vendor
# Temp Backward compatibility
symlink /dev/block/by-name/boot /dev/bootimg
symlink /dev/block/by-name/recovery /dev/recovery
symlink /dev/block/by-name/secro /dev/sec_ro
symlink /dev/block/by-name/kb /dev/kb
symlink /dev/block/by-name/dkb /dev/dkb
symlink /dev/block/by-name/seccfg /dev/seccfg
symlink /dev/block/by-name/proinfo /dev/pro_info
symlink /dev/block/by-name/nvram /dev/nvram
symlink /dev/block/by-name/para /dev/misc
symlink /dev/block/by-name/logo /dev/logo
# Support legacy paths
symlink /sdcard /mnt/sdcard
#INTERNAL_START
symlink /sdcard /mnt/sdcard
mkdir /mnt/cd-rom 0000 system system
#INTERNAL_END
start hidl_memory
# Load properties from /system/ + /factory after fs mount.
on load_system_props_action
load_system_props
# avoid no log in meta mode due to logd-reinit
# stop keyinstall-1-0
# start keyinstall-1-0
on fs
## USB configfs
mkdir /dev/usb-ffs 0770 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 0xFFFF
write /config/usb_gadget/g1/bcdUSB 0x0200
mkdir /config/usb_gadget/g1/strings/0x409 0770
write /config/usb_gadget/g1/strings/0x409/manufacturer "Android"
write /config/usb_gadget/g1/strings/0x409/product "Android"
write /config/usb_gadget/g1/bDeviceClass 0
write /config/usb_gadget/g1/bDeviceSubClass 0
write /config/usb_gadget/g1/bDeviceProtocol 0
mkdir /config/usb_gadget/g1/functions/mass_storage.usb0
mkdir /config/usb_gadget/g1/functions/ffs.adb
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/configs/b.1 0770 shell shell
mkdir /config/usb_gadget/g1/configs/b.1/strings/0x409 0770 shell shell
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
setprop vendor.usb.feature 0
#INTERNAL_START
write /proc/bootprof "INIT:Mount_START"
start vendor.boot-hal-1-2
mount_all --early
write /proc/bootprof "INIT:Mount_END"
#INTERNAL_END
on post-fs
# start keyinstall-1-0
start vendor.light-default
start merged_hal_service
start health-hal-2-1
# Support legacy paths
symlink /sdcard /storage/sdcard0
#INTERNAL_START
chown system system /mnt/vendor/protect_f
chmod 0770 /mnt/vendor/protect_f
chown system system /mnt/vendor/protect_s
chmod 0770 /mnt/vendor/protect_s
chown system system /mnt/vendor/nvcfg
chmod 0771 /mnt/vendor/nvcfg
restorecon_recursive /mnt/vendor/nvcfg
chown root system /mnt/vendor/nvdata
chmod 0771 /mnt/vendor/nvdata
mkdir /mnt/vendor/nvdata/media 0771 media audio
restorecon_recursive /mnt/vendor/nvdata
#INTERNAL_END
on late-fs
start keystore2
start vendor.keymaster-3-0
start vendor.keymaster-3-0-trustonic
start vendor.keymaster-4-0
start vendor.keymaster-4-0-trustonic
start vendor.keymaster-4-0-beanpod
start vendor.keymaster-4-1
start vendor.keymaster-4-1-trustonic
start vendor.keymaster-4-1-beanpod
start vendor.keymint-default
start vendor.keymint-trustonic
start vendor.keymint-beanpod
start keymaster_attestation-1-1
exec_start wait_for_keymaster
mount_all --late
on post-fs-data
write /proc/bootprof "INIT:post-fs-data"
wait_for_prop vendor.all.modules.ready 1
write /proc/bootprof "modprobe: Load_Module_DONE"
#Thermal
mkdir /data/.tp/ 0775 system system
#INTERNAL_START
# WiFi
mkdir /data/misc/wifi 0770 system wifi
mkdir /data/misc/wifi/sockets 0770 system wifi
mkdir /data/misc/dhcp 0770 dhcp dhcp
chown dhcp dhcp /data/misc/dhcp
#give system access to rfkill device node
chmod 0660 /dev/rfkill
# RTC
mkdir /data/misc/rtc 0770 system system
# Android SEC related device nodes
chmod 0660 /dev/sec
chown root system /dev/sec
#change partition permission
exec /vendor/etc/partition_permission.sh
chmod 0666 /dev/exm0
#INTERNAL_END
on boot
# For backlight
chmod 0664 /sys/class/leds/lcd-backlight/brightness
chown system system /sys/class/leds/lcd-backlight/brightness
#INTERNAL_START
class_start default
#INTERNAL_END
#USB configfs
mount functionfs adb /dev/usb-ffs/adb uid=2000,gid=2000
chown system radio /dev/ttyGS3
chmod 0660 /dev/ttyGS3
setprop sys.usb.configfs 1
setprop sys.usb.ffs.aio_compat 0
# One shot invocation to encrypt unencrypted volumes
# mtk modification:
# To speed up the booting in meta/factory mode, we don't encrypt the device.
# And then handle it as 'unencrypted' state.
on encrypt
mount ext4 /dev/block/by-name/userdata /data noatime nosuid nodev noauto_da_alloc discard wait
setprop vendor.crypto.fake_encrypt 1
setprop vold.post_fs_data_done 0
trigger post-fs-data
on property:vendor.crypto.fake_encrypt=1 && property:vold.post_fs_data_done=1
trigger load_persist_props_action
# setprop ro.crypto.state unencrypted
setprop vendor.soter.teei.crypto.state unencrypted
exec_start update_verifier
class_start main
class_start late_start
start mount_all_storages
#Log too much setting
on property:ro.vendor.mtklog_internal=1
setprop vendor.logmuch.value 10000
#INTERNAL_START
service thermal_manager /vendor/bin/thermal_manager
user root
group system
oneshot
service loghidlvendorservice /vendor/bin/loghidlvendorservice
class main
user shell
group system shell radio
service meta_tst /vendor/bin/meta_tst
user root
group radio system wifi audio bluetooth media gps
socket meta-atci stream 660 radio system
service factory_no_image /vendor/bin/factory
user root
group radio system wifi media gps audio bluetooth wakelock nfc
capabilities BLOCK_SUSPEND NET_RAW NET_ADMIN SYS_ADMIN SYS_BOOT
socket factory-atci stream 660 radio system
service atcid-daemon-u /vendor/bin/atcid
interface vendor.mediatek.hardware.atci@1.0::IAtcid default
class hal
class core
socket adb_atci_socket stream 660 radio system
user root
group radio system
oneshot
service fuelgauged /vendor/bin/fuelgauged
class main
user system
group system
on property:vendor.mtk.factory.start=1
stop factory_no_image
start factory_no_image
#META+ADB
on property:ro.boot.usbconfig=0 && property:sys.usb.configfs=1
write /proc/bootprof "INIT:start adbd"
start adbd
on property:sys.usb.ffs.ready=1 && property:ro.boot.usbconfig=0 && property:sys.usb.configfs=1 && \
property:vendor.usb.feature=0
write /proc/bootprof "INIT:on property:ro.boot.usbconfig=0"
write /config/usb_gadget/g1/UDC "none"
write /config/usb_gadget/g1/strings/0x409/serialnumber ${ro.serialno}
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "adb_acm"
write /config/usb_gadget/g1/idProduct 0x200E
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/acm.gs0 /config/usb_gadget/g1/configs/b.1/f2
write /config/usb_gadget/g1/UDC "musb-hdrc"
#META, move this to kernel driver: CONFIG_USB_CONFIGFS_MTK_FASTMETA
on property:ro.boot.usbconfig=1 && property:sys.usb.configfs=1 && property:vendor.usb.feature=0
write /proc/bootprof "INIT:on property:ro.boot.usbconfig 1"
#write /config/usb_gadget/g1/UDC "none"
#write /config/usb_gadget/g1/strings/0x409/serialnumber ""
#write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "acm"
#write /config/usb_gadget/g1/idProduct 0x2007
#write /config/usb_gadget/g1/bDeviceClass 02
#symlink /config/usb_gadget/g1/functions/acm.gs0 /config/usb_gadget/g1/configs/b.1/f1
#write /config/usb_gadget/g1/UDC "musb-hdrc"
#META+ELT, move this to kernel driver: CONFIG_USB_CONFIGFS_MTK_FASTMETA
on property:ro.boot.usbconfig=2 && property:sys.usb.configfs=1
write /proc/bootprof "INIT:on property:ro.boot.usbconfig 2"
setprop vendor.usb.acm_idx 1,4
#write /config/usb_gadget/g1/UDC "none"
#write /config/usb_gadget/g1/strings/0x409/serialnumber $ro.serialno
#write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "meta_elt"
#write /config/usb_gadget/g1/idProduct 0x202d
#symlink /config/usb_gadget/g1/functions/mass_storage.usb0 /config/usb_gadget/g1/configs/b.1/f1
#symlink /config/usb_gadget/g1/functions/acm.gs0 /config/usb_gadget/g1/configs/b.1/f2
#symlink /config/usb_gadget/g1/functions/acm.gs3 /config/usb_gadget/g1/configs/b.1/f3
#write /config/usb_gadget/g1/UDC "musb-hdrc"
#META+ELT+ADB
on property:ro.boot.usbconfig=3 && property:sys.usb.configfs=1
write /proc/bootprof "INIT:start adbd"
start adbd
on property:sys.usb.ffs.ready=1 && property:ro.boot.usbconfig=3 && property:sys.usb.configfs=1
write /proc/bootprof "INIT:on property:ro.boot.usbconfig 3"
write /config/usb_gadget/g1/UDC "none"
write /config/usb_gadget/g1/strings/0x409/serialnumber ${ro.serialno}
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "meta_elt_adb"
write /config/usb_gadget/g1/idProduct 0x2040
write /sys/devices/platform/soc/mt_usb/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.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 "musb-hdrc"
setprop vendor.usb.acm_idx 1,4
# MTK fast charging support
on property:persist.vendor.mediatek.fast_charging.support=*
write /sys/devices/platform/charger/fast_chg_indicator ${persist.vendor.mediatek.fast_charging.support}
#INTERNAL_END

View File

@ -0,0 +1,11 @@
# 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.
#
import /vendor/etc/init/android.hardware.keymaster@4.1-service.mtee.rc
import /vendor/etc/init/android.hardware.security.keymint-service.trustonic.rc
import /vendor/etc/init/android.hardware.security.keymint-service.beanpod.rc
import /vendor/etc/init/hw/meta_init.rc

50
rootdir/etc/multi_init.rc Normal file
View File

@ -0,0 +1,50 @@
# import AOSP service related rc in meta mode and factory mode.
#
import /system_ext/etc/init/aee_aed.rc
import /system_ext/etc/init/aee_aed64.rc
import /vendor/etc/init/aee_aedv.rc
import /vendor/etc/init/aee_aedv64.rc
import /system/etc/init/logd.rc
import /system/etc/init/logd_e.rc
import /system/etc/init/logcatd.rc
import /system/etc/init/storagemanagerd.rc
import /system/etc/init/mobile_log_d.rc
import /system/etc/init/android.system.suspend@1.0-service.rc
import /system/etc/init/wait_for_keymaster.rc
import /system/etc/init/keystore2.rc
import /vendor/etc/init/storageproxyd.rc
import /vendor/etc/init/android.hardware.keymaster@3.0-service.rc
import /vendor/etc/init/android.hardware.keymaster@3.0-service.trustonic.rc
import /vendor/etc/init/android.hardware.keymaster@4.0-service.rc
import /vendor/etc/init/android.hardware.keymaster@4.0-service.trustonic.rc
import /vendor/etc/init/android.hardware.keymaster@4.0-service.beanpod.rc
import /vendor/etc/init/android.hardware.keymaster@4.0-service.beanpod.lite.rc
import /vendor/etc/init/android.hardware.keymaster@4.0-service.trustkernel.rc
import /vendor/etc/init/android.hardware.keymaster@4.0-service.mtee.rc
import /vendor/etc/init/android.hardware.keymaster@4.1-service.rc
import /vendor/etc/init/android.hardware.keymaster@4.1-service.trustonic.rc
import /vendor/etc/init/android.hardware.keymaster@4.1-service.beanpod.rc
import /vendor/etc/init/android.hardware.keymaster@4.1-service.beanpod.lite.rc
import /vendor/etc/init/android.hardware.keymaster@4.1-service.trustkernel.rc
import /vendor/etc/init/android.hardware.keymaster@4.1-service.mtee.rc
import /vendor/etc/init/android.hardware.security.keymint-service.rc
import /vendor/etc/init/android.hardware.security.keymint-service.trustonic.rc
import /vendor/etc/init/android.hardware.security.keymint-service.beanpod.rc
#import /vendor/etc/init/vendor.mediatek.hardware.keyinstall@1.0-service.rc
import /vendor/etc/init/vendor.mediatek.hardware.keymanage@1.0-service.rc
import /vendor/etc/init/android.hardware.audio.service.mediatek.rc
import /vendor/etc/init/vendor.mediatek.hardware.keymaster_attestation@1.1-service.rc
import /vendor/etc/init/android.hardware.nfc@1.2-service-st.rc
import /vendor/etc/init/tee.rc
import /vendor/etc/init/vendor.mediatek.hardware.nvram@1.1-sevice.rc
import /vendor/etc/init/vendor.mediatek.hardware.nvram@1.1-sevice-lazy.rc
import /vendor/etc/init/android.hardware.light@2.0-service-mediatek.rc
import /vendor/etc/init/android.hardware.light@2.0-service-mediatek-lazy.rc
import /vendor/etc/init/lights-mtk-default.rc
import /vendor/etc/init/lights-mtk-lazy.rc
import /vendor/etc/init/merged_hal_service.rc
import /vendor/etc/init/spm_script.rc
import /vendor/etc/init/nvram_daemon.rc
import /vendor/etc/init/microtrust.bp_kmsetkey_ca.rc
import /vendor/etc/init/vendor.microtrust.hardware.thh@2.0-service.rc
import /vendor/etc/init/microtrust.init_thh.rc

36
setup-makefiles.sh Normal file
View File

@ -0,0 +1,36 @@
#!/bin/bash
#
# Copyright (C) 2016 The CyanogenMod Project
# Copyright (C) 2017-2020 The LineageOS Project
#
# SPDX-License-Identifier: Apache-2.0
#
set -e
DEVICE=cancunf
VENDOR=motorola
# Load extract_utils and do some sanity checks
MY_DIR="${BASH_SOURCE%/*}"
if [[ ! -d "${MY_DIR}" ]]; then MY_DIR="${PWD}"; fi
ANDROID_ROOT="${MY_DIR}/../../.."
HELPER="${ANDROID_ROOT}/tools/extract-utils/extract_utils.sh"
if [ ! -f "${HELPER}" ]; then
echo "Unable to find helper script at ${HELPER}"
exit 1
fi
source "${HELPER}"
# Initialize the helper
setup_vendor "${DEVICE}" "${VENDOR}" "${ANDROID_ROOT}"
# Warning headers and guards
write_headers
write_makefiles "${MY_DIR}/proprietary-files.txt" true
# Finish
write_footers

137
system.prop Normal file
View File

@ -0,0 +1,137 @@
Build.BRAND=MTK
bluetooth.profile.a2dp.source.enabled=true
bluetooth.profile.asha.central.enabled=true
bluetooth.profile.avrcp.target.enabled=true
bluetooth.profile.bas.client.enabled=true
bluetooth.profile.gatt.enabled=true
bluetooth.profile.hfp.ag.enabled=true
bluetooth.profile.hid.host.enabled=true
bluetooth.profile.map.server.enabled=true
bluetooth.profile.opp.enabled=true
bluetooth.profile.pan.nap.enabled=true
bluetooth.profile.pan.panu.enabled=true
bluetooth.profile.pbap.server.enabled=true
bluetooth.profile.sap.server.enabled=true
dalvik.vm.appimageformat=lz4
dalvik.vm.dex2oat-Xms=64m
dalvik.vm.dex2oat-Xmx=512m
dalvik.vm.dex2oat-max-image-block-size=524288
dalvik.vm.dex2oat-minidebuginfo=true
dalvik.vm.dex2oat-resolve-startup-strings=true
dalvik.vm.dexopt.secondary=true
dalvik.vm.dexopt.thermal-cutoff=2
dalvik.vm.enable_pr_dexopt=true
dalvik.vm.image-dex2oat-Xms=64m
dalvik.vm.image-dex2oat-Xmx=64m
dalvik.vm.madvise.artfile.size=4294967295
dalvik.vm.madvise.odexfile.size=104857600
dalvik.vm.madvise.vdexfile.size=104857600
dalvik.vm.minidebuginfo=true
dalvik.vm.ps-min-first-save-ms=150000
dalvik.vm.usap_pool_enabled=false
dalvik.vm.usap_pool_refill_delay_ms=3000
dalvik.vm.usap_pool_size_max=3
dalvik.vm.usap_pool_size_min=1
dalvik.vm.usap_refill_threshold=1
dalvik.vm.useartservice=true
dalvik.vm.usejit=true
debug.atrace.tags.enableflags=0
debug.sf.early.app.duration=20000000
debug.sf.early.sf.duration=27600000
debug.sf.earlyGl.app.duration=20000000
debug.sf.earlyGl.sf.duration=27600000
debug.sf.enable_gl_backpressure=0
debug.sf.enable_transaction_tracing=false
debug.sf.hwc.min.duration=23000000
debug.sf.late.app.duration=20000000
debug.sf.late.sf.duration=27600000
debug.sf.predict_hwc_composition_strategy=0
debug.sf.treat_170m_as_sRGB=1
debug.sf.use_phase_offsets_as_durations=1
debug.stagefright.c2inputsurface=-1
media.stagefright.thumbnail.prefer_hw_codecs=true
mediatek.wlan.ctia=0
net.bt.name=Android
persist.log.tag.BufferQueueDump=I
persist.log.tag.BufferQueueProducer=I
persist.log.tag.GraphicBuffer=I
persist.log.tag.SurfaceControl=I
persist.sys.fuse.passthrough.enable=true
persist.traced.enable=1
persist.vendor.mdlog.flush_log_ratio=0
persist.vendor.mtk.vilte.enable=1
persist.vendor.pco5.radio.ctrl=0
persist.vendor.pms_removable=1
persist.vendor.vilte_support=1
persist.vendor.vzw_device_type=0
persist.vendor.wfc.sys_wfc_support=1
pm.dexopt.ab-ota=speed-profile
pm.dexopt.bg-dexopt=speed-profile
pm.dexopt.boot-after-mainline-update=verify
pm.dexopt.boot-after-ota=verify
pm.dexopt.cmdline=verify
pm.dexopt.first-boot=verify
pm.dexopt.inactive=verify
pm.dexopt.install=speed-profile
pm.dexopt.install-bulk=speed-profile
pm.dexopt.install-bulk-downgraded=verify
pm.dexopt.install-bulk-secondary=verify
pm.dexopt.install-bulk-secondary-downgraded=verify
pm.dexopt.install-fast=skip
pm.dexopt.post-boot=verify
pm.dexopt.shared=speed
qemu.hw.mainkeys=0
ro.actionable_compatible_property.enabled=true
ro.allow.mock.location=0
ro.audio.flinger_standbytime_ms=1000
ro.audio.ihaladaptervendorextension_enabled=true
ro.audio.silent=0
ro.audio.usb.period_us=16000
ro.base_build=noah
ro.build.version.ci=2
ro.build.version.trunk=15
ro.camera.sound.forced=0
ro.dalvik.vm.native.bridge=0
ro.iorapd.enable=false
ro.kernel.zio=38,108,105,16
ro.llndk.api_level=202404
ro.logd.auditd.events=true
ro.logd.auditd.main=true
ro.mediatek.version.branch=alps-mp-v0.mssi1.tc2sp1
ro.mediatek.version.build.branch=
ro.mediatek.version.release=alps-mp-v0.mp1.tc2sp1-V1.53
ro.mediatek.wlan.p2p=1
ro.mediatek.wlan.wsc=1
ro.mot.product_wave=2023.3
ro.mtk_perf_fast_start_win=1
ro.mtk_perf_response_time=1
ro.mtk_perf_simple_start_win=1
ro.opengles.version=196610
ro.postinstall.fstab.prefix=/system
ro.product.is_production=true
ro.product.property_source_order=odm,vendor,product,system
ro.property_service.async_persist_writes=true
ro.surface_flinger.game_default_frame_rate_override=60
ro.sys.usb.bicr=no
ro.sys.usb.charging.only=yes
ro.sys.usb.mtp.whql.enable=0
ro.sys.usb.storage.type=mtp
ro.vendor.mtk_telephony_add_on_policy=1
ro.vendor.qti.va_aosp.support=1
ro.vendor.system.mtk_dmc_support=1
ro.vendor.system.mtk_mdmi_support=1
ro.wifi.channels=
ro.zygote.preload.enable=0
security.perf_harden=1
sys.ipo.disable=1
sys.ipo.pwrdncap=2
vendor.af.dynamic.sleeptime.enable=true
vendor.af.pausewait.enable=false
vendor.af.threshold.src_and_effect_count=5
vendor.debug.sf.display_dejitter=0
vendor.mtk_thumbnail_optimization=true
vendor.rild.libargs=-d /dev/ttyC0
vendor.rild.libpath=mtk-ril.so
wifi.direct.interface=p2p0
wifi.interface=wlan0
wifi.tethering.interface=ap0

29
system_ext.prop Normal file
View File

@ -0,0 +1,29 @@
audio.deep_buffer.media=true
audio.offload.disable=false
audio.offload.gapless.enabled=false
audio.offload.min.duration.secs=60
audio.offload.video=false
dalvik.vm.systemuicompilerfilter=speed
media.recorder.show_manufacturer_and_model=true
media.settings.xml=/vendor/etc/media_profiles_vendor.xml
persist.mot_bt.max_thread_pool=8
persist.sys.bootupvolume=5
persist.vendor.audio.dualmic.config=endfire
persist.vendor.audio.fluence.speaker=false
persist.vendor.audio.fluence.voicecall=true
persist.vendor.audio.fluence.voicecomm=true
persist.vendor.audio.fluence.voicerec=false
persist.vendor.audio_fx.current=mmi
persist.vendor.camera.expose.aux=1
persist.vendor.em.dy.debug=1
ro.boot.wificountrycode=00
ro.camera.cfa.packagelist=com.motorola.coresettingsext,com.motorola.camera3,com.motorola.actions
ro.cp_system_other_odex=1
ro.mot.platform.build_id=MV-165
ro.mot.security.enable=true
ro.virtual_ab.merge_delay_seconds=300
vendor.audio.parser.ip.buffer.size=262144
vendor.audio.snd_card.open.retries=50
vendor.camera.aux.packagelist=com.motorola.camera3,com.motorola.camera5,com.motorola.motocit
vendor.camera.aux.packagelist2=com.motorola.ccc,com.android.settings,com.motorola.motointelligence
vendor.mm.en.sec.smoothstreaming=false

535
vendor.prop Normal file
View File

@ -0,0 +1,535 @@
aaudio.mmap_exclusive_policy=0
aaudio.mmap_policy=0
camera.disable_zsl_mode=1
dalvik.vm.heapgrowthlimit=256m
dalvik.vm.heapmaxfree=8m
dalvik.vm.heapminfree=512k
dalvik.vm.heapsize=512m
dalvik.vm.heaptargetutilization=0.75
dalvik.vm.mtk-stack-trace-file=/data/anr/mtk_traces.txt
debug.mediatek.appgamepq_compress=1
debug.mediatek.disp_decompress=1
debug.mtk_tflite.target_nnapi=29
debug.renderengine.backend=skiagl
debug.sf.disable_backpressure=1
debug.sf.early.app.duration=20000000
debug.sf.early.sf.duration=27600000
debug.sf.earlyGl.app.duration=20000000
debug.sf.earlyGl.sf.duration=27600000
debug.sf.enable_hwc_vds=0
debug.sf.force_populate_color_modes=true
debug.sf.frame_rate_multiple_threshold=120
debug.sf.high_fps_early_gl_phase_offset_ns=-12666667
debug.sf.high_fps_early_phase_offset_ns=-12666667
debug.sf.high_fps_late_app_phase_offset_ns=-8000000
debug.sf.high_fps_late_sf_phase_offset_ns=-12666667
debug.sf.hwc.min.duration=23000000
debug.sf.latch_unsignaled=1
debug.sf.late.app.duration=20000000
debug.sf.late.sf.duration=27600000
debug.sf.region_sampling_period_ns=1000000000
debug.sf.scroll_boost_refreshrate=120
debug.sf.touch_boost_refreshrate=90
debug.sf.use_phase_offsets_as_durations=0
drm.service.enabled=true
external_storage.casefold.enabled=1
external_storage.projid.enabled=1
external_storage.sdcardfs.enabled=0
graphics.gpu.profiler.support=true
init.userspace_reboot.is_supported=true
keyguard.no_require_sim=true
media.c2.dmabuf.padding=3072
ota.mot_ota_tuning.valid=-1
persist.adb.nonblocking_ffs=0
persist.bluetooth.a2dp_offload.cap=sbc-aac
persist.bluetooth.a2dp_offload.disabled=true
persist.log.tag.APM-KpiMonitor=I
persist.log.tag.APM-ServiceJ=I
persist.log.tag.APM-SessionJ=I
persist.log.tag.APM-SessionN=I
persist.log.tag.APM-Subscriber=I
persist.log.tag.AT=I
persist.log.tag.AdnRecord=I
persist.log.tag.AdnRecordCache=I
persist.log.tag.AdnRecordLoader=I
persist.log.tag.AirplaneHandler=I
persist.log.tag.C2K_RIL-DATA=I
persist.log.tag.CapaSwitch=I
persist.log.tag.CarrierExpressServiceImpl=I
persist.log.tag.CarrierExpressServiceImplExt=I
persist.log.tag.CountryDetector=I
persist.log.tag.DMC-ApmService=I
persist.log.tag.DMC-Core=I
persist.log.tag.DMC-DmcService=I
persist.log.tag.DMC-EventsSubscriber=I
persist.log.tag.DMC-ReqQManager=I
persist.log.tag.DMC-SessionManager=I
persist.log.tag.DMC-TranslatorLoader=I
persist.log.tag.DMC-TranslatorUtils=I
persist.log.tag.DSSelector=I
persist.log.tag.DSSelectorOP01=I
persist.log.tag.DSSelectorOP02=I
persist.log.tag.DSSelectorOP09=I
persist.log.tag.DSSelectorOP18=I
persist.log.tag.DSSelectorOm=I
persist.log.tag.DSSelectorUtil=I
persist.log.tag.DataDispatcher=I
persist.log.tag.DcFcMgr=I
persist.log.tag.ExternalSimMgr=I
persist.log.tag.GsmCallTkrHlpr=I
persist.log.tag.GsmCdmaConn=I
persist.log.tag.GsmCdmaPhone=I
persist.log.tag.IMSRILRequest=I
persist.log.tag.IMS_RILA=I
persist.log.tag.IccCardProxy=I
persist.log.tag.IccPhoneBookIM=I
persist.log.tag.IccProvider=I
persist.log.tag.ImsApp=I
persist.log.tag.ImsBaseCommands=I
persist.log.tag.ImsCall=I
persist.log.tag.ImsCallProfile=I
persist.log.tag.ImsCallSession=I
persist.log.tag.ImsEcbm=I
persist.log.tag.ImsEcbmProxy=I
persist.log.tag.ImsManager=I
persist.log.tag.ImsPhone=I
persist.log.tag.ImsPhoneBase=I
persist.log.tag.ImsPhoneCall=I
persist.log.tag.ImsService=I
persist.log.tag.ImsVTProvider=I
persist.log.tag.IsimFileHandler=I
persist.log.tag.IsimRecords=I
persist.log.tag.LCM-Subscriber=I
persist.log.tag.MDM-Subscriber=I
persist.log.tag.MDMI-CommandProcessor=I
persist.log.tag.MDMI-CoreSession=I
persist.log.tag.MDMI-MdmiRedirector=I
persist.log.tag.MDMI-MdmiRedirectorCtrl=I
persist.log.tag.MDMI-NetworkSocketConnection=I
persist.log.tag.MDMI-Permission=I
persist.log.tag.MDMI-Provider=I
persist.log.tag.MDMI-SocketConnection=I
persist.log.tag.MDMI-SocketListener=I
persist.log.tag.MDMI-TranslatorManager=I
persist.log.tag.MTKSST=D
persist.log.tag.MtkAdnRecord=I
persist.log.tag.MtkCsimFH=I
persist.log.tag.MtkDc=I
persist.log.tag.MtkDcc=I
persist.log.tag.MtkDct=I
persist.log.tag.MtkEmbmsAdaptor=I
persist.log.tag.MtkFactory=I
persist.log.tag.MtkGsmCdmaConn=I
persist.log.tag.MtkIccCardProxy=I
persist.log.tag.MtkIccPHBIM=I
persist.log.tag.MtkIccProvider=I
persist.log.tag.MtkImsManager=I
persist.log.tag.MtkImsService=I
persist.log.tag.MtkIsimFH=I
persist.log.tag.MtkPhoneNotifr=I
persist.log.tag.MtkPhoneNumberUtils=I
persist.log.tag.MtkPhoneSwitcher=D
persist.log.tag.MtkRecordLoader=I
persist.log.tag.MtkRetryManager=I
persist.log.tag.MtkRuimFH=I
persist.log.tag.MtkSIMFH=I
persist.log.tag.MtkSIMRecords=I
persist.log.tag.MtkSmsCbHeader=I
persist.log.tag.MtkSmsManager=I
persist.log.tag.MtkSmsMessage=I
persist.log.tag.MtkSpnOverride=I
persist.log.tag.MtkSubCtrl=I
persist.log.tag.MtkUiccCard=I
persist.log.tag.MtkUiccCardApp=I
persist.log.tag.MtkUiccCtrl=I
persist.log.tag.MtkUsimFH=I
persist.log.tag.MwiRIL=I
persist.log.tag.NetAgentService=I
persist.log.tag.NetAgent_IO=I
persist.log.tag.NetLnkEventHdlr=I
persist.log.tag.NetworkPolicy=I
persist.log.tag.NetworkStats=I
persist.log.tag.OperatorUtils=I
persist.log.tag.PKM-Lib=I
persist.log.tag.PKM-MDM=I
persist.log.tag.PKM-Monitor=I
persist.log.tag.PKM-SA=I
persist.log.tag.PKM-Service=I
persist.log.tag.PQ_DS=I
persist.log.tag.Phone=I
persist.log.tag.PhoneConfigurationSettings=I
persist.log.tag.PhoneFactory=I
persist.log.tag.PowerHalAddressUitls=I
persist.log.tag.PowerHalMgrImpl=I
persist.log.tag.PowerHalMgrServiceImpl=I
persist.log.tag.PowerHalWifiMonitor=I
persist.log.tag.ProxyController=I
persist.log.tag.RFX=I
persist.log.tag.RIL=I
persist.log.tag.RIL-Fusion=I
persist.log.tag.RIL-Netlink=I
persist.log.tag.RIL-Parcel=I
persist.log.tag.RIL-SocListen=I
persist.log.tag.RIL-Socket=I
persist.log.tag.RILC=I
persist.log.tag.RILC-OP=I
persist.log.tag.RILD=I
persist.log.tag.RILMD2-SS=I
persist.log.tag.RILMUXD=I
persist.log.tag.RIL_UIM_SOCKET=I
persist.log.tag.RTC_DAC=I
persist.log.tag.RadioManager=I
persist.log.tag.RfxAction=I
persist.log.tag.RfxChannelMgr=I
persist.log.tag.RfxCloneMgr=I
persist.log.tag.RfxContFactory=I
persist.log.tag.RfxController=I
persist.log.tag.RfxDebugInfo=I
persist.log.tag.RfxDisThread=I
persist.log.tag.RfxFragEnc=I
persist.log.tag.RfxHandlerMgr=I
persist.log.tag.RfxIdToMsgId=I
persist.log.tag.RfxIdToStr=I
persist.log.tag.RfxMainThread=I
persist.log.tag.RfxMclDisThread=I
persist.log.tag.RfxMclMessenger=I
persist.log.tag.RfxMclStatusMgr=I
persist.log.tag.RfxMessage=I
persist.log.tag.RfxObject=I
persist.log.tag.RfxOpUtils=I
persist.log.tag.RfxRilAdapter=I
persist.log.tag.RfxRilUtils=I
persist.log.tag.RfxRoot=I
persist.log.tag.RfxStatusMgr=I
persist.log.tag.RfxTimer=I
persist.log.tag.RilClient=I
persist.log.tag.RilOemClient=I
persist.log.tag.RilOpProxy=I
persist.log.tag.RmcCapa=I
persist.log.tag.RmcCdmaSimRequest=I
persist.log.tag.RmcCdmaSimUrc=I
persist.log.tag.RmcCommSimOpReq=I
persist.log.tag.RmcCommSimReq=I
persist.log.tag.RmcCommSimUrc=I
persist.log.tag.RmcDcCommon=I
persist.log.tag.RmcDcPdnManager=I
persist.log.tag.RmcDcReqHandler=I
persist.log.tag.RmcDcUtility=I
persist.log.tag.RmcEccNumberUrcHandler=D
persist.log.tag.RmcEmbmsReq=I
persist.log.tag.RmcEmbmsUrc=I
persist.log.tag.RmcGsmSimRequest=I
persist.log.tag.RmcGsmSimUrc=I
persist.log.tag.RmcImsCtlReqHdl=I
persist.log.tag.RmcImsCtlUrcHdl=I
persist.log.tag.RmcNwHdlr=D
persist.log.tag.RmcNwRTReqHdlr=D
persist.log.tag.RmcNwReqHdlr=D
persist.log.tag.RmcOemHandler=I
persist.log.tag.RmcOpRadioReq=I
persist.log.tag.RmcPhbReq=I
persist.log.tag.RmcPhbUrc=I
persist.log.tag.RmcRadioReq=I
persist.log.tag.RmcRatSwHdlr=D
persist.log.tag.RmcWp=I
persist.log.tag.RtcCapa=I
persist.log.tag.RtcCommSimCtrl=I
persist.log.tag.RtcDC=I
persist.log.tag.RtcEccNumberController=D
persist.log.tag.RtcEmbmsAt=I
persist.log.tag.RtcEmbmsUtil=I
persist.log.tag.RtcIms=I
persist.log.tag.RtcImsConference=I
persist.log.tag.RtcImsConfigController=I
persist.log.tag.RtcImsDialog=I
persist.log.tag.RtcModeCont=I
persist.log.tag.RtcNwCtrl=I
persist.log.tag.RtcPhb=I
persist.log.tag.RtcRadioCont=I
persist.log.tag.RtcRatSwCtrl=D
persist.log.tag.RtcWp=I
persist.log.tag.SIMRecords=I
persist.log.tag.SimSwitchOP01=I
persist.log.tag.SimSwitchOP02=I
persist.log.tag.SimSwitchOP18=I
persist.log.tag.SlotQueueEntry=I
persist.log.tag.SpnOverride=I
persist.log.tag.UiccCard=I
persist.log.tag.UiccController=I
persist.log.tag.UxUtility=I
persist.log.tag.VT=I
persist.log.tag.VsimAdaptor=I
persist.log.tag.WORLDMODE=I
persist.log.tag.WfoApp=I
persist.log.tag.WpfaCcciDataHeaderEncoder=I
persist.log.tag.WpfaCcciReader=I
persist.log.tag.WpfaCcciSender=I
persist.log.tag.WpfaControlMsgHandler=I
persist.log.tag.WpfaDriver=I
persist.log.tag.WpfaDriverAccept=I
persist.log.tag.WpfaDriverAdapter=I
persist.log.tag.WpfaDriverDeReg=I
persist.log.tag.WpfaDriverMessage=I
persist.log.tag.WpfaDriverRegFilter=I
persist.log.tag.WpfaDriverULIpPkt=I
persist.log.tag.WpfaDriverUtilis=I
persist.log.tag.WpfaDriverVersion=I
persist.log.tag.WpfaFilterRuleReqHandler=I
persist.log.tag.WpfaParsing=I
persist.log.tag.WpfaRingBuffer=I
persist.log.tag.WpfaRuleContainer=I
persist.log.tag.WpfaRuleRegister=I
persist.log.tag.WpfaShmAccessController=I
persist.log.tag.WpfaShmReadMsgHandler=I
persist.log.tag.WpfaShmSynchronizer=I
persist.log.tag.WpfaShmWriteMsgHandler=I
persist.log.tag.libPowerHal=I
persist.log.tag.mtkpower@impl=I
persist.log.tag.mtkpower_client=I
persist.log.tag.wpfa_iptable_android=I
persist.radio.multisim.config=dsds
persist.rcs.supported=1
persist.sys.ams_ext_enabled=true
persist.sys.dalvik.vm.lib.2=libart.so
persist.sys.sf.native_mode=1
persist.vendor.audio_fx.current=dolby
persist.vendor.camera.p1.streamBufCnt.imgo=10
persist.vendor.camera.p1.streamBufCnt.lcso=10
persist.vendor.camera.p1.streamBufCnt.rrzo=10
persist.vendor.camera.physical.num=3
persist.vendor.camera3.pipeline.bufnum.base.imgo=4
persist.vendor.camera3.pipeline.bufnum.base.lcso=4
persist.vendor.camera3.pipeline.bufnum.base.rrzo=4
persist.vendor.camera3.pipeline.bufnum.base.rsso=5
persist.vendor.camera3.pipeline.bufnum.min.high_ram.fdyuv=6
persist.vendor.camera3.pipeline.bufnum.min.high_ram.imgo=7
persist.vendor.camera3.pipeline.bufnum.min.high_ram.lcso=7
persist.vendor.camera3.pipeline.bufnum.min.high_ram.rrzo=7
persist.vendor.camera3.pipeline.bufnum.min.high_ram.rsso=7
persist.vendor.camera3.pipeline.bufnum.min.low_ram.fdyuv=6
persist.vendor.camera3.pipeline.bufnum.min.low_ram.imgo=6
persist.vendor.camera3.pipeline.bufnum.min.low_ram.lcso=6
persist.vendor.camera3.pipeline.bufnum.min.low_ram.rrzo=6
persist.vendor.camera3.pipeline.bufnum.min.low_ram.rsso=6
persist.vendor.connsys.chipid=-1
persist.vendor.connsys.dynamic.dump=0
persist.vendor.connsys.fm_chipid=mt6631_6635
persist.vendor.connsys.patch.version=-1
persist.vendor.factory.GB2312=yes
persist.vendor.ims_support=1
persist.vendor.log.tel_log_ctrl=1
persist.vendor.lte.pco_supported=true
persist.vendor.md_c2k_cap_dep_check=0
persist.vendor.mims_support=1
persist.vendor.mtk.volte.enable=1
persist.vendor.mtk_ct_volte_support=3
persist.vendor.mtk_dynamic_ims_switch=1
persist.vendor.mtk_rcs_single_reg_support=0
persist.vendor.mtk_sim_switch_policy=2
persist.vendor.mtk_wfc_support=1
persist.vendor.nfc.config_secfile_name=libnfc-sec-nci.conf
persist.vendor.nfc.polling_timeout=1440
persist.vendor.nfc.reset_after_sim_plug_in=true
persist.vendor.radio.fd.counter=150
persist.vendor.radio.fd.off.counter=50
persist.vendor.radio.fd.off.r8.counter=50
persist.vendor.radio.fd.r8.counter=150
persist.vendor.radio.msimmode=dsds
persist.vendor.radio.mtk_dsbp_support=3
persist.vendor.radio.mtk_ps2_rat=N/L/W/G
persist.vendor.radio.mtk_ps3_rat=G
persist.vendor.radio.smart.data.switch=1
persist.vendor.vilte_support=1
persist.vendor.viwifi_support=1
persist.vendor.volte_support=1
persist.vendor.vt.RTPInfo=1
persist.vendor.vt.supported=1
ro.bluetooth.a2dp_offload.supported=false
ro.config.vc_call_vol_steps=8
ro.control_privapp_permissions=enforce
ro.cp_system_other_odex=1
ro.crypto.volume.filenames_mode=aes-256-cts
ro.frp.pst=/dev/block/by-name/frp
ro.hardware.egl=meow
ro.hardware.gatekeeper=trustonic
ro.hardware.gralloc=common
ro.hardware.hwcomposer=mtk_common
ro.hardware.kmsetkey=trustonic
ro.hardware.soc.manufacturer=mtk
ro.hardware.vulkan=mtk
ro.incremental.enable=yes
ro.mot.build.guid=78d7cd97afeeafc
ro.mtk_key_manager_support=1
ro.netflix.bsp_rev=MTK6855-35905-1
ro.oem_unlock_supported=1
ro.opengles.version=196610
ro.surface_flinger.force_hwc_copy_for_virtual_displays=true
ro.surface_flinger.has_HDR_display=true
ro.surface_flinger.has_wide_color_display=true
ro.surface_flinger.max_frame_buffer_acquired_buffers=4
ro.surface_flinger.primary_display_orientation=ORIENTATION_0
ro.surface_flinger.protected_contents=true
ro.surface_flinger.set_idle_timer_ms=500
ro.surface_flinger.set_touch_timer_ms=1000
ro.surface_flinger.use_color_management=true
ro.surface_flinger.use_smart_90_for_video=true
ro.surface_flinger.vsync_event_phase_offset_ns=8400000
ro.surface_flinger.vsync_sf_event_phase_offset_ns=-10933333
ro.telephony.iwlan_operation_mode=AP-assisted
ro.vendor.ap_info_monitor=0
ro.vendor.audio.crystal_talk.supported=true
ro.vendor.audio.moto_sst_supported=true
ro.vendor.bt.platform=connac1x
ro.vendor.camera.directfdyuv.support=1
ro.vendor.camera.isp.support.colorspace=0
ro.vendor.camera3.zsl.default=220
ro.vendor.composer_version=2.1
ro.vendor.connsys.dedicated.log=1
ro.vendor.connsys.dedicated.log.port=bt,wifi,gps,mcu
ro.vendor.dolby.dax.version=DAX3_3.11.0.10_r2
ro.vendor.fm.platform=mt6631_6635
ro.vendor.fusion.algorithm.in.sensorhub=yes
ro.vendor.gps.chrdev=gps_drv_stp
ro.vendor.hw.ecompass=true
ro.vendor.hw.fps=true
ro.vendor.init.sensor.rc=init.sensor_2_0.rc
ro.vendor.jpeg_decode_sw_opt=1
ro.vendor.mag.calibration.in.sensorhub=yes
ro.vendor.md_auto_setup_ims=1
ro.vendor.md_prop_ver=1
ro.vendor.mediatek.platform=MT6855
ro.vendor.mediatek.version.branch=alps-mp-s0.mp1.tc2sp2
ro.vendor.mediatek.version.release=alps-mp-s0.mp1.tc2sp2-V3
ro.vendor.mgk_name=mgk_64_entry_level_k510
ro.vendor.mgvi_name=mgvi_64_ww_armv82
ro.vendor.mml.mtk_mml_support=0
ro.vendor.mot.base_buildid=V1TD35H.83-20-5/c7172e-ba49e
ro.vendor.mtk.bt_sap_enable=true
ro.vendor.mtk.c2.vdec.fmt.support.level=2
ro.vendor.mtk.sensor.support=yes
ro.vendor.mtk_agps_app=1
ro.vendor.mtk_audio_alac_support=1
ro.vendor.mtk_audio_ape_support=1
ro.vendor.mtk_audio_tuning_tool_ver=V1
ro.vendor.mtk_blulight_def_support=1
ro.vendor.mtk_c2k_lte_mode=0
ro.vendor.mtk_cam_security_support=0
ro.vendor.mtk_camera_app_version=3
ro.vendor.mtk_config_max_dram_size=
ro.vendor.mtk_cuva_hdr_support=1
ro.vendor.mtk_dmc_support=1
ro.vendor.mtk_eccci_c2k=1
ro.vendor.mtk_emmc_support=1
ro.vendor.mtk_external_sim_only_slots=0
ro.vendor.mtk_f2fs_enable=1
ro.vendor.mtk_fast_charging_support=1
ro.vendor.mtk_fd_support=1
ro.vendor.mtk_femto_cell_support=1
ro.vendor.mtk_gps_support=1
ro.vendor.mtk_hdr_video_support=1
ro.vendor.mtk_hifiaudio_support=1
ro.vendor.mtk_log_hide_gps=1
ro.vendor.mtk_lte_support=1
ro.vendor.mtk_md_world_mode_support=1
ro.vendor.mtk_mdmi_support=1
ro.vendor.mtk_mvpu_security_support=0
ro.vendor.mtk_nn.option=A,B,C,D,E,F,G,Z
ro.vendor.mtk_nn_baseline_support=1
ro.vendor.mtk_nn_quant_preferred=1
ro.vendor.mtk_ovl_bringup=0
ro.vendor.mtk_pq_color_mode=1
ro.vendor.mtk_pq_support=2
ro.vendor.mtk_prefer_64bit_proc=0
ro.vendor.mtk_protocol1_rat_config=N/Lf/Lt/W/G
ro.vendor.mtk_ps1_rat=N/Lf/Lt/W/G
ro.vendor.mtk_ril_mode=c6m_1rild
ro.vendor.mtk_rild_read_imsi=1
ro.vendor.mtk_sec_video_path_support=1
ro.vendor.mtk_sim_card_onoff=3
ro.vendor.mtk_single_bin_modem_support=1
ro.vendor.mtk_slow_motion_support=1
ro.vendor.mtk_tee_gp_support=1
ro.vendor.mtk_thermal_2_0=1
ro.vendor.mtk_trustonic_tee_support=1
ro.vendor.mtk_uicc_clf=1
ro.vendor.mtk_video_hevc_enc_support=1
ro.vendor.mtk_wappush_support=1
ro.vendor.mtk_widevine_drm_l1_support=1
ro.vendor.mtk_world_phone_policy=0
ro.vendor.num_md_protocol=2
ro.vendor.pq.mtk_aal_support=0
ro.vendor.pq.mtk_ai_scence_pq_support=0
ro.vendor.pq.mtk_ai_sdr_to_hdr_support=0
ro.vendor.pq.mtk_backlight_smooth_support=0
ro.vendor.pq.mtk_blulight_def_support=0
ro.vendor.pq.mtk_caltm_support=1
ro.vendor.pq.mtk_clearzoom_support=1
ro.vendor.pq.mtk_dc_support=0
ro.vendor.pq.mtk_disp_c3d_support=0
ro.vendor.pq.mtk_disp_ccorr_support=1
ro.vendor.pq.mtk_disp_color_support=1
ro.vendor.pq.mtk_disp_game_pq_support=0
ro.vendor.pq.mtk_disp_gamma_support=0
ro.vendor.pq.mtk_disp_tdshp_support=1
ro.vendor.pq.mtk_dre30_support=0
ro.vendor.pq.mtk_ds_support=0
ro.vendor.pq.mtk_hdr10_plus_recording_support=0
ro.vendor.pq.mtk_hfg_support=1
ro.vendor.pq.mtk_mdp_ccorr_support=0
ro.vendor.pq.mtk_pq_interface_support=0
ro.vendor.pq.mtk_pq_video_whitelist_support=0
ro.vendor.pq.mtk_scltm_support=0
ro.vendor.pq.mtk_ultra_dimming_support=0
ro.vendor.pq.mtk_ultra_resolution_support=0
ro.vendor.pq.mtk_video_transition=0
ro.vendor.pref_scale_enable_cfg=1
ro.vendor.rc=/vendor/etc/init/hw/
ro.vendor.ril.set_sbp_place=2
ro.vendor.sensors.mot_ltv=true
ro.vendor.sensors.prox_for_call=true
ro.vendor.sim_me_lock_mode=3
ro.vendor.smvr.p2batch.hd=4
ro.vendor.vt_hevc_support=1
ro.vendor.wfd.dummy.enable=0
ro.vendor.wfd.iframesize.level=0
ro.vendor.wifi.sap.concurrent.iface=ap1
ro.vendor.wifi.sap.interface=ap0
ro.vendor.wlan.chrdev=wmt_chrdev_wifi
ro.vendor.wlan.gen=gen4m_6855
ro.vendor.wlan.standalone.log=y
ro.virtual_ab.compression.enabled=true
ro.virtual_ab.userspace.snapshots.enabled=true
telephony.active_modems.max_count=2
vendor.audio.powerhal.power.dl=true
vendor.audio.powerhal.power.ul=true
vendor.bluetooth.ldac.abr=true
vendor.camera.mdp.cz.enable=1
vendor.camera.mdp.dre.enable=1
vendor.camera.mot.jpegmaxscaleratio=2.5
vendor.connsys.driver.ready=no
vendor.debug.sf.cpupolicy.base_min_bl=330
vendor.debug.sf.cpupolicy.hw_comp_suspend=1
vendor.debug.sf.cpupolicy.hw_hfr_suspend=1
vendor.debug.sf.cpupolicy.lowbound_uclamp_min=172
vendor.debug.sf.cpupolicy.max_correct_offset=150
vendor.debug.sf.cpupolicy.min_120=172
vendor.debug.sf.cpupolicy.min_30_mml=172
vendor.debug.sf.cpupolicy.min_60=137
vendor.debug.sf.cpupolicy.min_60_mml=172
vendor.debug.sf.cpupolicy.min_90=172
vendor.debug.sf.cpupolicy.min_boost=172
vendor.debug.sf.cpupolicy.power_down_120=300000
vendor.debug.sf.cpupolicy.power_up_120=-300000
vendor.debug.sf.cpupolicy.re_hfr=0
vendor.debug.sf.cpupolicy.rt_bl_min=312
vendor.debug.sf.cpupolicy.sf_cpu_thres=305
vendor.debug.sf.cpupolicy.upbound_uclamp_max_ll=280
vendor.debug.sf.cpupolicy.upbound_uclamp_min=400
vendor.debug.sf.cpupolicy.upbound_uclamp_ret_sys=218
vendor.debug.sf.cpupolicy.xgf_min=25
vendor.hw.sf.IdleLazyResetThresholdT=500
vendor.hw.sf.hwc.min.duration=0
vendor.media.heif.highThreshold=20
vendor.mtk.camera.app.fd.video=1
vendor.mtk.vdec.waitkeyframeforplay=9
vendor.usb.use_ffs_mtp=1

1
vendor_dlkm.prop Normal file
View File

@ -0,0 +1 @@