Pārlūkot izejas kodu

Merge "revert everything but fix avb" into android-11

SmallPP420 4 gadi atpakaļ
vecāks
revīzija
0c1674e1d9
47 mainītis faili ar 403 papildinājumiem un 1106 dzēšanām
  1. 1 1
      Android.mk
  2. 17 1
      AndroidProducts.mk
  3. 83 102
      BoardConfig.mk
  4. 2 36
      device.mk
  5. 0 0
      prebuilt/Image.gz
  6. 80 0
      recovery/root/init.recovery.mt6761.rc
  7. 64 0
      recovery/root/init.recovery.trustonic.rc
  8. 54 807
      recovery/root/init.recovery.usb.rc
  9. BIN
      recovery/root/system/bin/hw/android.hardware.gatekeeper@1.0-service
  10. 0 21
      recovery/root/system/etc/fstab.postinstall
  11. 6 0
      recovery/root/system/etc/recovery.fstab
  12. 1 1
      recovery/root/system/etc/twrp.flags
  13. 0 95
      recovery/root/system/etc/vintf/manifest.xml
  14. BIN
      recovery/root/system/lib64/hw/android.hardware.boot@1.0-impl-1.1-mtkimpl.so
  15. BIN
      recovery/root/system/lib64/libhwbinder.so
  16. 69 0
      recovery/root/ueventd.rc
  17. BIN
      recovery/root/vendor/app/mcRegistry/020f0000000000000000000000000000.drbin
  18. BIN
      recovery/root/vendor/app/mcRegistry/020f0000000000000000000000000000.tlbin
  19. BIN
      recovery/root/vendor/app/mcRegistry/030b0000000000000000000000000000.drbin
  20. BIN
      recovery/root/vendor/app/mcRegistry/030b0000000000000000000000000000.tlbin
  21. BIN
      recovery/root/vendor/app/mcRegistry/05120000000000000000000000000000.drbin
  22. BIN
      recovery/root/vendor/app/mcRegistry/05120000000000000000000000000000.tlbin
  23. BIN
      recovery/root/vendor/app/mcRegistry/06090000000000000000000000000000.drbin
  24. BIN
      recovery/root/vendor/app/mcRegistry/06090000000000000000000000000000.tlbin
  25. BIN
      recovery/root/vendor/app/mcRegistry/07010000000000000000000000000000.tlbin
  26. BIN
      recovery/root/vendor/app/mcRegistry/0706000000000000000000000000004d.tlbin
  27. BIN
      recovery/root/vendor/app/mcRegistry/07061000000000000000000000000000.tlbin
  28. BIN
      recovery/root/vendor/app/mcRegistry/07150000000000000000000000000000.drbin
  29. BIN
      recovery/root/vendor/app/mcRegistry/07150000000000000000000000000000.tlbin
  30. BIN
      recovery/root/vendor/app/mcRegistry/07170000000000000000000000000000.drbin
  31. BIN
      recovery/root/vendor/app/mcRegistry/07170000000000000000000000000000.tlbin
  32. BIN
      recovery/root/vendor/app/mcRegistry/08030000000000000000000000000000.tabin
  33. BIN
      recovery/root/vendor/app/mcRegistry/08110000000000000000000000000000.tabin
  34. BIN
      recovery/root/vendor/app/mcRegistry/09190000000000000000000000000000.tlbin
  35. BIN
      recovery/root/vendor/bin/hw/android.hardware.keymaster@3.0-service.trustonic
  36. BIN
      recovery/root/vendor/lib64/hw/android.hardware.gatekeeper@1.0-impl.so
  37. 1 0
      recovery/root/vendor/lib64/hw/gatekeeper.default.so
  38. 1 0
      recovery/root/vendor/lib64/hw/gatekeeper.mt6761.so
  39. 1 0
      recovery/root/vendor/lib64/hw/gatekeeper.wasp.so
  40. 1 0
      recovery/root/vendor/lib64/hw/keystore.mt6761.so
  41. 1 0
      recovery/root/vendor/lib64/hw/keystore.wasp.so
  42. BIN
      recovery/root/vendor/lib64/hw/libMcGatekeeper.so
  43. BIN
      recovery/root/vendor/lib64/hw/libSoftGatekeeper.so
  44. BIN
      recovery/root/vendor/mcDriverDaemon
  45. 0 30
      system.prop
  46. 1 0
      twrp.dependencies
  47. 20 12
      twrp_WSP_sprout.mk

+ 1 - 1
Android.mk

@@ -1,5 +1,5 @@
 LOCAL_PATH := $(call my-dir)
 
-ifeq ($(TARGET_DEVICE), WSP_sprout)
+ifeq ($(TARGET_DEVICE),WSP_sprout)
 include $(call all-subdir-makefiles,$(LOCAL_PATH))
 endif

+ 17 - 1
AndroidProducts.mk

@@ -1,4 +1,20 @@
+#
+# Copyright (C) 2021 TeamWin Recovery Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
 PRODUCT_MAKEFILES := \
-     $(LOCAL_DIR)/twrp_WSP_sprout.mk
+    $(LOCAL_DIR)/twrp_WSP_sprout.mk
 
 COMMON_LUNCH_CHOICES := twrp_WSP_sprout-eng

+ 83 - 102
BoardConfig.mk

@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2021 The TWRP Open Source Project
+# Copyright (C) 2021 TeamWin Recovery Project
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -13,8 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
+# Allow building with minimal manifest
+ALLOW_MISSING_DEPENDENCIES := true
 
-# Device path
 DEVICE_PATH := device/nokia/WSP_sprout
 
 # Architecture
@@ -22,150 +23,130 @@ 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-a53
+TARGET_CPU_VARIANT := cortex-a53
 
 TARGET_2ND_ARCH := arm
-TARGET_2ND_ARCH_VARIANT := armv7-a-neon
+TARGET_2ND_ARCH_VARIANT := armv8-a
 TARGET_2ND_CPU_ABI := armeabi-v7a
 TARGET_2ND_CPU_ABI2 := armeabi
-TARGET_2ND_CPU_VARIANT := generic
-TARGET_2ND_CPU_VARIANT_RUNTIME := cortex-a53
+TARGET_2ND_CPU_VARIANT := cortex-a53
 
-# Bootloader
-TARGET_NO_BOOTLOADER := true
-TARGET_USES_UEFI := true
+TARGET_BOARD_SUFFIX := _64
+TARGET_USES_64_BIT_BINDER := true
+TARGET_IS_64_BIT := true
+TARGET_SUPPORTS_64_BIT_APPS := true
 
 # Platform
 TARGET_BOARD_PLATFORM := mt6761
-
-# A/B
-AB_OTA_UPDATER := true
-TW_INCLUDE_REPACKTOOLS := true
-
-AB_OTA_PARTITIONS += \
-    boot \
-    custom \
-    dtbo \
-    elabel \
-    lk \
-    md1img \
-    preloader \
-    scp \
-    spmfw \
-    sspm \
-    system \
-    tee \
-    vbmeta \
-    vendor 
+BOARD_USES_MTK_HARDWARE := true
 
 # Kernel
 BOARD_KERNEL_CMDLINE := bootopt=64S3,32N2,64N2
-BOARD_KERNEL_CMDLINE += androidboot.force_normal_boot=1     #maybe fix for issue of recovery bootloop
+TARGET_PREBUILT_KERNEL := $(DEVICE_PATH)/prebuilt/Image.gz
+TARGET_PREBUILT_DTB := $(DEVICE_PATH)/prebuilt/dtb
+BOARD_BOOT_HEADER_VERSION := 2
 BOARD_KERNEL_BASE := 0x40078000
+BOARD_KERNEL_OFFSET := 0x00008000
 BOARD_KERNEL_PAGESIZE := 2048
-BOARD_RAMDISK_OFFSET := 0x11a88000
 BOARD_KERNEL_TAGS_OFFSET := 0x07808000
-BOARD_BOOTIMG_HEADER_VERSION := 2
-
+BOARD_RAMDISK_OFFSET := 0x11a88000
+BOARD_KERNEL_SECOND_OFFSET := 0xbff88000
+BOARD_DTB_OFFSET := 0x07808000
+BOARD_INCLUDE_DTB_IN_BOOTIMG := true
 BOARD_KERNEL_IMAGE_NAME := Image.gz
-TARGET_PREBUILT_KERNEL := $(DEVICE_PATH)/prebuilt/kernel.gz
-TARGET_PREBUILT_DTB := $(DEVICE_PATH)/prebuilt/dtb.img
-
+TARGET_KERNEL_ARCH := arm64
+TARGET_KERNEL_HEADER_ARCH := arm64
+BOARD_MKBOOTIMG_ARGS := --base $(BOARD_KERNEL_BASE)
+BOARD_MKBOOTIMG_ARGS += --pagesize $(BOARD_KERNEL_PAGESIZE)
 BOARD_MKBOOTIMG_ARGS += --ramdisk_offset $(BOARD_RAMDISK_OFFSET)
 BOARD_MKBOOTIMG_ARGS += --tags_offset $(BOARD_KERNEL_TAGS_OFFSET)
-BOARD_MKBOOTIMG_ARGS += --dtb $(TARGET_PREBUILT_DTB)
-BOARD_MKBOOTIMG_ARGS += --header_version $(BOARD_BOOTIMG_HEADER_VERSION)
+BOARD_MKBOOTIMG_ARGS += --kernel_offset $(BOARD_KERNEL_OFFSET)
+BOARD_MKBOOTIMG_ARGS += --second_offset $(BOARD_KERNEL_SECOND_OFFSET)
+BOARD_MKBOOTIMG_ARGS += --dtb_offset $(BOARD_DTB_OFFSET)
+BOARD_MKBOOTIMG_ARGS += --header_version $(BOARD_BOOT_HEADER_VERSION)
+
+# AVB
+BOARD_AVB_ENABLE := true
+BOARD_AVB_VBMETA_SYSTEM := system
+BOARD_AVB_VBMETA_SYSTEM_KEY_PATH := external/avb/test/data/testkey_rsa2048.pem
+BOARD_AVB_VBMETA_SYSTEM_ALGORITHM := SHA256_RSA2048
+BOARD_AVB_VBMETA_SYSTEM_ROLLBACK_INDEX := $(PLATFORM_SECURITY_PATCH_TIMESTAMP)
+BOARD_AVB_VBMETA_SYSTEM_ROLLBACK_INDEX_LOCATION := 1
+BOARD_AVB_VBMETA_VENDOR := vendor
+BOARD_AVB_VBMETA_VENDOR_KEY_PATH := external/avb/test/data/testkey_rsa2048.pem
+BOARD_AVB_VBMETA_VENDOR_ALGORITHM := SHA256_RSA2048
+BOARD_AVB_VBMETA_VENDOR_ROLLBACK_INDEX := $(PLATFORM_SECURITY_PATCH_TIMESTAMP)
+BOARD_AVB_VBMETA_VENDOR_ROLLBACK_INDEX_LOCATION := 2
+BOARD_AVB_RECOVERY_KEY_PATH := external/avb/test/data/testkey_rsa2048.pem
+BOARD_AVB_RECOVERY_ALGORITHM := SHA256_RSA2048
+BOARD_AVB_RECOVERY_ROLLBACK_INDEX := $(PLATFORM_SECURITY_PATCH_TIMESTAMP)
+BOARD_AVB_RECOVERY_ROLLBACK_INDEX_LOCATION := 3
 
 # Assert
-TARGET_OTA_ASSERT_DEVICE := WSP_sprout,Wasp
+TARGET_OTA_ASSERT_DEVICE := wasp,Wasp,WSP_sprout
 
-# Partition
+# Partitions
 BOARD_FLASH_BLOCK_SIZE := 131072
-#BOARD_CACHEIMAGE_PARTITION_SIZE := 136314880
-#BOARD_BOOTIMAGE_PARTITION_SIZE := 67108864
 BOARD_BOOTIMAGE_PARTITION_SIZE := 33554432
+BOARD_RECOVERYIMAGE_PARTITION_SIZE := 33554432
 
-# File system type
+# File systems
 BOARD_HAS_LARGE_FILESYSTEM := true
-BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE := ext4
-#BOARD_CACHEIMAGE_FILE_SYSTEM_TYPE := ext4
+BOARD_SYSTEMIMAGE_PARTITION_TYPE := ext4
 BOARD_USERDATAIMAGE_FILE_SYSTEM_TYPE := ext4
-TARGET_USERIMAGES_USE_F2FS := true
 TARGET_USERIMAGES_USE_EXT4 := true
+TARGET_USERIMAGES_USE_F2FS := true
 
-# Workaround for error copying files to recovery ramdisk
-TARGET_COPY_OUT_VENDOR := vendor
+BOARD_BUILD_SYSTEM_ROOT_IMAGE := false
+BOARD_SUPPRESS_SECURE_ERASE := true
 
-# Recovery
-TARGET_RECOVERY_PIXEL_FORMAT := "RGBX_8888"
-BOARD_USES_RECOVERY_AS_BOOT := true
-BOARD_HAS_NO_SELECT_BUTTON := true
-TARGET_NO_RECOVERY := true
+BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE := ext4
+TARGET_COPY_OUT_VENDOR := vendor
 
 # Metadata
 BOARD_USES_METADATA_PARTITION := true
 
-# System as root
-BOARD_BUILD_SYSTEM_ROOT_IMAGE := false
-BOARD_SUPPRESS_SECURE_ERASE := true
+# Encryption
+PLATFORM_VERSION := 11
 
-# Crypto
 TW_INCLUDE_CRYPTO := true
+TW_INCLUDE_CRYPTO_FBE := true
+TW_INCLUDE_FBE := true
 TW_INCLUDE_FBE_METADATA_DECRYPT := true
+USE_FSCRYPT := true
+TARGET_HW_DISK_ENCRYPTION := false
 
-# AVB
-BOARD_AVB_ENABLE := true
-BOARD_AVB_VBMETA_SYSTEM := system
-BOARD_AVB_VBMETA_SYSTEM_KEY_PATH := external/avb/test/data/testkey_rsa2048.pem
-BOARD_AVB_VBMETA_SYSTEM_ALGORITHM := SHA256_RSA2048
-BOARD_AVB_VBMETA_SYSTEM_ROLLBACK_INDEX := $(PLATFORM_SECURITY_PATCH_TIMESTAMP)
-BOARD_AVB_VBMETA_SYSTEM_ROLLBACK_INDEX_LOCATION := 1
-BOARD_AVB_VBMETA_VENDOR := vendor
-BOARD_AVB_VBMETA_VENDOR_KEY_PATH := external/avb/test/data/testkey_rsa2048.pem
-BOARD_AVB_VBMETA_VENDOR_ALGORITHM := SHA256_RSA2048
-BOARD_AVB_VBMETA_VENDOR_ROLLBACK_INDEX := $(PLATFORM_SECURITY_PATCH_TIMESTAMP)
-BOARD_AVB_VBMETA_VENDOR_ROLLBACK_INDEX_LOCATION := 2
-BOARD_AVB_RECOVERY_KEY_PATH := external/avb/test/data/testkey_rsa2048.pem
-BOARD_AVB_RECOVERY_ALGORITHM := SHA256_RSA2048
-BOARD_AVB_RECOVERY_ROLLBACK_INDEX := $(PLATFORM_SECURITY_PATCH_TIMESTAMP)
-BOARD_AVB_RECOVERY_ROLLBACK_INDEX_LOCATION := 3
-
-# 
-# TWRP Configuration
-TW_THEME := portrait_hdpi
-TW_Y_OFFSET  := 60 
-TW_H_OFFSET  := -60
+# Recovery
+BOARD_CHARGER_DISABLE_INIT_BLANK := true
 RECOVERY_SDCARD_ON_DATA := true
-TW_EXCLUDE_APEX := true
-TW_INCLUDE_RESETPROP := true
 TW_EXCLUDE_DEFAULT_USB_INIT := true
-TW_INCLUDE_NTFS_3G := true
-TW_DEFAULT_LANGUAGE := en
+
+# TWRP specific build flags
+TW_THEME := portrait_hdpi
 TW_EXTRA_LANGUAGES := false
-TARGET_USE_CUSTOM_LUN_FILE_PATH := /config/usb_gadget/g1/functions/mass_storage.usb0/lun.%d/file
-TW_BRIGHTNESS_PATH := "/sys/class/leds/lcd-backlight/brightness"
-TW_MAX_BRIGHTNESS := 255
-TW_DEFAULT_BRIGHTNESS := 800
-TWRP_INCLUDE_LOGCAT := true
-TARGET_USES_LOGD := true
-TARGET_USES_MKE2FS := true
-TW_EXCLUDE_TWRPAPP := true
+TW_INCLUDE_NTFS_3G := true
+TW_USE_TOOLBOX := true
+TW_DEFAULT_DEVICE_NAME := WSP_sprout
+TW_INPUT_BLACKLIST := "hbtp_vm"
 TW_USE_MODEL_HARDWARE_ID_FOR_DEVICE_ID := true
-TW_NO_SCREEN_BLANK := true
-TW_HAS_MTP := true
+TW_EXCLUDE_TWRPAPP := true
+TARGET_USES_MKE2FS := true
 
-PLATFORM_SECURITY_PATCH := 2099-12-31
-PLATFORM_VERSION := 20.1.0
-VENDOR_SECURITY_PATCH := 2099-12-31
+TW_Y_OFFSET := 60
+TW_H_OFFSET := -60
 
+# resetprop and magiskboot
+TW_INCLUDE_RESETPROP := true
+TW_INCLUDE_REPACKTOOLS := true
+
+# Debug
+TWRP_INCLUDE_LOGCAT := true
+TARGET_USES_LOGD := true
+
+TW_HAS_MTP := true
+TW_MTP_DEVICE := /dev/mtp_usb
 TW_INTERNAL_STORAGE_PATH := "/data/media/0"
 TW_INTERNAL_STORAGE_MOUNT_POINT := "data"
 TW_EXTERNAL_STORAGE_PATH := "/external_sd"
 TW_EXTERNAL_STORAGE_MOUNT_POINT := "external_sd"
 TW_DEFAULT_EXTERNAL_STORAGE := true
-
-TW_CRYPTO_FS_TYPE := "ext4"
-TW_CRYPTO_REAL_BLKDEV := "/dev/block/platform/bootdevice/by-name/userdata"
-TW_CRYPTO_MNT_POINT := "/data"
-TW_CRYPTO_FS_OPTIONS := "nosuid,nodev,noatime,discard,noauto_da_alloc,data=ordered"

+ 2 - 36
device.mk

@@ -1,38 +1,4 @@
 LOCAL_PATH := device/nokia/WSP_sprout
 
-# VNDK
-PRODUCT_TARGET_VNDK_VERSION := 28
-
-# API
-PRODUCT_SHIPPING_API_LEVEL := 30
-
-PRODUCT_PLATFORM := mt6761
-
-AB_OTA_POSTINSTALL_CONFIG += \
-    RUN_POSTINSTALL_system=true \
-    POSTINSTALL_PATH_system=system/bin/otapreopt_script \
-    FILESYSTEM_TYPE_system=ext4 \
-    POSTINSTALL_OPTIONAL_system=true
-
-# Boot control HAL
-PRODUCT_PACKAGES += \
-    android.hardware.boot@1.1-impl-recovery \
-    android.hardware.boot@1.1-impl \
-    android.hardware.boot@1.1-service
-
-PRODUCT_PACKAGES_DEBUG += \
-    update_engine_client
-
-PRODUCT_PACKAGES += \
-    otapreopt_script \
-    update_engine \
-    update_verifier \
-    update_engine_sideload
-    
-# health Hal
-PRODUCT_PACKAGES += \
-    android.hardware.health@2.1-impl \
-    android.hardware.health@2.1-service \
-
-TW_OVERRIDE_SYSTEM_PROPS := \
-    "ro.build.product;ro.build.fingerprint;ro.build.version.incremental;ro.product.device=ro.product.system.device;ro.product.model=ro.product.system.model;ro.product.name=ro.product.system.name"
+PRODUCT_COPY_FILES += $(call find-copy-subdir-files,*,$(LOCAL_PATH)/recovery/root,recovery/root) \
+        $(LOCAL_PATH)/prebuilt/dtb.img:dtb.img

+ 0 - 0
prebuilt/kernel.gz → prebuilt/Image.gz


+ 80 - 0
recovery/root/init.recovery.mt6761.rc

@@ -1,3 +1,83 @@
+import /init.recovery.trustonic.rc
+
+on fs
+    exec u:r:recovery:s0 root root -- /system/bin/cp -arf /vendor/app/mcRegistry/. /odm/vendor/app/mcRegistry/
+
+    install_keyring
+    setprop crypto.ready 1
+
+    write /sys/class/power_supply/usb/otg_switch 1
+    write /sys/class/oplus_chg/usb/otg_switch 1
+
+service keystore_auth /system/bin/keystore_auth
+    oneshot
+    user system
+    group root
+    disabled
+    seclabel u:r:recovery:s0
+
+service keystore /system/bin/keystore /tmp/misc/keystore
+    user root
+    group root drmrpc readproc log
+    disabled
+    seclabel u:r:recovery:s0
+
+on property:hwservicemanager.ready=true
+    start hal_cryptoeng_oppo
+    start mobicore
+    start keymaster-3-0
+    start gatekeeper-1-0
+
+on property:ro.crypto.state=unsupported
+    stop hal_cryptoeng_oppo
+    stop mobicore
+    stop keymaster-3-0
+    stop gatekeeper-1-0
+    stop servicemanager
+    stop hwservicemanager
+
+on property:ro.crypto.state=unencrypted
+    stop hal_cryptoeng_oppo
+    stop mobicore
+    stop keymaster-3-0
+    stop gatekeeper-1-0
+    stop servicemanager
+    stop hwservicemanager
+
+on post-fs-data
+    mkdir /data/vendor_de 0770 system system
+    mkdir /data/vendor_de/0 0770 system system
+    mkdir /data/vendor_de/0/cryptoeng 0770 system system
+
+on boot
+    start health-hal-2-1
+
+service gatekeeper-1-0 /system/bin/hw/android.hardware.gatekeeper@1.0-service
+    user root
+    group root
+    disabled
+    seclabel u:r:recovery:s0
+
+service hal_cryptoeng_oppo /vendor/bin/hw/vendor.oplus.hardware.cryptoeng@1.0-service
+    user root
+    group root input sdcard_rw sdcard_r
+    disabled
+    seclabel u:r:recovery:s0
+
+service keymaster-3-0 /vendor/bin/hw/android.hardware.keymaster@3.0-service.trustonic
+    user root
+    group root drmrpc
+    disabled
+    seclabel u:r:recovery:s0
+
+on property:enable.fbe.service=0
+    stop hal_cryptoeng_oppo
+    stop mobicore
+    stop servicemanager
+    stop hwservicemanager
+    stop keymaster-3-0
+    stop gatekeeper-1-0
+
 on init
     setprop sys.usb.configfs 1
     setprop sys.usb.ffs.aio_compat 0

+ 64 - 0
recovery/root/init.recovery.trustonic.rc

@@ -0,0 +1,64 @@
+# Start Daemon (Registry directories should already be present)
+service mobicore /vendor/bin/mcDriverDaemon --P1 /mnt/vendor/persist/mcRegistry \
+    -r /vendor/app/mcRegistry/020f0000000000000000000000000000.drbin \
+    -r /vendor/app/mcRegistry/05120000000000000000000000000000.drbin \
+    -r /vendor/app/mcRegistry/020b0000000000000000000000000000.drbin \
+    -r /odm/vendor/app/mcRegistry/05070000000000000000000000000000.drbin \
+    -r /odm/vendor/app/mcRegistry/030b0000000000000000000000000000.drbin \
+    -r /odm/vendor/app/mcRegistry/030c0000000000000000000000000000.drbin \
+    -r /vendor/app/mcRegistry/07060000000000000000000000007169.drbin \
+    -r /vendor/app/mcRegistry/40188311faf343488db888ad39496f9a.drbin \
+    -r /vendor/app/mcRegistry/06090000000000000000000000000000.drbin \
+    -r /vendor/app/mcRegistry/0f5eed3c3b5a47afacca69a84bf0efad.drbin \
+    -r /vendor/app/mcRegistry/07407000000000000000000000000000.drbin \
+    -r /vendor/app/mcRegistry/9073f03a9618383bb1856eb3f990babd.drbin \
+    -r /vendor/app/mcRegistry/6b3f5fa0f8cf55a7be2582587d62d63a.drbin \
+    -r /vendor/app/mcRegistry/5020170115e016302017012521300000.drbin \
+    -r /odm/vendor/app/mcRegistry/09070000000000000000000000000000.drbin
+    user root
+    group root
+    disabled
+    seclabel u:r:recovery:s0
+    
+on fs
+    # Create the mountpoint for /mnt/vendor/persist partition
+    mkdir /mnt/vendor/persist 0771 system system
+    
+    # Mount the persist partition on /mnt/vendor/persist
+    mount /dev/block/by-name/persist /mnt/vendor/persist rw
+
+on post-fs
+    chown system system /mnt/vendor/persist
+    chmod 0771 /mnt/vendor/persist
+
+    # We restorecon /mnt/vendor/persist to set SEPolicy label.
+    restorecon /mnt/vendor/persist
+
+    # Create mcRegistry to store failure record
+    mkdir /mnt/vendor/persist/mcRegistry 0771 system system
+
+    write /proc/bootprof "MOBICORE: Starting mcDriverDaemon"
+    start mobicore
+    
+on post-fs-data
+    # Create /data/vendor/key_provisioning dir and get proper encryption policy installed
+    # Key Installation
+    mkdir /data/vendor/key_provisioning 0771 system system
+
+# For META/FACTORY mode
+on property:ro.crypto.state=unencrypted
+    write /proc/bootprof "MOBICORE: create /data/vendor/mcRegistry ++ (unencrypted)"
+    mkdir /data/vendor/mcRegistry 0775 system system
+    write /proc/bootprof "MOBICORE: create /data/vendor/mcRegistry -- (unencrypted)"
+
+# Normal mode, FBE
+on property:ro.crypto.type=file
+    write /proc/bootprof "MOBICORE: create /data/vendor/mcRegistry ++ (FBE encrypted)"
+    mkdir /data/vendor/mcRegistry 0775 system system
+    write /proc/bootprof "MOBICORE: create /data/vendor/mcRegistry -- (FBE encrypted)"
+
+# Normal mode, FDE
+on property:ro.crypto.type=block
+    write /proc/bootprof "MOBICORE: create /data/vendor/mcRegistry ++ (FDE encrypted)"
+    mkdir /data/vendor/mcRegistry 0775 system system
+    write /proc/bootprof "MOBICORE: create /data/vendor/mcRegistry -- (FDE encrypted)"

+ 54 - 807
recovery/root/init.recovery.usb.rc

@@ -1,849 +1,96 @@
 # Copyright (c) 2020, The Linux Foundation. All rights reserved.
 #
-on boot
+on early-init
+    write /sys/module/musb_hdrc/parameters/kernel_init_done 1
+
+on init
     setprop sys.usb.configfs 1
-    setprop sys.usb.ffs.aio_compat 0
+    setprop sys.usb.ffs.aio_compat 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
-    write /sys/class/android_usb/android0/f_mtp/cpu_mask 0xF0
 
-    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
+on property:ro.boot.usbcontroller=*
+    setprop sys.usb.controller ${ro.boot.usbcontroller}
 
-on charger
+on fs
+    mkdir /config
+    mkdir /dev/usb-ffs 0770 shell shell
+    mkdir /dev/usb-ffs/adb 0770 shell shell
+    mount configfs none /config
     mkdir /config/usb_gadget/g1 0770 shell shell
-    write /config/usb_gadget/g1/idVendor 0x0E8D
+    mkdir /config/usb_gadget/g1/strings/0x409 0770 shell shell
     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/functions/mass_storage.usb0
+    mkdir /config/usb_gadget/g1/functions/ffs.adb
+    mkdir /config/usb_gadget/g1/functions/mtp.gs0
+    write /config/usb_gadget/g1/functions/mtp.gs0/os_desc/interface.MTP/compatible_id "MTP"
     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
+    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 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
+    write /sys/class/android_usb/android0/f_ffs/aliases adb
 
-### 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/f4
-    rm /config/usb_gadget/g1/configs/b.1/f5
+    write /config/usb_gadget/g1/UDC "none"
+    stop adbd
+    setprop sys.usb.ffs.ready 0
+    setprop sys.usb.ffs.mtp.ready 0
+    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
+    #rmdir /config/usb_gadget/g1/functions/rndis.gs4
     write /sys/devices/platform/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/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
+on property:sys.usb.ffs.ready=1 && property:sys.usb.config=adb && 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}
+    write /config/usb_gadget/g1/idVendor 0x18d1
+    write /config/usb_gadget/g1/idProduct 0xd001
+    write /config/usb_gadget/g1/os_desc/use 1
     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}
+    write /config/usb_gadget/g1/UDC ${sys.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
-    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/mt_usb/saving 1
-    symlink /config/usb_gadget/g1/functions/mtp.gs0 /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=sideload && property:sys.usb.ffs.ready=1 && property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/idVendor 0x18d1
 
-on property:sys.usb.config=mtp && property:vendor.usb.acm_enable=0 && \
-property:sys.usb.configfs=1
+on property:sys.usb.config=mtp && property:sys.usb.configfs=1
+    setprop sys.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/mtp.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}
-
-### 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
-    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/mt_usb/saving 1
-    symlink /config/usb_gadget/g1/functions/mtp.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}
-
-on property:sys.usb.ffs.ready=1 && property:sys.usb.config=mtp,adb && \
-property:vendor.usb.acm_enable=0 && property:sys.usb.configfs=1
-    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "mtp_adb"
-    write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
+    rm /config/usb_gadget/g1/configs/b.1/f1
+    rm /config/usb_gadget/g1/configs/b.1/f2
+    write /config/usb_gadget/g1/idVendor 0x0e8d
+    write /config/usb_gadget/g1/idProduct 0x2008
     write /config/usb_gadget/g1/os_desc/use 1
     symlink /config/usb_gadget/g1/functions/mtp.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
-    write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
+    write /config/usb_gadget/g1/UDC ${sys.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
-    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/mt_usb/saving 1
-    symlink /config/usb_gadget/g1/functions/ptp.gs1 /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
-    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/ptp.gs1 /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
-    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/mt_usb/saving 1
-    symlink /config/usb_gadget/g1/functions/ptp.gs1 /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
-    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/ptp.gs1 /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/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/mt_usb/saving 1
-    symlink /config/usb_gadget/g1/functions/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/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/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/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/mt_usb/saving 1
-    symlink /config/usb_gadget/g1/functions/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/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/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/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/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/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/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/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/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/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/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
+on property:sys.usb.config=mtp,adb
     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/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
+on property:sys.usb.ffs.ready=1 && property:sys.usb.config=mtp,adb && property:sys.usb.configfs=1
+    setprop sys.usb.ffs.mtp.ready 1
+    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "mtp_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
-    rmdir /config/usb_gadget/g1/functions/rndis.gs4
-    write /sys/devices/platform/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/class/udc/musb-hdrc/device/saving 1
-    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "atm_gs0"
-    write /config/usb_gadget/g1/idProduct 0x200A
-    symlink /config/usb_gadget/g1/functions/mtp.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.gs0 /config/usb_gadget/g1/configs/b.1/f3
-    write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
-    #setprop sys.usb.state ${sys.usb.config}
-    #setprop vendor.usb.pid 0x200A
-    setprop vendor.usb.clear 0
-    setprop vendor.usb.acm_idx "1"
-
-on property:sys.usb.config=atm_gs0gs3 && property:sys.usb.configfs=1
-    stop adbd
-    setprop vendor.usb.ffs.ready 0
-    setprop vendor.usb.clear 1
-
-on property:vendor.usb.ffs.ready=0 && property:sys.usb.config=atm_gs0gs3 && \
-property:vendor.usb.clear=2 && property:sys.usb.configfs=1
-    start adbd
-
-on property:vendor.usb.ffs.ready=1 && property:sys.usb.config=atm_gs0gs3 && \
-property:vendor.usb.clear=2 && property:sys.usb.configfs=1
-    setprop vendor.usb.acm_port0 0
-    setprop vendor.usb.acm_port1 3
-    setprop vendor.usb.acm_cnt 2
-    setprop vendor.usb.acm_enable 1
-    write /sys/class/udc/musb-hdrc/device/saving 1
-    write /config/usb_gadget/g1/idProduct 0x2026
-    symlink /config/usb_gadget/g1/functions/mtp.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.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/idVendor 0x0e8d
+    write /config/usb_gadget/g1/idProduct 0x201d
     write /config/usb_gadget/g1/os_desc/use 1
     symlink /config/usb_gadget/g1/functions/mtp.gs0 /config/usb_gadget/g1/configs/b.1/f1
-    write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
+    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}
-    setprop vendor.usb.pid 0x2008
-
-on property:sys.usb.config=charging_yes
-    setprop vendor.usb.state ${sys.usb.state}
-    setprop vendor.usb.charging yes
-    setprop sys.usb.config none
-    setprop sys.usb.config ${vendor.usb.state}
-
-on property:sys.usb.config=charging_no
-    setprop vendor.usb.state ${sys.usb.state}
-    setprop sys.usb.config none
-    setprop sys.usb.config ${vendor.usb.state}
-    setprop vendor.usb.charging no
-
-on property:vendor.usb.charging=yes
-    write /sys/class/udc/musb-hdrc/device/cmode 2
-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/mt_usb/portmode 0
-on property:vendor.usb.port.mode=uart
-	write /sys/devices/platform/mt_usb/portmode 1
-
-on property:vendor.em.usb.set=USB_DRIVING_CAPABILITY
-	write /sys/kernel/debug/usb20_phy/USB_DRIVING_CAPABILITY ${mediatek.em.usb.value}
-on property:vendor.em.usb.set=RG_USB20_TERM_VREF_SEL
-	write /sys/kernel/debug/usb20_phy/RG_USB20_TERM_VREF_SEL ${mediatek.em.usb.value}
-on property:vendor.em.usb.set=RG_USB20_HSTX_SRCTRL
-	write /sys/kernel/debug/usb20_phy/RG_USB20_HSTX_SRCTRL ${mediatek.em.usb.value}
-on property:vendor.em.usb.set=RG_USB20_VRT_VREF_SEL
-	write /sys/kernel/debug/usb20_phy/RG_USB20_VRT_VREF_SEL ${mediatek.em.usb.value}
-on property:vendor.em.usb.set=RG_USB20_INTR_EN
-	write /sys/kernel/debug/usb20_phy/RG_USB20_INTR_EN ${mediatek.em.usb.value}
-on property:vendor.em.usb.set=RG_USB20_PHY_REV6
-	write /sys/kernel/debug/usb20_phy/RG_USB20_PHY_REV6 ${mediatek.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}
-
-### PLATFORM VARIANT, cat $rc_file | grep write | sort | grep -vE "android0|usb20_phy" | awk '{print $2}' | uniq ###

BIN
recovery/root/system/bin/hw/android.hardware.gatekeeper@1.0-service


+ 0 - 21
recovery/root/system/etc/fstab.postinstall

@@ -1,21 +0,0 @@
-#
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#       http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Tries to mount system_other as a logical partition. If that fails, then
-# mount as a physical partition.
-
-#<src>                    <mnt_point>  <type> <mnt_flags and options> <fs_mgr_flags>
-system                    /postinstall ext4   ro,nosuid,nodev,noexec  slotselect_other,logical
-/dev/block/by-name/system /postinstall ext4   ro,nosuid,nodev,noexec  slotselect_other

+ 6 - 0
recovery/root/system/etc/recovery.fstab

@@ -0,0 +1,6 @@
+/dev/block/platform/bootdevice/by-name/system /system ext4 ro wait,slotselect,avb=vbmeta,first_stage_mount,wipeingui,logical,backup=1
+
+/dev/block/platform/bootdevice/by-name/vendor /vendor ext4 ro wait,slotselect,avb,first_stage_mount,wipeingui,backup=1,flashimg=1
+
+/dev/block/platform/bootdevice/by-name/vbmeta /vbmeta emmc defaults defaults
+

+ 1 - 1
recovery/root/system/etc/twrp.fstab → recovery/root/system/etc/twrp.flags

@@ -23,4 +23,4 @@
 /sec1             emmc     /dev/block/platform/bootdevice/by-name/sec1
 /seccfg           emmc     /dev/block/platform/bootdevice/by-name/seccfg
 /sspm             emmc     /dev/block/platform/bootdevice/by-name/sspm         flags=slotselect
-/spmfw            emmc     /dev/block/platform/bootdevice/by-name/spmfw        flags=slotselect
+/spmfw            emmc     /dev/block/platform/bootdevice/by-name/spmfw        flags=slotselect

+ 0 - 95
recovery/root/system/etc/vintf/manifest.xml

@@ -1,95 +0,0 @@
-<!--
-    Input:
-        manifest.xml
--->
-<manifest version="2.0" type="framework">
-    <hal format="hidl">
-        <name>android.frameworks.displayservice</name>
-        <transport>hwbinder</transport>
-        <version>1.0</version>
-        <interface>
-            <name>IDisplayService</name>
-            <instance>default</instance>
-        </interface>
-        <fqname>@1.0::IDisplayService/default</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>android.frameworks.schedulerservice</name>
-        <transport>hwbinder</transport>
-        <version>1.0</version>
-        <interface>
-            <name>ISchedulingPolicyService</name>
-            <instance>default</instance>
-        </interface>
-        <fqname>@1.0::ISchedulingPolicyService/default</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>android.frameworks.sensorservice</name>
-        <transport>hwbinder</transport>
-        <version>1.0</version>
-        <interface>
-            <name>ISensorManager</name>
-            <instance>default</instance>
-        </interface>
-        <fqname>@1.0::ISensorManager/default</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>android.hidl.manager</name>
-        <transport>hwbinder</transport>
-        <version>1.2</version>
-        <interface>
-            <name>IServiceManager</name>
-            <instance>default</instance>
-        </interface>
-        <fqname>@1.2::IServiceManager/default</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>android.hidl.memory</name>
-        <transport arch="32+64">passthrough</transport>
-        <version>1.0</version>
-        <interface>
-            <name>IMapper</name>
-            <instance>ashmem</instance>
-        </interface>
-        <fqname>@1.0::IMapper/ashmem</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>android.hidl.token</name>
-        <transport>hwbinder</transport>
-        <version>1.0</version>
-        <interface>
-            <name>ITokenManager</name>
-            <instance>default</instance>
-        </interface>
-        <fqname>@1.0::ITokenManager/default</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>android.system.net.netd</name>
-        <transport>hwbinder</transport>
-        <version>1.1</version>
-        <interface>
-            <name>INetd</name>
-            <instance>default</instance>
-        </interface>
-        <fqname>@1.1::INetd/default</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>android.system.wifi.keystore</name>
-        <transport>hwbinder</transport>
-        <version>1.0</version>
-        <interface>
-            <name>IKeystore</name>
-            <instance>default</instance>
-        </interface>
-        <fqname>@1.0::IKeystore/default</fqname>
-    </hal>
-    <hal format="native">
-        <name>netutils-wrapper</name>
-        <version>1.0</version>
-    </hal>
-    <system-sdk>
-        <version>28</version>
-        <version>29</version>
-        <version>30</version>
-    </system-sdk>
-</manifest>

BIN
recovery/root/system/lib64/hw/android.hardware.boot@1.0-impl-1.1-mtkimpl.so


BIN
recovery/root/system/lib64/libhwbinder.so


+ 69 - 0
recovery/root/ueventd.rc

@@ -0,0 +1,69 @@
+firmware_directories /etc/firmware/ /odm/firmware/ /vendor/firmware/ /firmware/image/
+uevent_socket_rcvbuf_size 16M
+
+subsystem graphics
+    devname uevent_devpath
+    dirname /dev/graphics
+
+subsystem drm
+    devname uevent_devpath
+    dirname /dev/dri
+
+subsystem input
+    devname uevent_devpath
+    dirname /dev/input
+
+subsystem sound
+    devname uevent_devpath
+    dirname /dev/snd
+
+# ueventd can only set permissions on device nodes and their associated
+# sysfs attributes, not on arbitrary paths.
+#
+# format for /dev rules: devname mode uid gid
+# format for /sys rules: nodename attr mode uid gid
+# shortcut: "mtd@NN" expands to "/dev/mtd/mtdNN"
+
+/dev/null                 0666   root       root
+/dev/zero                 0666   root       root
+/dev/full                 0666   root       root
+/dev/ptmx                 0666   root       root
+/dev/tty                  0666   root       root
+/dev/random               0666   root       root
+/dev/urandom              0666   root       root
+# Make HW RNG readable by group system to let EntropyMixer read it.
+/dev/hw_random            0440   root       system
+/dev/ashmem*              0666   root       root
+/dev/binder               0666   root       root
+/dev/hwbinder             0666   root       root
+/dev/vndbinder            0666   root       root
+
+/dev/pmsg0                0222   root       log
+
+# kms driver for drm based gpu
+/dev/dri/*                0666   root       graphics
+
+# these should not be world writable
+/dev/uhid                 0660   uhid       uhid
+/dev/uinput               0660   uhid       uhid
+/dev/rtc0                 0640   system     system
+/dev/tty0                 0660   root       system
+/dev/graphics/*           0660   root       graphics
+/dev/input/*              0660   root       input
+/dev/v4l-touch*           0660   root       input
+/dev/snd/*                0660   system     audio
+/dev/bus/usb/*            0660   root       usb
+/dev/mtp_usb              0660   root       mtp
+/dev/usb_accessory        0660   root       usb
+/dev/tun                  0660   system     vpn
+
+# CDMA radio interface MUX
+/dev/ppp                  0660   radio      vpn
+
+# sysfs properties
+/sys/devices/platform/trusty.*      trusty_version        0440  root   log
+/sys/devices/virtual/input/input*   enable      0660  root   input
+/sys/devices/virtual/input/input*   poll_delay  0660  root   input
+/sys/devices/virtual/usb_composite/*   enable      0664  root   system
+/sys/devices/system/cpu/cpu*   cpufreq/scaling_max_freq   0664  system system
+/sys/devices/system/cpu/cpu*   cpufreq/scaling_min_freq   0664  system system

BIN
recovery/root/vendor/app/mcRegistry/020f0000000000000000000000000000.drbin


BIN
recovery/root/vendor/app/mcRegistry/020f0000000000000000000000000000.tlbin


BIN
recovery/root/vendor/app/mcRegistry/030b0000000000000000000000000000.drbin


BIN
recovery/root/vendor/app/mcRegistry/030b0000000000000000000000000000.tlbin


BIN
recovery/root/vendor/app/mcRegistry/05120000000000000000000000000000.drbin


BIN
recovery/root/vendor/app/mcRegistry/05120000000000000000000000000000.tlbin


BIN
recovery/root/vendor/app/mcRegistry/06090000000000000000000000000000.drbin


BIN
recovery/root/vendor/app/mcRegistry/06090000000000000000000000000000.tlbin


BIN
recovery/root/vendor/app/mcRegistry/07010000000000000000000000000000.tlbin


BIN
recovery/root/vendor/app/mcRegistry/0706000000000000000000000000004d.tlbin


BIN
recovery/root/vendor/app/mcRegistry/07061000000000000000000000000000.tlbin


BIN
recovery/root/vendor/app/mcRegistry/07150000000000000000000000000000.drbin


BIN
recovery/root/vendor/app/mcRegistry/07150000000000000000000000000000.tlbin


BIN
recovery/root/vendor/app/mcRegistry/07170000000000000000000000000000.drbin


BIN
recovery/root/vendor/app/mcRegistry/07170000000000000000000000000000.tlbin


BIN
recovery/root/vendor/app/mcRegistry/08030000000000000000000000000000.tabin


BIN
recovery/root/vendor/app/mcRegistry/08110000000000000000000000000000.tabin


BIN
recovery/root/vendor/app/mcRegistry/09190000000000000000000000000000.tlbin


BIN
recovery/root/vendor/bin/hw/android.hardware.keymaster@3.0-service.trustonic


BIN
recovery/root/vendor/lib64/hw/android.hardware.gatekeeper@1.0-impl.so


+ 1 - 0
recovery/root/vendor/lib64/hw/gatekeeper.default.so

@@ -0,0 +1 @@
+libSoftGatekeeper.so

+ 1 - 0
recovery/root/vendor/lib64/hw/gatekeeper.mt6761.so

@@ -0,0 +1 @@
+libMcGatekeeper.so

+ 1 - 0
recovery/root/vendor/lib64/hw/gatekeeper.wasp.so

@@ -0,0 +1 @@
+libMcGatekeeper.so

+ 1 - 0
recovery/root/vendor/lib64/hw/keystore.mt6761.so

@@ -0,0 +1 @@
+libMcTeeKeymaster.so

+ 1 - 0
recovery/root/vendor/lib64/hw/keystore.wasp.so

@@ -0,0 +1 @@
+libMcTeeKeymaster.so

BIN
recovery/root/vendor/lib64/hw/libMcGatekeeper.so


BIN
recovery/root/vendor/lib64/hw/libSoftGatekeeper.so


BIN
recovery/root/vendor/mcDriverDaemon


+ 0 - 30
system.prop

@@ -1,30 +0,0 @@
-ro.hardware.egl=meow
-ro.vendor.mediatek.platform=MT6761
-ro.vendor.mtk_f2fs_enable=0
-ro.vendor.mtk_emmc_support=1
-ro.vendor.mtk_trustonic_tee_support=1
-ro.hardware.kmsetkey=trustonic
-ro.crypto.volume.filenames_mode=aes-256-cts
-ro.product.odm.manufacturer=HMD Global
-ro.product.odm.model=2.2
-ro.product.odm.brand=Nokia
-ro.product.odm.device=WSP_sprout
-ro.product.manufacturer=HMD Global
-ro.product.model=2.2
-ro.product.brand=Nokia
-ro.product.device=WSP_sprout
-ro.sf.lcd_density=320
-ro.secure=0
-ro.adb.secure=0
-ro.debuggable=1
-persist.sys.usb.config=mtp,adb
-persist.service.adb.enable=1
-persist.service.debuggable=1
-persist.sys.isUsbOtgEnabled=true
-ro.sys.usb.mtp.whql.enable=0
-ro.sys.usb.storage.type=mtp
-ro.treble.enabled=true
-ro.boot.dynamic_partitions=true
-sys.usb.ffs.aio_compat=true
-fbe.metadata.wrappedkey=true
-vendor.gatekeeper.disable_spu=true

+ 1 - 0
twrp.dependencies

@@ -0,0 +1 @@
+[]

+ 20 - 12
twrp_WSP_sprout.mk

@@ -1,11 +1,11 @@
 #
-# Copyright (C) 2020 The TWRP Open Source Project
+# Copyright (C) 2021 TeamWin Recovery Project
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # You may obtain a copy of the License at
 #
-#     http://www.apache.org/licenses/LICENSE-2.0
+# http://www.apache.org/licenses/LICENSE-2.0
 #
 # Unless required by applicable law or agreed to in writing, software
 # distributed under the License is distributed on an "AS IS" BASIS,
@@ -16,24 +16,32 @@
 
 # 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/base.mk)
-
-# Installs gsi keys into ramdisk, to boot a developer GSI with verified boot.
+$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_base.mk)
 $(call inherit-product, $(SRC_TARGET_DIR)/product/gsi_keys.mk)
 
-# Inherit from star device
 $(call inherit-product, device/nokia/WSP_sprout/device.mk)
 
-# Inherit some common recovery stuff.
+# Inherit from TWRP common configurations
 $(call inherit-product, vendor/twrp/config/common.mk)
 
-# Device identifier. This must come after all inclusions
+PRODUCT_COPY_FILES += $(call find-copy-subdir-files,*,$(LOCAL_PATH)/recovery/root,recovery/root)
+
+# Extra required packages
+PRODUCT_PACKAGES += \
+    twrpfbe
+
+## Device identifier. This must come after all inclusions
 PRODUCT_DEVICE := WSP_sprout
 PRODUCT_NAME := twrp_WSP_sprout
 PRODUCT_BRAND := Nokia
 PRODUCT_MODEL := 2.2
-PRODUCT_MANUFACTURER := HMD Global
+PRODUCT_MANUFACTURER := hmd
+PRODUCT_RELEASE_NAME := Nokia 2.2
+
+PRODUCT_BUILD_PROP_OVERRIDES += \
+    TARGET_DEVICE=WSP_sprout \
+    PRODUCT_NAME=WSP_sprout \
+    PRIVATE_BUILD_DESC="full_wasp-user 11 RP1A.200720.011 1068 release-keys"
+
+BUILD_FINGERPRINT := Nokia/Wasp_00WW/WSP_sprout:11/RP1A.200720.011/00WW_3_270:user/release-keys
 
-# HACK: Set vendor patch level
-PRODUCT_PROPERTY_OVERRIDES += \
-    ro.vendor.build.security_patch=2099-12-31