How to Build Basic TWRP for a Android Device Android 9+ - General Topics

How to Build Basic TWRP for a Android Device Android 9+​​Note​
This is a basic method to build twrp. If twrp has bugs you have to fix it with your self according to your device
In samsung devices decryption/encryption cannot be fix easily and it need to modify kernel to fix mtp. most of time common bugs are mtp and decryption you need can find more info by referring more device trees
Click to expand...
Click to collapse
Prepare Environmet​
Create a github account​
Create a new empty repo​
Then log into gitpod using github account​
Open new workspace in gitpod,​
Select your new repo and selcect class as large​
​Make a device tree using twrpdtgen​
git clone https://github.com/twrpdtgen/twrpdtgen​
cd twrpdtgen​
sudo apt install cpio​
pip3 install twrpdtgen​
drag and drop the stock recovery.img to twrpdtgen folder​
python3 -m twrpdtgen <path to image>​
you will get twrp device tree at the out/manufature/code_name (eg: samsung/m01q)​
then copy manufature folder into root directory (workspace/name_of_your_github_repo)​
​
Install repo and packages​
sudo apt update​
sudo apt install rsync​
​​
repo init --depth=1 --no-repo-verify -u https://github.com/minimal-manifest-twrp/platform_manifest_twrp_aosp.git -b twrp-12.1 -g default,-mips,-darwin,-notdefault​
repo sync -c --no-clone-bundle --no-tags --optimized-fetch --prune --force-sync -j8​
Place device tree​
​move manufature folder (created device tree) to device (EG: workspace/name_of_your_github_repo/device/samsung)​
Modify Device Tree​
open device.mk and add these​​Add support to fastbootd (skip the if your device dosnt have super.img)​Change the value according to shipped android os​
if android 10 = 29​if android 11 = 30​if android 12 = 31​if android 12.1 = 32​if android 13 = 33​
PRODUCT_PACKAGES += \
[email protected] \
fastbootd
PRODUCT_USE_DYNAMIC_PARTITIONS := true
PRODUCT_SHIPPING_API_LEVEL := 29
​Add device code name​​TARGET_OTA_ASSERT_DEVICE := m01q
TARGET_COPY_OUT_VENDOR := vendor
​TWRP FLAGS​​TARGET_RECOVERY_PIXEL_FORMAT := "RGBX_8888"
# TWRP specific build flags
TW_THEME := portrait_hdpi
RECOVERY_SDCARD_ON_DATA := true
TW_EXCLUDE_DEFAULT_USB_INIT := true
TW_EXTRA_LANGUAGES := true
TW_INCLUDE_NTFS_3G := true
TW_USE_TOOLBOX := true
TW_INCLUDE_RESETPROP := true
TW_INPUT_BLACKLIST := "hbtp_vm"
TW_BRIGHTNESS_PATH := "/sys/class/backlight/panel0-backlight/brightness"
TW_DEFAULT_BRIGHTNESS := 1200
TARGET_USES_MKE2FS := true
TW_NO_LEGACY_PROPS := true
TW_USE_NEW_MINADBD := true
TW_NO_BIND_SYSTEM := true
TW_NO_SCREEN_BLANK := true
TW_EXCLUDE_APEX := true
TW_FRAMERATE := 60
​TWRP Name​​TW_DEVICE_VERSION := smiley​​Enable notch​
TW_Y_OFFSET := 70
TW_H_OFFSET := -70
Reboot to odin for samsung​​TW_HAS_DOWNLOAD_MODE := true​​Enable Logcat​​TWRP_INCLUDE_LOGCAT := true[/HEADING]
[HEADING=2]TARGET_USES_LOGD := true​​Add fingerprint​​#Properties
TW_OVERRIDE_SYSTEM_PROPS := \
"ro.build.fingerprint=ro.system.build.fingerprint;ro.build.version.incremental"
Modify fstab​
Open recovery.fstab​
add this to end of line to enable partition backup and flash​
;backup=1;flashimg
add those to enable sdcard and otg​
# Removable storage
/external_sd vfat /dev/block/mmcblk1p1 /dev/block/mmcblk1 flags=storage;wipeingui;removable
/usb-otg auto /dev/block/sda1 /dev/block/sda flags=display="USB-OTG";storage;wipeingui;removable
Open BoradConfig,mk and modify values according to your device (skip if you dont have super.img)​
# Dynamic Partition
BOARD_SUPER_PARTITION_SIZE := 3945791488
BOARD_SUPER_PARTITION_GROUPS := android_dynamic_partitions
BOARD_ANDROID_DYNAMIC_PARTITIONS_SIZE := 3945791488
BOARD_ANDROID_DYNAMIC_PARTITIONS_PARTITION_LIST := system vendor product odm
Open Omni_device_code.mk​
$(call inherit-product, vendor/omni/config/common.mk)
rename omni to twrp​
$(call inherit-product, vendor/twrp/config/common.mk)
Build TWRP​
. build/envstup.sh
lunch (select your device-eng)
make recoveryimage

smiley9000 said:
How to Build Basic TWRP for a Android Device Android 9+​​Note​
Prepare Environmet​
Create a github account​
Create a new empty repo​
Then log into gitpod using github account​
Open new workspace in gitpod,​
Select your new repo and selcect class as large​
​Make a device tree using twrpdtgen​
git clone https://github.com/twrpdtgen/twrpdtgen​
cd twrpdtgen​
sudo apt install cpio​
pip3 install twrpdtgen​
drag and drop the stock recovery.img to twrpdtgen folder​
python3 -m twrpdtgen <path to image>​
you will get twrp device tree at the out/manufature/code_name (eg: samsung/m01q)​
then copy manufature folder into root directory (workspace/name_of_your_github_repo)​
​
Install repo and packages​
sudo apt update​
sudo apt install rsync​
​​
repo init --depth=1 --no-repo-verify -u https://github.com/minimal-manifest-twrp/platform_manifest_twrp_aosp.git -b twrp-12.1 -g default,-mips,-darwin,-notdefault​
repo sync -c --no-clone-bundle --no-tags --optimized-fetch --prune --force-sync -j8​
Place device tree​
​move manufature folder (created device tree) to device (EG: workspace/name_of_your_github_repo/device/samsung)​
Modify Device Tree​
open device.mk and add these​​Add support to fastbootd (skip the if your device dosnt have super.img)​Change the value according to shipped android os​
if android 10 = 29​if android 11 = 30​if android 12 = 31​if android 12.1 = 32​if android 13 = 33​
PRODUCT_PACKAGES += \
[email protected] \
fastbootd
PRODUCT_USE_DYNAMIC_PARTITIONS := true
PRODUCT_SHIPPING_API_LEVEL := 29
​Add device code name​​TARGET_OTA_ASSERT_DEVICE := m01q
TARGET_COPY_OUT_VENDOR := vendor
​TWRP FLAGS​​TARGET_RECOVERY_PIXEL_FORMAT := "RGBX_8888"
# TWRP specific build flags
TW_THEME := portrait_hdpi
RECOVERY_SDCARD_ON_DATA := true
TW_EXCLUDE_DEFAULT_USB_INIT := true
TW_EXTRA_LANGUAGES := true
TW_INCLUDE_NTFS_3G := true
TW_USE_TOOLBOX := true
TW_INCLUDE_RESETPROP := true
TW_INPUT_BLACKLIST := "hbtp_vm"
TW_BRIGHTNESS_PATH := "/sys/class/backlight/panel0-backlight/brightness"
TW_DEFAULT_BRIGHTNESS := 1200
TARGET_USES_MKE2FS := true
TW_NO_LEGACY_PROPS := true
TW_USE_NEW_MINADBD := true
TW_NO_BIND_SYSTEM := true
TW_NO_SCREEN_BLANK := true
TW_EXCLUDE_APEX := true
TW_FRAMERATE := 60
​TWRP Name​​TW_DEVICE_VERSION := smiley​​Enable notch​
TW_Y_OFFSET := 70
TW_H_OFFSET := -70
Reboot to odin for samsung​​TW_HAS_DOWNLOAD_MODE := true​​Enable Logcat​​TWRP_INCLUDE_LOGCAT := true[/HEADING][/HEADING]
[HEADING=2][HEADING=2]TARGET_USES_LOGD := true​​Add fingerprint​​#Properties
TW_OVERRIDE_SYSTEM_PROPS := \
"ro.build.fingerprint=ro.system.build.fingerprint;ro.build.version.incremental"
Modify fstab​
Open recovery.fstab​
add this to end of line to enable partition backup and flash​
;backup=1;flashimg
add those to enable sdcard and otg​
# Removable storage
/external_sd vfat /dev/block/mmcblk1p1 /dev/block/mmcblk1 flags=storage;wipeingui;removable
/usb-otg auto /dev/block/sda1 /dev/block/sda flags=display="USB-OTG";storage;wipeingui;removable
Open BoradConfig,mk and modify values according to your device (skip if you dont have super.img)​
# Dynamic Partition
BOARD_SUPER_PARTITION_SIZE := 3945791488
BOARD_SUPER_PARTITION_GROUPS := android_dynamic_partitions
BOARD_ANDROID_DYNAMIC_PARTITIONS_SIZE := 3945791488
BOARD_ANDROID_DYNAMIC_PARTITIONS_PARTITION_LIST := system vendor product odm
Open Omni_device_code.mk​
$(call inherit-product, vendor/omni/config/common.mk)
rename omni to twrp​
$(call inherit-product, vendor/twrp/config/common.mk)
Build TWRP​
. build/envstup.sh
lunch (select your device-eng)
make recoveryimage
Click to expand...
Click to collapse
After creating a device tree, how does one find the required files that should go into the recovery/root folder to build TWRP

whale0z said:
After creating a device tree, how does one find the required files that should go into the recovery/root folder to build TWRP
Click to expand...
Click to collapse
try to find twrp device tree of similler soc and compare to make most succesfull device tree. but decryption is heavily depend on oem

smiley9000 said:
try to find twrp device tree of similler soc and compare to make most succesfull device tree. but decryption is heavily depend on oem
Click to expand...
Click to collapse
I was able to build for a mediatek device but fastboot boot doesn't seem to work. I was wondering if using fastboot flash would not mess with the normal boot sequence.

whale0z said:
I was able to build for a mediatek device but fastboot boot doesn't seem to work. I was wondering if using fastboot flash would not mess with the normal boot sequence.
Click to expand...
Click to collapse
Some device dosent support fastboot boot for security reasons

smiley9000 said:
How to Build Basic TWRP for a Android Device Android 9+​​Note​
Prepare Environmet​
Create a github account​
Create a new empty repo​
Then log into gitpod using github account​
Open new workspace in gitpod,​
Select your new repo and selcect class as large​
​Make a device tree using twrpdtgen​
git clone https://github.com/twrpdtgen/twrpdtgen​
cd twrpdtgen​
sudo apt install cpio​
pip3 install twrpdtgen​
drag and drop the stock recovery.img to twrpdtgen folder​
python3 -m twrpdtgen <path to image>​
you will get twrp device tree at the out/manufature/code_name (eg: samsung/m01q)​
then copy manufature folder into root directory (workspace/name_of_your_github_repo)​
​
Install repo and packages​
sudo apt update​
sudo apt install rsync​
​​
repo init --depth=1 --no-repo-verify -u https://github.com/minimal-manifest-twrp/platform_manifest_twrp_aosp.git -b twrp-12.1 -g default,-mips,-darwin,-notdefault​
repo sync -c --no-clone-bundle --no-tags --optimized-fetch --prune --force-sync -j8​
Place device tree​
​move manufature folder (created device tree) to device (EG: workspace/name_of_your_github_repo/device/samsung)​
Modify Device Tree​
open device.mk and add these​​Add support to fastbootd (skip the if your device dosnt have super.img)​Change the value according to shipped android os​
if android 10 = 29​if android 11 = 30​if android 12 = 31​if android 12.1 = 32​if android 13 = 33​
PRODUCT_PACKAGES += \
[email protected] \
fastbootd
PRODUCT_USE_DYNAMIC_PARTITIONS := true
PRODUCT_SHIPPING_API_LEVEL := 29
​Add device code name​​TARGET_OTA_ASSERT_DEVICE := m01q
TARGET_COPY_OUT_VENDOR := vendor
​TWRP FLAGS​​TARGET_RECOVERY_PIXEL_FORMAT := "RGBX_8888"
# TWRP specific build flags
TW_THEME := portrait_hdpi
RECOVERY_SDCARD_ON_DATA := true
TW_EXCLUDE_DEFAULT_USB_INIT := true
TW_EXTRA_LANGUAGES := true
TW_INCLUDE_NTFS_3G := true
TW_USE_TOOLBOX := true
TW_INCLUDE_RESETPROP := true
TW_INPUT_BLACKLIST := "hbtp_vm"
TW_BRIGHTNESS_PATH := "/sys/class/backlight/panel0-backlight/brightness"
TW_DEFAULT_BRIGHTNESS := 1200
TARGET_USES_MKE2FS := true
TW_NO_LEGACY_PROPS := true
TW_USE_NEW_MINADBD := true
TW_NO_BIND_SYSTEM := true
TW_NO_SCREEN_BLANK := true
TW_EXCLUDE_APEX := true
TW_FRAMERATE := 60
​TWRP Name​​TW_DEVICE_VERSION := smiley​​Enable notch​
TW_Y_OFFSET := 70
TW_H_OFFSET := -70
Reboot to odin for samsung​​TW_HAS_DOWNLOAD_MODE := true​​Enable Logcat​​TWRP_INCLUDE_LOGCAT := true[/HEADING][/HEADING][/HEADING][/HEADING][/HEADING]
[HEADING=2][HEADING=2][HEADING=2][HEADING=2][HEADING=2]TARGET_USES_LOGD := true​​Add fingerprint​​#Properties
TW_OVERRIDE_SYSTEM_PROPS := \
"ro.build.fingerprint=ro.system.build.fingerprint;ro.build.version.incremental"
Modify fstab​
Open recovery.fstab​
add this to end of line to enable partition backup and flash​
;backup=1;flashimg
add those to enable sdcard and otg​
# Removable storage
/external_sd vfat /dev/block/mmcblk1p1 /dev/block/mmcblk1 flags=storage;wipeingui;removable
/usb-otg auto /dev/block/sda1 /dev/block/sda flags=display="USB-OTG";storage;wipeingui;removable
Open BoradConfig,mk and modify values according to your device (skip if you dont have super.img)​
# Dynamic Partition
BOARD_SUPER_PARTITION_SIZE := 3945791488
BOARD_SUPER_PARTITION_GROUPS := android_dynamic_partitions
BOARD_ANDROID_DYNAMIC_PARTITIONS_SIZE := 3945791488
BOARD_ANDROID_DYNAMIC_PARTITIONS_PARTITION_LIST := system vendor product odm
Open Omni_device_code.mk​
$(call inherit-product, vendor/omni/config/common.mk)
rename omni to twrp​
$(call inherit-product, vendor/twrp/config/common.mk)
Build TWRP​
. build/envstup.sh
lunch (select your device-eng)
make recoveryimage
Click to expand...
Click to collapse
hiya
after enter this command :
" repo sync -c --no-clone-bundle --no-tags --optimized-fetch --prune --force-sync -j8 "​i got this error:
Usage: repo sync [<project>...]
main.py: error: option -j: invalid integer value: '8\u200b'
i think its about java , but java works fine.
================================================================================
gitpod /workspace/Nokia-5.3-twrp-device-tree (main) $ lunch
You're building on Linux
Lunch menu... pick a combo:
1. aosp_arm-eng
2. aosp_arm64-eng
3. aosp_x86-eng
4. aosp_x86_64-eng
5. omni_CAP_sprout-eng
6. omni_CAP_sprout-user
7. omni_CAP_sprout-userdebug
Which would you like? [aosp_arm-eng] 5
In file included from build/make/core/config.mk:313:
In file included from build/make/core/envsetup.mk:312:
In file included from build/make/target/product/telephony_vendor.mk:24:
device/hmd/CAP_sprout/device.mk:24: error: PRODUCT_STATIC_BOOT_CONTROL_HAL is obsolete. Use shared library module instead. See https://android.googlesource.com/platform/build/+/master/Changes.md#PRODUCT_STATIC_BOOT_CONTROL_HAL.
16:01:34 dumpvars failed with: exit status 1
Device CAP_sprout not found. Attempting to retrieve device repository from TeamWin Github (http://github.com/TeamWin).
Repository for CAP_sprout not found in the TeamWin Github repository list.
If this is in error, you may need to manually add it to your .repo/local_manifests/roomservice.xml
In file included from build/make/core/config.mk:313:
In file included from build/make/core/envsetup.mk:312:
In file included from build/make/target/product/telephony_vendor.mk:24:
device/hmd/CAP_sprout/device.mk:24: error: PRODUCT_STATIC_BOOT_CONTROL_HAL is obsolete. Use shared library module instead. See https://android.googlesource.com/platform/build/+/master/Changes.md#PRODUCT_STATIC_BOOT_CONTROL_HAL.
16:01:35 dumpvars failed with: exit status 1
In file included from build/make/core/config.mk:313:
In file included from build/make/core/envsetup.mk:312:
In file included from build/make/target/product/telephony_vendor.mk:24:
device/hmd/CAP_sprout/device.mk:24: error: PRODUCT_STATIC_BOOT_CONTROL_HAL is obsolete. Use shared library module instead. See https://android.googlesource.com/platform/build/+/master/Changes.md#PRODUCT_STATIC_BOOT_CONTROL_HAL.
16:01:35 dumpvars failed with: exit status 1
** Don't have a product spec for: 'omni_CAP_sprout'
** Do you have the right repo manifest?
========================================================================
new error:
device/hmd/CAP_sprout/Android.mk:13: error: cannot assign to readonly variable: PRODUCT_PACKAGES
16:15:14 ckati failed with: exit status 1
how can i fix it??
PRODUCT_PACKAGES += \
[email protected] \
fastbootd

MEYSAMKIA said:
hiya
after enter this command :
" repo sync -c --no-clone-bundle --no-tags --optimized-fetch --prune --force-sync -j8 "​i got this error:
Usage: repo sync [<project>...]
main.py: error: option -j: invalid integer value: '8\u200b'
i think its about java , but java works fine.
================================================================================
gitpod /workspace/Nokia-5.3-twrp-device-tree (main) $ lunch
You're building on Linux
Lunch menu... pick a combo:
1. aosp_arm-eng
2. aosp_arm64-eng
3. aosp_x86-eng
4. aosp_x86_64-eng
5. omni_CAP_sprout-eng
6. omni_CAP_sprout-user
7. omni_CAP_sprout-userdebug
Which would you like? [aosp_arm-eng] 5
In file included from build/make/core/config.mk:313:
In file included from build/make/core/envsetup.mk:312:
In file included from build/make/target/product/telephony_vendor.mk:24:
device/hmd/CAP_sprout/device.mk:24: error: PRODUCT_STATIC_BOOT_CONTROL_HAL is obsolete. Use shared library module instead. See https://android.googlesource.com/platform/build/+/master/Changes.md#PRODUCT_STATIC_BOOT_CONTROL_HAL.
16:01:34 dumpvars failed with: exit status 1
Device CAP_sprout not found. Attempting to retrieve device repository from TeamWin Github (http://github.com/TeamWin).
Repository for CAP_sprout not found in the TeamWin Github repository list.
If this is in error, you may need to manually add it to your .repo/local_manifests/roomservice.xml
In file included from build/make/core/config.mk:313:
In file included from build/make/core/envsetup.mk:312:
In file included from build/make/target/product/telephony_vendor.mk:24:
device/hmd/CAP_sprout/device.mk:24: error: PRODUCT_STATIC_BOOT_CONTROL_HAL is obsolete. Use shared library module instead. See https://android.googlesource.com/platform/build/+/master/Changes.md#PRODUCT_STATIC_BOOT_CONTROL_HAL.
16:01:35 dumpvars failed with: exit status 1
In file included from build/make/core/config.mk:313:
In file included from build/make/core/envsetup.mk:312:
In file included from build/make/target/product/telephony_vendor.mk:24:
device/hmd/CAP_sprout/device.mk:24: error: PRODUCT_STATIC_BOOT_CONTROL_HAL is obsolete. Use shared library module instead. See https://android.googlesource.com/platform/build/+/master/Changes.md#PRODUCT_STATIC_BOOT_CONTROL_HAL.
16:01:35 dumpvars failed with: exit status 1
** Don't have a product spec for: 'omni_CAP_sprout'
** Do you have the right repo manifest?
========================================================================
new error:
device/hmd/CAP_sprout/Android.mk:13: error: cannot assign to readonly variable: PRODUCT_PACKAGES
16:15:14 ckati failed with: exit status 1
how can i fix it??
PRODUCT_PACKAGES += \
[email protected] \
fastbootd
Click to expand...
Click to collapse
Contact in telegram
@samsung_galaxy_m01_a01_m11_a11

Related

[DEV][Info] BoardConfig.mk for kernel developer and AOSP (platform) developer

So this is a major news for devs, if you found your AOSP / CM build doesn't work, make sure that you have the following line enabled if you are using TARGET_ARCH_VARIANT := armv7-a :
TARGET_ARCH_VARIANT_FPU := vfpv3-d16
This is due to a bug in armv7-a.mk in CM repo that automatically set FPU to neno for no reason. (btw, I have already reported the bug, so lets see it get patched or not later)
btw DO NOT change the line of TARGET_ARCH_VARIANT_FPU to vfpv3, otherwise your CM / AOSP build will not boot @ all.
The following BoardConfig.mk is used for compiling CWM on my kernels. And it is working for compiling CWM on my machine. You can edit the line such as USE_CAMERA_STUB, TARGET_NO_RADIOIMAGE or TARGET_PREBUILT_KERNEL on your own. However do not edit the line since TARGET_CPU_ABI to BOARD_FLASH_BLOCK_SIZE as they are vital and already right for our I9103.
Code:
LOCAL_PATH := $(call my-dir)
#USE_CAMERA_STUB := true
# inherit from the proprietary version
-include vendor/samsung/I9103/BoardConfigVendor.mk
TARGET_CPU_ABI := armeabi-v7a
TARGET_CPU_ABI2 := armeabi
TARGET_ARCH_VARIANT := armv7-a
TARGET_ARCH_VARIANT_CPU := cortex-a9
# DO NOT change the following line to vfpv3 as it is not really supported on our device!
TARGET_ARCH_VARIANT_FPU := vfpv3-d16
TARGET_CPU_SMP := true
ARCH_ARM_HAVE_TLS_REGISTER := true
TARGET_HAVE_TEGRA_ERRATA_657451 := true
TARGET_BOARD_PLATFORM := tegra
TARGET_BOARD_PLATFORM_GPU := tegra # Useless for CM7 build
TARGET_BOOTLOADER_BOARD_NAME := n1
TARGET_USERIMAGES_USE_EXT4 := true
BOARD_KERNEL_CMDLINE :=
BOARD_KERNEL_BASE := 0x10000000
BOARD_KERNEL_PAGESIZE := 2048
# fix this up by examining /proc/mtd on a running device
# Boot image size is 16384 x 512 bytes = 8388608
# You can double check it with fdisk -l /dev/block/mmcblk0p8
BOARD_BOOTIMAGE_PARTITION_SIZE := 0x00800000
# Recovery image size is 10240 x 512 bytes = 5242880
# You can double check it with fdisk -l /dev/block/mmcblk0p8
BOARD_RECOVERYIMAGE_PARTITION_SIZE := 0x00500000
# System image size is 1228800 x 512 bytes = 629145600
# You can double check it with fdisk -l /dev/block/mmcblk0p2
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 0x25800000
# User data image size is 4194304 x 512 bytes = 2147483648
# You can double check it with fdisk -l /dev/block/mmcblk0p6
BOARD_USERDATAIMAGE_PARTITION_SIZE := 0x80000000
BOARD_FLASH_BLOCK_SIZE := 2048
TARGET_PREBUILT_KERNEL := device/samsung/I9103/kernel
TARGET_NO_KERNEL := false
TARGET_NO_RECOVERY := false
TARGET_NO_BOOTLOADER := true
TARGET_NO_RADIOIMAGE := true
BOARD_HAS_NO_SELECT_BUTTON := true
# Use this flag if the board has a ext4 partition larger than 2gb
BOARD_HAS_LARGE_FILESYSTEM := true
btw I have an updated version of armv7-a.mk so that it should work on any device using armv7-a even when FPU is not defined. If your toolchain is complaing errors like the switch -mcpu is not working with -march, just remove the -mcpu switch on your own.
Code:
# Configuration for Linux on ARM.
# Generating binaries for the ARMv7-a architecture and higher
#
ARCH_ARM_HAVE_THUMB_SUPPORT := true
ARCH_ARM_HAVE_FAST_INTERWORKING := true
ARCH_ARM_HAVE_64BIT_DATA := true
ARCH_ARM_HAVE_HALFWORD_MULTIPLY := true
ARCH_ARM_HAVE_CLZ := true
ARCH_ARM_HAVE_FFS := true
ARCH_ARM_HAVE_ARMV7A := true
ifeq ($(strip $(TARGET_ARCH_VARIANT_FPU)),)
ARCH_ARM_HAVE_VFP := false
else
ARCH_ARM_HAVE_VFP := true
endif
ifeq ($(strip $(TARGET_ARCH_VARIANT_FPU)),neon)
ARCH_ARM_HAVE_NEON := true
endif
ifeq ($(strip $(TARGET_CPU_SMP)),true)
ARCH_ARM_HAVE_TLS_REGISTER := true
endif
arch_variant_cflags := \
-march=armv7-a \
-mtune=$(strip $(TARGET_ARCH_VARIANT_CPU)) \
-mcpu=$(strip $(TARGET_ARCH_VARIANT_CPU)) \
-D__ARM_ARCH_7__ \
-D__ARM_ARCH_7A__
ifeq ($(strip $(ARCH_ARM_HAVE_VFP)),true)
ifeq ($(strip $(ARCH_ARM_HAVE_NEON)),true)
arch_variant_cflags += -D__ARM_NEON__ -D__ARM_HAVE_NEON
else
arch_variant_cflags += -D__VFP_FP__ -D__ARM_HAVE_VFP
endif
arch_variant_cflags += -mfloat-abi=softfp -mfpu=$(strip $(TARGET_ARCH_VARIANT_FPU))
else
arch_variant_cflags += -mfloat-abi=soft
endif
ifeq ($(strip $(TARGET_ARCH_VARIANT_CPU)),cortex-a8)
arch_variant_ldflags := \
-Wl,--fix-cortex-a8
else
arch_variant_ldflags :=
endif
In addition, please look at the required errata for building stuffs on our device.
As our device is using an epic old ARM cpu, it means that it may have errata inside. Errata means errors on the hardware that cannot be fixed, however can be bypassed with errata patch.
In conjunction with finding the required errata patch, this is our cpuinfo
cat /proc/cpuinfo
Processor : ARMv7 Processor rev 0 (v7l)
processor : 0
BogoMIPS : 999.42
processor : 1
BogoMIPS : 999.42
Features : swp half thumb fastmult vfp edsp vfpv3 vfpv3d16
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x1
CPU part : 0xc09
CPU revision : 0
Hardware : n1
Revision : 000d
Serial : 304d11d0943807ae
So next time when you try to make a custom kernel or port a kernel to this device, keep an eye on those errata please. Nvidia git sometimes made patch for those erratas as well.
For example, TARGET_HAVE_TEGRA_ERRATA_657451 is a config value telling that the src code to enable errata #657451 patch for our device. (And I have enabled that in our BoardConfig.mk already.)
Now though it sounds sad it works, but in that case does LG O2X's ARM also belong to our family of devices ?
.....that just kinda destroyed my hopes
This was sent from a Galaxy Ace. Problem?
'cooleagle' said:
Now though it sounds sad it works, but in that case does LG O2X's ARM also belong to our family of devices ?
Click to expand...
Click to collapse
its got the same AP20H tegra 2 processor i think
Because of this is it difficult to get ics .....
How its going to effect us......
according to Google policy company should provide s/w updates atleast for 16 months ....... So samy should provide ics update for us at that time they should correct the algorithms .... i am totally disturbed after seeing this.......
Sent from my GT-I9103 using XDA
mj.vikram said:
Because of this is it difficult to get ics .....
How its going to effect us......
according to Google policy company should provide s/w updates atleast for 16 months ....... So samy should provide ics update for us at that time they should correct the algorithms .... i am totally disturbed after seeing this.......
Sent from my GT-I9103 using XDA
Click to expand...
Click to collapse
Don't lose sleep over it. S2's design was also started in 2010.
We'll get ICS as LG O2X which has the same SOC is going to get it, moreover Samsung India has confirmed that this device is capable of being upgraded to ICS so sit tight till it arrives.
Please check the first topic again, it includes a specific change to BoardConfig.mk that allows anyone to build AOSP / CM for our board. Otherwise your CM7 won't boot from that.
UnknownzD said:
Please check the first topic again, it includes a specific change to BoardConfig.mk that allows anyone to build AOSP / CM for our board. Otherwise your CM7 won't boot from that.
Click to expand...
Click to collapse
Damn! you're good!
Where have you been all this time!
Thanks for all this good info!
UnknownzD you are Rolling in the Deep !
Hope to hear lots of goods news & info from you in near future man, keep them coming buddy . . . !
Cheers ! :beer:
FranzJesus said:
Damn! you're good!
Where have you been all this time!
Thanks for all this good info!
Click to expand...
Click to collapse
In case your build still doesn't work, create a armv7-a-test.mk file under /build/core/combo/arch/arm/ and then place the following lines into it. This is the working one that I can built CWM on top of it.
---------------------------------------------------------------------------
# Configuration for Linux on ARM.
# Generating binaries for the ARMv5TE architecture and higher
#
ARCH_ARM_HAVE_THUMB_SUPPORT := true
ARCH_ARM_HAVE_FAST_INTERWORKING := true
ARCH_ARM_HAVE_64BIT_DATA := true
ARCH_ARM_HAVE_HALFWORD_MULTIPLY := true
ARCH_ARM_HAVE_CLZ := true
ARCH_ARM_HAVE_FFS := true
ARCH_ARM_HAVE_ARMV7A := true
#ARCH_ARM_HAVE_VFP := true
# Note: Hard coding the 'tune' value here is probably not ideal,
# and a better solution should be found in the future.
#
arch_variant_cflags := \
-march=armv7-a \
-mtune=$(strip $(TARGET_ARCH_VARIANT_CPU)) \
-mcpu=$(strip $(TARGET_ARCH_VARIANT_CPU)) \
# -mfloat-abi=softfp \
# -mfpu=$(strip $(TARGET_ARCH_VARIANT_FPU)) \
-D__ARM_ARCH_7__ \
-D__ARM_ARCH_7A__
# -D__ARM_ARCH_5__ \
# -D__ARM_ARCH_5T__ \
# -D__ARM_ARCH_5E__ \
# -D__ARM_ARCH_5TE__
---------------------------------------------------------------------------
btw, you have to put the the first 2 lines into your BoardConfig.mk in order to enable it. The third line is optional unless you want enable the vfp calculation (which should be the one causing problem).
TARGET_ARCH_VARIANT := armv7-a-test
TARGET_ARCH_VARIANT_CPU := cortex-a9
TARGET_ARCH_VARIANT_FPU := vfpv3
I am still testing on what caused the problem. Seems like the vfp (floating point calculation) has a strong relationship to the halt problem.
Edited : Okay I have confirmed, the VFP part should be the one causing issue. You may want to disable it first and I will work that out later (to find where the bug is).
Where have you been Mate?? Awesome Work!! Continue!!
So I have figured out our right BoardConfig.mk. Do not change the TARGET_ARCH_VARIANT_FPU, otherwise the boot.img won't boot @ all.
LOCAL_PATH := $(call my-dir)
#USE_CAMERA_STUB := true
# inherit from the proprietary version
-include vendor/samsung/I9103/BoardConfigVendor.mk
TARGET_CPU_ABI := armeabi-v7a
TARGET_CPU_ABI2 := armeabi
TARGET_ARCH_VARIANT := armv7-a
TARGET_ARCH_VARIANT_CPU := cortex-a9
# DO NOT change the following line to vfpv3 as it is not supported on our device!
TARGET_ARCH_VARIANT_FPU := vfpv3-d16
TARGET_CPU_SMP := true
ARCH_ARM_HAVE_TLS_REGISTER := true
TARGET_HAVE_TEGRA_ERRATA_657451 := true
TARGET_BOARD_PLATFORM := tegra
TARGET_BOARD_PLATFORM_GPU := tegra # Useless for CM7 build
TARGET_BOOTLOADER_BOARD_NAME := n1
TARGET_USERIMAGES_USE_EXT4 := true
BOARD_KERNEL_CMDLINE :=
BOARD_KERNEL_BASE := 0x10000000
BOARD_KERNEL_PAGESIZE := 2048
# fix this up by examining /proc/mtd on a running device
# Boot image size is 16384 x 512 bytes = 8388608
# You can double check it with fdisk -l /dev/block/mmcblk0p8
BOARD_BOOTIMAGE_PARTITION_SIZE := 0x00800000
# Recovery image size is 10240 x 512 bytes = 5242880
# You can double check it with fdisk -l /dev/block/mmcblk0p8
BOARD_RECOVERYIMAGE_PARTITION_SIZE := 0x00500000
# System image size is 1228800 x 512 bytes = 629145600
# You can double check it with fdisk -l /dev/block/mmcblk0p2
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 0x25800000
# User data image size is 4194304 x 512 bytes = 2147483648
# You can double check it with fdisk -l /dev/block/mmcblk0p6
BOARD_USERDATAIMAGE_PARTITION_SIZE := 0x80000000
BOARD_FLASH_BLOCK_SIZE := 2048
TARGET_PREBUILT_KERNEL := device/samsung/I9103/kernel
TARGET_NO_KERNEL := false
TARGET_NO_RECOVERY := false
TARGET_NO_BOOTLOADER := true
TARGET_NO_RADIOIMAGE := true
BOARD_HAS_NO_SELECT_BUTTON := true
# Use this flag if the board has a ext4 partition larger than 2gb
BOARD_HAS_LARGE_FILESYSTEM := true
btw the errata fix is for our cpu and is only needed on userland (non-kernel side binary), do not remove that errata fix otherwise the SMP part doesn't work. It requires the errata patch to make it working.
UnknownzD said:
So I have figured out our right BoardConfig.mk. Do not change the TARGET_ARCH_VARIANT_FPU, otherwise the boot.img won't boot @ all.
LOCAL_PATH := $(call my-dir)
#USE_CAMERA_STUB := true
# inherit from the proprietary version
-include vendor/samsung/I9103/BoardConfigVendor.mk
TARGET_CPU_ABI := armeabi-v7a
TARGET_CPU_ABI2 := armeabi
TARGET_ARCH_VARIANT := armv7-a
TARGET_ARCH_VARIANT_CPU := cortex-a9
# DO NOT change the following line to vfpv3 as it is not supported on our device!
TARGET_ARCH_VARIANT_FPU := vfpv3-d16
TARGET_CPU_SMP := true
ARCH_ARM_HAVE_TLS_REGISTER := true
TARGET_HAVE_TEGRA_ERRATA_657451 := true
TARGET_BOARD_PLATFORM := tegra
TARGET_BOARD_PLATFORM_GPU := tegra # Useless for CM7 build
TARGET_BOOTLOADER_BOARD_NAME := n1
TARGET_USERIMAGES_USE_EXT4 := true
BOARD_KERNEL_CMDLINE :=
BOARD_KERNEL_BASE := 0x10000000
BOARD_KERNEL_PAGESIZE := 2048
# fix this up by examining /proc/mtd on a running device
# Boot image size is 16384 x 512 bytes = 8388608
# You can double check it with fdisk -l /dev/block/mmcblk0p8
BOARD_BOOTIMAGE_PARTITION_SIZE := 0x00800000
# Recovery image size is 10240 x 512 bytes = 5242880
# You can double check it with fdisk -l /dev/block/mmcblk0p8
BOARD_RECOVERYIMAGE_PARTITION_SIZE := 0x00500000
# System image size is 1228800 x 512 bytes = 629145600
# You can double check it with fdisk -l /dev/block/mmcblk0p2
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 0x25800000
# User data image size is 4194304 x 512 bytes = 2147483648
# You can double check it with fdisk -l /dev/block/mmcblk0p6
BOARD_USERDATAIMAGE_PARTITION_SIZE := 0x80000000
BOARD_FLASH_BLOCK_SIZE := 2048
TARGET_PREBUILT_KERNEL := device/samsung/I9103/kernel
TARGET_NO_KERNEL := false
TARGET_NO_RECOVERY := false
TARGET_NO_BOOTLOADER := true
TARGET_NO_RADIOIMAGE := true
BOARD_HAS_NO_SELECT_BUTTON := true
# Use this flag if the board has a ext4 partition larger than 2gb
BOARD_HAS_LARGE_FILESYSTEM := true
Click to expand...
Click to collapse
Compiling a CM7 build right now!!!
Will be back soon...
Thank you soo much!!
FranzJesus said:
Compiling a CM7 build right now!!!
Will be back soon...
Thank you soo much!!
Click to expand...
Click to collapse
If you guys want to see the difference between the old armv7-a.mk and my version, look it here : http://review.cyanogenmod.com/#/c/15478/1/core/combo/arch/arm/armv7-a.mk
Now I need some time to finish my CWM, by working on the ramdisk.
I have a minor update on the first post as changing the line
TARGET_ARCH_VARIANT_FPU := vfpv3
to
TARGET_ARCH_VARIANT_FPU := vfpv3-d16
That is because our device won't boot with the code compiled with -mfpu=vfpv3. Please refer to the first post for more info.
Wow you're good . My hat's off to you sire
This was sent from a Galaxy Ace. Problem?
Will the errata patch update the ARMv7 revision ?
This was sent from a Galaxy Ace. Problem?
EmoBoiix3 said:
Will the errata patch update the ARMv7 revision ?
This was sent from a Galaxy Ace. Problem?
Click to expand...
Click to collapse
The errata patch does not update the ARM revision (if you are talking the one captured from cpuinfo). That is because basically all the erratas cannot be patched as it is a hardware problem or bug. However, we can avoid such thing happens (such as errata in race condition) by applying the so called 'patch'. Therefore those patches are NOT fixing the problem at all, instead they just try to avoid it.
UnknownzD said:
The errata patch does not update the ARM revision (if you are talking the one captured from cpuinfo). That is because basically all the erratas cannot be patched as it is a hardware problem or bug. However, we can avoid such thing happens (such as errata in race condition) by applying the so called 'patch'. Therefore those patches are NOT fixing the problem at all, instead they just try to avoid it.
Click to expand...
Click to collapse
Ohh , you meant by workarounds !

[GUIDE] How to compile PhilZ Touch 6 Recovery for ARM android devices using BBQLinux

[GUIDE]
How to compile PhilZ Touch 6 Recovery
CWM Advanced Edition 6.x
With Part-Source using prebuilt kernel for any android devices
Intro
PhilZ Touch is developed by XDA Recognized Developer Phil3759, it is open source & you can compile it on your own.
Video Preview
You don't need to have a PHD in computer science to build from source.
This guide details the whole process for building PhilZ Touch recovery for MediaTek SoC & it should work on any other android devices that uses ARM architecture.
This guide's aim is to provide enthusiast who would like to try their hands on building PhilZ Touch from source but was turn off by the huge cm repo size. There are hundreds if not thousands of android devices that doesn't have CyanogenMod BUT you can still build PhilZ Touch recovery !
Many have no choice but to download full cm source & many has successfully built PhilZ Touch in spite of it.
As of today the month of Aug 2014, cm-11.0 repo has grow to 473 projects with the total of more than 12GB & this is only the compress hidden folder .repo
When the files are extracted, the whole ~/cm11 folder will be double the size !
Now you don't have to worry about that anymore, the projects for building PhilZ Touch has been identified & you only need 40 of the cm projects instead of the complete 473 & the size of .repo now for building PhilZ Touch is only 1.7GB. Conclusion, you don't need the extra 10.5GB from full source to build PhilZ Touch since your device doesn't have CyanogenMod !
Most important requirement : Willingness to learn, READ, continue reading, continue trying, stop asking questions all the time as most of your questions has already been answered, google it & most importantly, self-taught by looking at various example here. Look for the same SoC closes siblings to your device for recovery.fstab & BoardConfig.mk & compare it with yours.
However, when you have already gone through all that & still couldn't find an answer then ask or you'll never know . . . :laugh:
Always refer to the main thread here plenty of infos . . . :good:
Step 1
How to start
There are already plenty of guides so i won't touch on it, refer to the below on how to get started . . .
How to install Virtualbox on Windows
Download the latest x64 BBQLinux
Getting Started with BBQLinux
WARNING
Always make a backup of your device Factory ROM first with MTK Droid Root & Tools, my old guide here
Lock Bootloaders device then you can forget about building PhilZ Touch from source . . . :laugh:
Step 2
Syncing Part-Source
Updates -> Refer to this post . . .
Download & unzip the script to your [HOME]. Start Mate Terminal & follow below command.
Code:
chmod 777 ~/PhilZ
./PhilZ [COLOR="Red"]<- Execute it by typing [COLOR="Blue"]dot forward-slash PhilZ[/COLOR][/COLOR]
Screenshot
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
You can stop the script at any time by pressing Ctrl + z
To resume then execute the script again.
Misc Tips
Pls be patient, first sync will take quite awhile depending on your ISP
Screenshot of Part-Source script when finish syncing
You can also drag & drop it from your host OS
View attachment 2918982
Pull your MTK device boot.img directly to BBQLinux then you have to enable the USB port on Virtualbox first.
Check your MT65xx_Android_scatter.txt for boot or recovery partition size
Code:
- partition_index: SYS9
partition_name: BOOTIMG
file_name: [COLOR="blue"]boot.img[/COLOR]
is_download: true
type: NORMAL_ROM
linear_start_addr: 0x1DA0000
physical_start_addr: 0x1DA0000
partition_size: 0x[COLOR="blue"]A00000[/COLOR]
region: EMMC_USER
storage: HW_STORAGE_EMMC
boundary_check: true
is_reserved: false
operation_type: UPDATE
reserve: 0x00
- partition_index: SYS10
partition_name: RECOVERY
file_name: [COLOR="blue"]recovery.img[/COLOR]
is_download: true
type: NORMAL_ROM
linear_start_addr: 0x27A0000
physical_start_addr: 0x27A0000
partition_size: [COLOR="Blue"]0x1400000[/COLOR]
region: EMMC_USER
storage: HW_STORAGE_EMMC
boundary_check: true
is_reserved: false
operation_type: UPDATE
reserve: 0x00
You can also use adb shell cat /proc/dumchar_info to check too.
Code:
[COLOR="blue"]Part_Name Size StartAddr Type MapTo[/COLOR]
bootimg 0x0000000000[COLOR="blue"]A00000[/COLOR] 0x0000000001DA0000 2 /dev/block/mmcblk0
recovery 0x000000000[COLOR="blue"]1400000[/COLOR] 0x00000000027A0000 2 /dev/block/mmcblk0
Use Calculator or Online Hex to Dec & convert it to decimal.
0xA00000 = 10485760
0x1400000 = 20971520
Click to expand...
Click to collapse
Code:
adb shell "dd if=/dev/[COLOR="Blue"]bootimg[/COLOR] of=/mnt/sdcard/[COLOR="blue"]boot.img[/COLOR] bs=[COLOR="blue"]10485760[/COLOR] count=1"
adb pull /mnt/sdcard/[COLOR="blue"]boot.img[/COLOR]
adb shell rm /mnt/sdcard/[COLOR="blue"]boot.img[/COLOR]
[COLOR="blue"]OR[/COLOR]
adb shell "dd if=/dev/[COLOR="blue"]recovery[/COLOR] of=/mnt/sdcard/[COLOR="blue"]recovery.img[/COLOR] bs=[COLOR="blue"]20971520[/COLOR] count=1"
adb pull /mnt/sdcard/[COLOR="blue"]recovery.img[/COLOR]
adb shell rm /mnt/sdcard/[COLOR="blue"]recovery.img[/COLOR]
Step 3
Setting up the files
Now that you have sync the Part-Source, you will need to use mkvendor.sh to generate the skeleton files for building PhilZ Touch.
Copy your device boot.img or recovery.img to [HOME]
cd ~/cm11
build/tools/device/mkvendor.sh vendor_name device_name ~/boot.img
OR
build/tools/device/mkvendor.sh vendor_name device_name ~/recovery.img
Eg. build/tools/device/mkvendor.sh Lenovo S939 ~/boot.img
Click to expand...
Click to collapse
mkvendor.sh will auto-generate eight files for your device needed for building PhilZ Touch
AndroidBoard.mk
AndroidProducts.mk
BoardConfig.mk
cm.mk
device_device_name.mk
kernel
recovery.fstab
system.prop
Click to expand...
Click to collapse
Screenshot of mkvendor.sh
You need to edit the files as listed below only. Below are examples, do not copy & paste, refer to here & here.
Put all PhilZ Touch build flags at the bottom of the BoardConfig.mk under a heading of #PhilZ Touch build flags for easy reference
~/cm11/device/Lenovo/S939/BoardConfig.mk
Code:
USE_CAMERA_STUB := true
# inherit from the proprietary version
-include vendor/Lenovo/S939/BoardConfigVendor.mk
TARGET_ARCH := arm
TARGET_NO_BOOTLOADER := true
TARGET_BOARD_PLATFORM := unknown [COLOR="red"]<- Non-critical, you can either leave it as it is or change to any name[/COLOR]
TARGET_CPU_ABI := armeabi-v7a
TARGET_CPU_ABI2 := armeabi
TARGET_ARCH_VARIANT := armv7-a-neon
TARGET_CPU_VARIANT := cortex-a7 [COLOR="red"]<- Critical, either cortex-a5, cortex-a7, cortex-a8, cortex-a9, cortex-a15, krait, scorpion or generic[/COLOR]
TARGET_CPU_SMP := true
ARCH_ARM_HAVE_TLS_REGISTER := true
TARGET_BOOTLOADER_BOARD_NAME := S939
BOARD_KERNEL_CMDLINE :=
BOARD_KERNEL_BASE := 0x10000000
BOARD_KERNEL_PAGESIZE := 2048
# fix this up by examining /proc/mtd on a running device
BOARD_BOOTIMAGE_PARTITION_SIZE := 0x105c0000
BOARD_RECOVERYIMAGE_PARTITION_SIZE := [COLOR="Blue"]0x1400000[/COLOR] [COLOR="red"]<- Change this accordingly to your recovery size so that build will error when its oversize[/COLOR]
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 0x105c0000
BOARD_USERDATAIMAGE_PARTITION_SIZE := 0x105c0000
BOARD_FLASH_BLOCK_SIZE := 131072
TARGET_PREBUILT_KERNEL := device/Lenovo/S939/kernel
BOARD_HAS_NO_SELECT_BUTTON := true
[COLOR="Blue"]#PhilZ Touch build flags for MTK[/COLOR]
TARGET_COMMON_NAME := Lenovo S939
BOARD_USE_MTK_LAYOUT := true
BOARD_MTK_BOOT_LABEL := "/bootimg"
BOARD_USE_NTFS_3G := false
BRIGHTNESS_SYS_FILE := "/sys/class/leds/lcd-backlight/brightness"
TARGET_USE_CUSTOM_LUN_FILE_PATH := "/sys/devices/virtual/android_usb/android0/f_mass_storage/lun%d/file" [COLOR="Red"]<- Credits to [B][COLOR="Black"]RD[/COLOR][/B] [URL="https://github.com/chrmhoffmann/android_device_wiko_stairway/blob/cm-11.0/BoardConfig.mk#L79"][U]chrmhoffmann[/U][/URL][/COLOR]
TARGET_SCREEN_HEIGHT := 1280
TARGET_SCREEN_WIDTH := 720
BOARD_CUSTOM_BOOTIMG_MK := device/Lenovo/S939/boot.mk [COLOR="Red"]<- Credits to [B][COLOR="Black"]RD[/COLOR][/B] [URL="http://forum.xda-developers.com/showthread.php?t=2676086"][U]chrmhoffmann[/U][/URL]. [B][COLOR="Black"]MTK[/COLOR][/B] uses custom [COLOR="Blue"]mkbootimg[/COLOR][/COLOR]
~/cm11/device/Lenovo/S939/cm.mk
Code:
## Specify phone tech before including full_phone
$(call inherit-product, vendor/cm/config/gsm.mk)
# Release name
PRODUCT_RELEASE_NAME := S939
# Inherit some common CM stuff.
[COLOR="Red"]#[/COLOR]$(call inherit-product, vendor/cm/config/common_full_phone.mk) [COLOR="red"]<- Disable it to use this Part-Source or ERROR 1. You don't need this for building [COLOR="blue"]PhilZ Touch[/COLOR][/COLOR]
# Inherit device configuration
$(call inherit-product, device/Lenovo/S939/device_S939.mk)
## Device identifier. This must come after all inclusions
PRODUCT_DEVICE := S939
PRODUCT_NAME := cm_S939
PRODUCT_BRAND := Lenovo
PRODUCT_MODEL := S939
PRODUCT_MANUFACTURER := Lenovo
~/cm11/device/Lenovo/S939/recovery.fstab
Code:
# Android fstab file.
# The filesystem that contains the filesystem checker binary (typically /system) cannot
# specify MF_CHECK, and must come before any filesystems that do specify MF_CHECK
/dev/bootimg /bootimg emmc defaults defaults
/dev/recovery /recovery emmc defaults defaults
/dev/uboot /uboot emmc defaults defaults
/[email protected] /system ext4 ro,noatime wait
/[email protected] /cache ext4 noatime,nosuid,nodev,noauto_da_alloc wait
/[email protected] /data ext4 noatime,nosuid,nodev,noauto_da_alloc wait,encryptable=footer
/devices/platform/mtk-msdc.0/mmc_host/mmc0 auto vfat defaults voldmanaged=sdcard0:[COLOR="Blue"]4[/COLOR] [COLOR="red"]<- Change accordingly to your [B][COLOR="Black"]MTK[/COLOR][/B] fat partition no.[/COLOR]
/devices/platform/mtk-msdc.1/mmc_host/mmc1 auto vfat defaults voldmanaged=sdcard1:auto
~/cm11/device/Lenovo/S939/device_S939.mk
Code:
$(call inherit-product, $(SRC_TARGET_DIR)/product/languages_full.mk)
# The gps config appropriate for this device
[COLOR="Red"]#[/COLOR]$(call inherit-product, device/common/gps/gps_us_supl.mk) [COLOR="Red"]<- Disable it to use this Part-Source or ERROR 1.[/COLOR]
$(call inherit-product-if-exists, vendor/Lenovo/S939/S939-vendor.mk)
DEVICE_PACKAGE_OVERLAYS += device/Lenovo/S939/overlay
LOCAL_PATH := device/Lenovo/S939
ifeq ($(TARGET_PREBUILT_KERNEL),)
LOCAL_KERNEL := $(LOCAL_PATH)/kernel
else
LOCAL_KERNEL := $(TARGET_PREBUILT_KERNEL)
endif
PRODUCT_COPY_FILES +=
$(LOCAL_KERNEL):kernel
$(call inherit-product, build/target/product/full.mk)
PRODUCT_BUILD_PROP_OVERRIDES += BUILD_UTC_DATE=0
PRODUCT_NAME := full_S939
PRODUCT_DEVICE := S939
[STRIKE][COLOR="Blue"]#PhilZ Touch[/COLOR]
PRODUCT_COPY_FILES +=
$(LOCAL_PATH)/recovery.fstab:recovery/root/fstab.[COLOR="blue"]mt6592[/COLOR] [COLOR="Red"]<- adb shell getprop ro.hardware to identify it.[/STRIKE][/color]
Updates
Above PRODUCT_COPY_FILES doesn't work anymore, just create a new folder recovery/root at your device tree & copy fstab.${ro.hardware} to it & it'll auto copy fstab.${ro.hardware} to root of ramdisk . For this Eg. : ~/cm11/device/Lenovo/S939/recovery/root/fstab.mt6592. Credits : Master Shifu Carliv
Custom mkbootimg
~/cm11/device/Lenovo/S939/boot.mk
Credits to Chris Hoffmann AKA RD chrmhoffmann , now you can automate the whole build process, no need to unpack/ repack after building !
Code:
define make_header
perl -e 'print pack("a4 L a32 a472", "x88x16x88x58", $$ARGV[0], $$ARGV[1], "xFF"x472)' $(1) $(2) > $(3)
endef
$(recovery_ramdisk).mtk.header: $(recovery_ramdisk)
size=$$($(call get-file-size,$(recovery_ramdisk)));
$(call make_header, $$((size)), "RECOVERY", [email protected])
$(recovery_ramdisk).mtk: $(MKBOOTIMG) $(recovery_ramdisk).mtk.header
$(call pretty,"Adding MTK header to recovery ramdisk.")
cat $(recovery_ramdisk).mtk.header $(recovery_ramdisk) > [email protected]
INTERNAL_MTK_RECOVERYIMAGE_ARGS :=
--kernel $(PRODUCT_OUT)/[COLOR="Blue"]kernel[/COLOR]
--ramdisk $(recovery_ramdisk).mtk
$(INSTALLED_RECOVERYIMAGE_TARGET): $(MKBOOTIMG)
$(recovery_ramdisk).mtk $(PRODUCT_OUT)/[COLOR="Blue"]kernel[/COLOR]
@echo -e ${CL_CYN}"----- Making recovery image ------"${CL_RST}
$(MKBOOTIMG) $(INTERNAL_MTK_RECOVERYIMAGE_ARGS)
$(BOARD_MKBOOTIMG_ARGS) --output [email protected]
$(hide) $(call assert-max-image-size,[email protected],
$(BOARD_RECOVERYIMAGE_PARTITION_SIZE),raw)
@echo -e ${CL_CYN}"Made recovery image: [email protected]"${CL_RST}
Step 4
Start Building it !
Below are the commands to build, thats it !
Code:
cd ~/cm11
export USE_CCACHE=1
prebuilts/misc/linux-x86/ccache/ccache -M 50G
source build/envsetup.sh
lunch cm_[COLOR="Blue"]S939[/COLOR]-eng [COLOR="Red"]<- Change accordingly to your [COLOR="Blue"]device_name[/COLOR][/COLOR]
make -j8 recoveryimage
Video Preview
Misc Tips
First build will take quite awhile, pls be patient however subsequence build will be quick b'cos of ccache.
if you hate cli like i do then you can automate it, no need to type it every time since you are building for the same device that you own.
Use geany & fill in the commands accordingly to your device.
Make it executable by right-click at the file name -> Properties -> Permissions -> Put a Tick at Allow executing file as program. Execute it by typing ./s939 or whatever your file name is.
GNU make
GNU make can handle parallel tasks with a -j# argument.
Code:
make -j[COLOR="Blue"]#[/COLOR] recoveryimage
Replace the # with the core count +1, so if you have a dual core it's -j3 and a quad core becomes -j5, etc.
Above is applicable for Native-Boot, on Virtualbox -j8 will work even if you have the old Pentium II except your host OS will lag.
Code:
make -j8 recoveryimage 2>&1 | tee ~/Documents/compile.log
You can also use above command so that you can refer to the compile.log for error checking.
Subsequent Build
Refer to post #2 -> Misc Tips -> Make clean before each recompiling or your flag changes will not be picked up !
Step 5
Push it directly to your device
Screenshot of Build Completed
Screenshot of adb push
Code:
adb push ~/cm11/out/target/product/[COLOR="red"]S939[/COLOR]/recovery.img /mnt/sdcard
adb shell "dd if=/mnt/sdcard/recovery.img of=/dev/recovery"
adb reboot recovery
Misc Tips
You can also use Flashify or Mobileuncle to install it too.
Congrats, now you have compiled & install PhilZ Touch to your MTK device . . . :good:
Notes about 4.4 Kit Kat ROMs and SELinux
Mostly new android devices doesn't provide kernel source so you need to unpack your stock recovery or stock ROM, manually copy file_contexts, property_contexts & seapp_contexts to replace the one at PhilZ Touch, repack it back to fully support SELinux backup & restore.
No need to replace sepolicy as this binary is built with the latest source. On top of that, sepolicy from stock recovery.img mostly are oudated & the size is huge compare to the one from PhilZ Touch but that is entirely up to you whether to use either one.
XDA members that has success in building PhilZ Touch for any other android devices please share your experience & tips here too so that this will help out others when they face the same problem . . . :good:
Source
Confirmed working PhilZ Touch using this guide(mkvendor.sh technique)
All MediaTek(MT65xx) devices
LG L90(msm8226) thanks to shoxxy
Hopefully with this guide, many will be able to kick-start development & port a working PhilZ Touch to their android devices.
Updates 09 April 2016
Its been awhile i've never build PhilZ Touch & as Phil3759 says, her source is solid rock & can be build to support many legacy devices & also new devices too, there has been confirmation that it still works on Android-6.0 Marshmellow too... :good:
Only found out that it doesn't build today & since Phil3759 has retired from this project, as usual, you'll need to revert commits to make it build again....
Code:
cd ~/cm11/system/core
git revert --no-edit [URL="https://github.com/CyanogenMod/android_system_core/commit/6bac0a9fedc711a7dfacd6865ec4923dd332182b"]6bac0a9fedc711a7dfacd6865ec4923dd332182b[/URL]
XDA:DevDB Information
Compile PhilZ Touch from source using BBQLinux Distro, Tool/Utility for all devices (see above for details)
Contributors
yuweng, Phil3759
Source Code: https://github.com/PhilZ-cwm6/philz_touch_cwm6
Version Information
Status: Stable
Current Stable Version: 6.59.0
Stable Release Date: 2014-10-14
Created 2014-08-30
Last Updated 2016-04-08
BoardConfig.mk optional build flags
You can always find all the detail for building PhilZ Touch with optional build flags here & available screen resolutions here . . . :good: If your screen res is not available then choose the one nearest to your device res.
Others undocumented flags such as below can be found here
Code:
BATTERY_LEVEL_PATH
BOARD_POST_UNBLANK_COMMAND
RECOVERY_TOUCHSCREEN_SWAP_XY
RECOVERY_TOUCHSCREEN_FLIP_X
RECOVERY_TOUCHSCREEN_FLIP_Y
BOARD_USE_B_SLOT_PROTOCOL
BOARD_HAS_NO_FB2PNG
BOARD_RECOVERY_BLDRMSG_OFFSET
ENABLE_LOKI_RECOVERY
BOARD_CUSTOM_RECOVERY_KEYMAPPING
BOARD_CUSTOM_RECOVERY_UI
TARGET_USERIMAGES_USE_F2FS
BOARD_USES_BML_OVER_MTD
TARGET_USERIMAGES_USE_F2FS
NO_AROMA_FILE_MANAGER
To use any of these optional build flags, typically is just to add a true at the back
Eg : BOARD_HAS_NO_FB2PNG : = true to your BoardConfig.mk
Flags like BRIGHTNESS_SYS_FILE obviously then you'll need to find out the path ONLY when it doesn't work. For most android devices BRIGHTNESS_SYS_FILE := "/sys/class/backlight/panel/brightness" should work.
Use adb shell su -c "ls -R" > myandroid.txt to find out where is your BRIGHTNESS_SYS_FILE. This command will list out your whole android device directory so it shall give you some clues for the lun file path needed to mount both the sdcard too, typically this will work for most devices.
Below flags is to set different graphics modes that may be needed to correct colours on some devices. Use only when your compiled PhilZ Touch has some weird looking colours or graphics & try one at a time but not all at the same time !
Code:
TARGET_RECOVERY_PIXEL_FORMAT := "BGRA_8888"
TARGET_RECOVERY_PIXEL_FORMAT := "RGBX_8888"
TARGET_RECOVERY_PIXEL_FORMAT := "RGB_565"
Note
If your kernel doesn't support NTFS-3G then you must use this build flag BOARD_USE_NTFS_3G := false or your compiled PhilZ Touch most probably won't boot
recovery.fstab
PhilZ Touch uses recovery.fstab v2 & if you use recovery.fstab v1 then most probably it won't boot.
Always refer to here to look for the closes siblings to your device.
If your device doesn't have any cm tree, you can still find out alot of info from your stock recovery.img. Use Repack Utils or Android Image Kitchen to unpack your stock recovery.img & look at /etc/recovery.fstab to look for clues . . . :good: Unpack PhilZ Touch built by other DEV too & see how they did it . . . google is your best friend so hunt for it.
Typically you'll only need to backup boot, system, data & cache partition only. Later when you have succeeded in building PhilZ Touch for your device then you can add other optional partition. Typically basic recovery.fstab is good enough, it will be able to restore your device back to a working state. You will also need to identify the correct internal & external sdcard path too so that PhilZ Touch can make backup to either one. Note : This is not the same path as BoardConfig.mk refer to this Eg. here.
Use adb commands such as below to find out more about your device partition . . .
Code:
adb shell cat /proc/partitions
adb shell cat /proc/mtd
adb shell cat /proc/emmc
adb shell cat /proc/dumchar_info
adb shell cat /proc/cmdline
adb shell cat /proc/mounts
adb shell cat /proc/devices
adb shell ls -al /dev/block
adb shell df
If your device already have a working CWM then you can also check the existing recovery.fstab by rebooting to recovery & use below command.
Code:
adb shell cat /etc/recovery.fstab
Updates
adb shell su -c "ls -R" > myandroid.txt will tell you alot of infos regarding your device. Just found out on MTK, below can also be use for PhilZ Touch.
Code:
# Android fstab file.
# The filesystem that contains the filesystem checker binary (typically /system) cannot
# specify MF_CHECK, and must come before any filesystems that do specify MF_CHECK
#<src> <mnt_point> <type> <mnt_flags and options> <fs_mgr_flags>
/dev/bootimg /bootimg emmc defaults defaults
/dev/recovery /recovery emmc defaults defaults
/dev/uboot /uboot emmc defaults defaults
[COLOR="Blue"]/dev/block/platform/mtk-sd.0/by-num/p3[/COLOR] /system ext4 ro,noatime wait
[COLOR="blue"]/dev/block/platform/mtk-sd.0/by-num/p4[/COLOR] /cache ext4 noatime,nosuid,nodev,noauto_da_alloc wait
[COLOR="blue"]/dev/block/platform/mtk-sd.0/by-num/p5[/COLOR] /data ext4 noatime,nosuid,nodev,noauto_da_alloc wait,encryptable=footer
[COLOR="blue"]/dev/block/platform/mtk-sd.0/by-num/p6[/COLOR] auto vfat defaults voldmanaged=sdcard0:auto
[COLOR="blue"]/dev/block/platform/mtk-sd.1/by-num/p1[/COLOR] auto vfat defaults voldmanaged=sdcard1:auto
OR
Code:
# Android fstab file.
# The filesystem that contains the filesystem checker binary (typically /system) cannot
# specify MF_CHECK, and must come before any filesystems that do specify MF_CHECK
#<src> <mnt_point> <type> <mnt_flags and options> <fs_mgr_flags>
/dev/bootimg /bootimg emmc defaults defaults
/dev/recovery /recovery emmc defaults defaults
/dev/uboot /uboot emmc defaults defaults
[COLOR="blue"]/dev/block/mmcblk0p3[/COLOR] /system ext4 ro,noatime wait
[COLOR="blue"]/dev/block/mmcblk0p4[/COLOR] /cache ext4 noatime,nosuid,nodev,noauto_da_alloc wait
[COLOR="blue"]/dev/block/mmcblk0p5[/COLOR] /data ext4 noatime,nosuid,nodev,noauto_da_alloc wait,encryptable=footer
[COLOR="blue"]/dev/block/mmcblk0p6[/COLOR] auto vfat defaults voldmanaged=sdcard0:auto
[COLOR="blue"]/dev/block/mmcblk1p1[/COLOR] auto vfat defaults voldmanaged=sdcard1:auto
WARNING
This could be the single most important part when it comes to building PhilZ Touch recovery.
If you wrongly use the path for recovery.fstab the outcome could be disasterous !
GIGO so please do some research first, you have been fore-warned . . .
Part-Source
i wrote this simple script that will only sync the needed projects for building PhilZ Touch, no matter how cm projects grows it will still sync only the 40 needed projects . . .
As mentioned at the script, if it doesn't build then obviously some of the remove projects are needed then look for clues at the build ERROR1.
There are two methods to rectify it. Eg. If the build ERROR1 something about bash . . .
Method 1
Open ~/cm11/.repo/local_manifests/local_manifest.xml, look for any keyword bash & add remarks as below or just delete that whole line, do a repo sync again & it will download & auto-extract it to ~/cm11/external/bash
Code:
[COLOR="blue"]<!--[/COLOR] <remove-project name="CyanogenMod/android_external_bash" /> [COLOR="blue"]-->[/COLOR]
Method 2
Open PhilZ script, add as below to Line 22, run the script again & it will do everything automatically for you . . .
Code:
grep -v [COLOR="blue"]bash[/COLOR] ~/Documents/x>~/Documents/x.tmp;mv ~/Documents/x.tmp ~/Documents/x
You can also add additional needed projects to Line 82 too, just follow Line 81 for reference . . .
ARM11
ARM11 AKA ARMv6 boots on PhilZ Touch too, thanks to the androidarmv6 development team . . . :good:
Add the below to Line 82, delete whole ~/cm11/bionic folder, add a # remark to bionic & execute PhilZ script to sync the Part-Source needed to build for arm11 devices
Code:
echo -e "<project path=\"bionic\" name=\"androidarmv6/android_bionic\" revision=\"cm-11.0\" />" >> ~/Documents/x
Code:
[COLOR="Red"]#[/COLOR]grep -v bionic ~/Documents/x>~/Documents/x.tmp;mv ~/Documents/x.tmp ~/Documents/x
You will also need to edit BoardConfig.mk as below for compiling PhilZ Touch for arm11 devices
Code:
TARGET_CPU_ABI := [COLOR="blue"]armeabi-v6l[/COLOR]
TARGET_ARCH_VARIANT := [COLOR="blue"]armv6-vfp[/COLOR]
TARGET_CPU_VARIANT := [COLOR="blue"]arm11[/COLOR]
[COLOR="Red"]#[/COLOR]ARCH_ARM_HAVE_TLS_REGISTER := true [COLOR="blue"]<- Most [COLOR="Blue"]arm11[/COLOR] devices doesn't have [URL="http://arowboat.wordpress.com/2011/08/10/android-linux-arm-and-tls-register-emulation/"]TLS[/URL] & if you enable it then it won't boot ![/COLOR]
Syncing Part-Source on Ubuntu or other Distro
Open Terminal & type export PATH=~/bin:$PATH first then only it'll sync correctly provided you have setup the BE correctly BUT don't come ERROR reporting here as this thread details building PhilZ Touch on BBQLinux only . . .
You are completely on your own so please look for solutions here or hunt for similar solutions here on XDA, tons of guides for building on Ubuntu & other distro . . .
Why use other Distro when you have BBQLinux which is specifically made for Android development by codeworkx . . . :good:
Build cm kernel
If your device have cm kernel source then un-remark Line 68, 69 & update the necessary device specific flags, defconfig & SELinux . . .
Misc Tips
Factory ROM Back Up
Always google & research how to make a Factory ROM back up for your device & always make at least x3 so that in case one corrupted, you still have another two . . .
Typically, you'll find all these infos at your vendors website such as Sony Devices, HTC Devices, Samsung Devices & etc.
Many vendors also offer firmware updates too at their website such as Motorola & you should have a copy before even starting modding your device !
Files from vendor
To be able to install update.zip from your vendor then you'll need to do some minor editing.
Code:
adb shell "getprop ro.product.model"
adb shell "getprop ro.product.device"
or refer to your build.prop for
Code:
ro.product.model=[COLOR="blue"]Lenovo S939[/COLOR]
ro.product.device=[COLOR="blue"]S939[/COLOR]
and update it accordingly to default.prop at compiled PhilZ Touch
Alternate commands
For building recovery
Code:
cd ~/cm11
export USE_CCACHE=1
prebuilts/misc/linux-x86/ccache/ccache -M 50G
source build/envsetup.sh
source build/tools/device/makerecoveries.sh cm_[COLOR="Red"]S939[/COLOR]-eng [COLOR="Blue"]<- Change accordingly to your [COLOR="red"]device_name[/COLOR][/COLOR][COLOR="Blue"]
OR[/COLOR]
lunch cm_[COLOR="Blue"]S939[/COLOR]-eng [COLOR="Red"]<- Change accordingly to your [COLOR="blue"]device_name[/COLOR][/COLOR]
mka recoveryimage [COLOR="blue"]<- Thanks to [B]RD[/B] [URL="http://forum.xda-developers.com/showpost.php?p=55295969&postcount=15"]PlayfulGod[/URL]. More info [URL="http://wiki.cyanogenmod.org/w/Envsetup_help#mka"]refer to here[/URL][/COLOR]
Sync corruption
git & repo is like a Super Intelligent Source Code Auto-Resume Downloader when working together . . . :good:
You can stop it at any time, restart it back & it will auto-resume.
cm-11.0 repo & source code is located at ~/cm11/.repo, it is a hidden folder & to view hidden folder via caja, you need to press Ctrl + h
Sometimes you have corruption then repo sync wouldn't work & normally you just need to delete manifests, manifests.git, manifests.xml with a repo init & repo sync then you'll be back to normal.
If still this doesn't solve the problem then delete everything EXCEPT the folder project-objects & projects, both of this is the actual source code folder.
After this a repo init then repo sync & everything will be back to normal, i guarantee, done this many times, no worries . . . :laugh:
Make a secondary HDD & backup this hidden folder .repo & in case of OS corruption then you can anytime just copy it back to ~/cm11/.repo, repo init, repo sync & you'll have the whole cm-11.0 source code in a few minutes, no need to download it all over again. Make a backup of your bbqlinux.vdi too . . . :good:
Code:
cd ~/cm11
repo init -u git://github.com/CyanogenMod/android.git -b cm-11.0
repo sync -f -j8 [COLOR="Red"]<- You can increase this to parallel download but if ERROR then lower it[/COLOR]
git checkout
git & github again when working together is like a Super Intelligent Source Code Reviewer & Tracker.
For Eg. 6.57.5 doesn't boot while your previous compiled 6.56.8 boots.
You can use git checkout to revert it back to 6.56.8 to confirm it.
Code:
cd ~/cm11/bootable/recovery
git log [COLOR="Red"]<- Press [B]Enter[/B] to scroll & [B]Ctrl[/B] + [B]z[/B] to break[/COLOR]
git checkout [COLOR="blue"]86a7b310c2eadabbcbcd99243fc66bb197132446[/COLOR]
Screenshot
OR
Code:
git checkout [COLOR="blue"]86a7b31[/COLOR]
Screenshot
You can always review Phil3759 latest commits here . . .
To check your PhilZ Touch currently at which commits
Code:
cd ~/cm11/bootable/recovery
git log -1
When it boots then git checkout the next newer commits, this way you'll be able to pinpoint which commits is the culprit.
If still it doesn't boot then there is definitely something wrong with your setup . . . :laugh:
Make clean
For building PhilZ Touch you don't really have to make clean before each new build. I've notice many DEV uses various make clean commands as listed below . . .
Code:
cd ~/cm11
make clean
make clobber
make dataclean
make installclean
make -j4 clean dataclean installclean
make clean = Wipe everything inside ~/cm11/out & it will take you another 30 to 45 min to recompile if you didn't use ccache ! Just manually delete the device folder at $OUT will do.
Eg. ~/cm11/out/target/product/S939 <- just manually delete S939 folder will do
This will speed up the whole build process on the next build & typically, it will only take 2 minutes to rebuild . . . :laugh: i've wrote a script that automatically & continuously for building PhilZ Touch for MTK arm11, cortex-a9 & cortex-a7, all boots, all without make clean only remove the device folder at $OUT . . .
With ccache typically it will take 5 to 10 min after each make clean
Compiled recovery.img
If your SoC is not Qualcomm then most probably the compiled recovery.img will not boot b'cos it is not pack to your device format.
Eg. MTK & Sony Xperia L
So you'll need to find out how to repack it back to your device format then only it will boot ! Unless a DEV has already develop the format, refer to here for Eg . . .
Many doesn't know that ramdisk-recovery.img is actually the ramdisk repacked gzip file. Use below command to extract it.
Code:
cd ~/cm11
source build/envsetup.sh
lunch cm_[COLOR="Red"]S939[/COLOR]-eng <- Change accordingly to your [COLOR="red"]device_name[/COLOR]
cd $OUT
mkdir ramdisk
cd ramdisk
gzip -dc ../ramdisk-recovery.img | cpio -i
Or you can also make all the necessary editing to $OUT/recovery/root then repack it to gzip
Typical command
Code:
cd $OUT/recovery/root
find . | cpio -o -H newc | gzip > ../../newramdisk.cpio.gz
i don't own all android devices on the market so i donno what are the commands or procedures that will work for your device, you will have to find that out yourself. Typical repacking command
Code:
cd $OUT
mkbootimg --kernel kernel --ramdisk newramdisk.cpio.gz -o new_recovery.img
Again, google is your best friend . . .
Error reporting
Before reporting an error always look for solutions at Q&A here as most of them has already been answered. As mentioned, google is your best friend so go & hunt for it.
When you bump into an obstacle, typically you would wanna solve it ASAP. Try taking a break then come back a few days later & Voila, the answer will be right in front of you ! Trust me, provided you did google it . . .
Compilation error
If you have compilations error then refer to the compile.log & look for clues.
Code:
make -j8 recoveryimage 2>&1 | tee ~/Documents/[COLOR="Blue"]compile.log[/COLOR]
Typically, it will be a few line above ERROR1. Sometime you may need to scroll up a bit more & sometimes the build error doesn't hint anything at all !
For example below, i have remove bison
Code:
prebuilts/misc/linux-x86/bison/[COLOR="blue"]bison[/COLOR] -d -o /home/yuweng/cm11/out/target/product/MediaTek/obj/STATIC_LIBRARIES/libedify_intermediates/parser.cpp bootable/recovery/edify/parser.y
target thumb C: libminzip <= bootable/recovery/minzip/SysUtil.c
prebuilts/misc/linux-x86/bison/[COLOR="Blue"]bison[/COLOR]: external/bison/data/m4sugar/m4sugar.m4: cannot open: No such file or directory
build/core/binary.mk:375: recipe for target '/home/yuweng/cm11/out/target/product/MediaTek/obj/STATIC_LIBRARIES/libedify_intermediates/parser.cpp' failed
make: *** [/home/yuweng/cm11/out/target/product/MediaTek/obj/STATIC_LIBRARIES/libedify_intermediates/parser.cpp] [COLOR="Red"]Error 1[/COLOR]
make: *** Waiting for unfinished jobs....
Part-Source as of Aug 2014, builds working PhilZ Touch & if later it doesn't then always refer to here as Phil3759 might add new feature that requires additional projects.
Always refer to compile.log & build ERROR1 should give some hints, again, if it doesn't then google is your best friend . . . :laugh:
Error log
If compiled PhilZ Touch boots with a blank screen & adb is working then you can still get a log out of it.
Code:
adb shell pull /tmp/recovery.log
You can also try below command to capture screenshot while at PhilZ Touch
Code:
adb shell /sbin/fb2png
adb pull /data/local/fbdump.png
If compiled PhilZ Touch boots with GUI then you can generate error reporting. Advanced Functions -> Report Error.
adb commands
Sometimes you need kill adb first then only it will connect. Try below commands
Code:
adb kill-server
adb start-server
adb devices
adb reboot
adb reboot recovery
What to do when reporting error
A single line reply Unfortunately it doesn't work won't help.
Always provide as much info as possible, attach your BoardConfig.mk, recovery.fstab or any mkvendor.sh files that you have edited, attach compile.log, attach PhilZ Touch generated recovery.log this will help in trouble-shooting, identifying & solving your problems.
Credits
Phil3759 for continuously developing, improving & maintaining PhilZ Touch . . . :good:
Daniel Hillenbrand AKA codeworkx for continuously developing, improving & maintaining BBQLinux . . . :good:
CyanogenMod Team & contributors for continuously developing, improving & maintaining CyanogenMod repo . . . :good:
Samantha for doing a coverage of this thread at the XDA Portal . . . :good:
Last but not least, my Master Shifu Carliv who has taught me how to compile from source & continuously guiding me to the right direction . . . :good:
Give credit where credit is due . . . :good:
Reserved
Case Study
Qualcomm
Qualcomm SoC has the best cm support so typically you can find all infos there.
When you use mkvendor.sh to unpack HTC One M8 all the necessary files are auto-generated correctly.
Below is the BoardConfig.mk auto-generated by mkvendor.sh
Code:
USE_CAMERA_STUB := true
# inherit from the proprietary version
-include vendor/HTC/One/BoardConfigVendor.mk
TARGET_ARCH := arm
TARGET_NO_BOOTLOADER := true
TARGET_BOARD_PLATFORM := unknown
TARGET_CPU_ABI := armeabi-v7a
TARGET_CPU_ABI2 := armeabi
TARGET_ARCH_VARIANT := armv7-a-neon
TARGET_CPU_VARIANT := cortex-a7
TARGET_CPU_SMP := true
ARCH_ARM_HAVE_TLS_REGISTER := true
TARGET_BOOTLOADER_BOARD_NAME := One
[COLOR="blue"]BOARD_KERNEL_CMDLINE := console=ttyHSL0,115200,n8 androidboot.hardware=qcom user_debug=31 ehci-hcd.park=3
BOARD_KERNEL_BASE := 0x00000000
BOARD_KERNEL_PAGESIZE := 2048[/COLOR]
# fix this up by examining /proc/mtd on a running device
BOARD_BOOTIMAGE_PARTITION_SIZE := 0x105c0000
BOARD_RECOVERYIMAGE_PARTITION_SIZE := 0x105c0000
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 0x105c0000
BOARD_USERDATAIMAGE_PARTITION_SIZE := 0x105c0000
BOARD_FLASH_BLOCK_SIZE := 131072
TARGET_PREBUILT_KERNEL := device/HTC/One/kernel
BOARD_HAS_NO_SELECT_BUTTON := true
You'll notice it has the same config as here
mkvendor.sh will also correctly extract the recovery.fstab from M8 recovery.img too
Code:
# Android fstab file.
#<src> <mnt_point> <type> <mnt_flags> <fs_mgr_flags>
# The filesystem that contains the filesystem checker binary (typically /system) cannot
# specify MF_CHECK, and must come before any filesystems that do specify MF_CHECK
/dev/block/mmcblk0p42 /boot emmc defaults defaults
/dev/block/mmcblk0p43 /recovery emmc defaults defaults
/dev/block/mmcblk0p45 /system ext4 ro,seclabel,noatime,data=ordered wait
/dev/block/platform/msm_sdcc.1/by-name/userdata /data ext4 rw,seclabel,nosuid,nodev,relatime,discard,noauto_da_alloc,data=ordered wait,check
/dev/block/mmcblk0p46 /cache ext4 rw,seclabel,nosuid,nodev,relatime,data=ordered wait,check
/dev/block/mmcblk0p39 /devlog ext4 rw,seclabel,nosuid,nodev,relatime,errors=continue,data=ordered wait
/dev/block/mmcblk0p27 /fataldevlog ext4 rw,seclabel,nosuid,nodev,relatime,errors=continue,data=ordered wait
/dev/block/platform/msm_sdcc.1/by-name/radio /firmware/radio vfat ro,relatime,uid=1000,gid=1000,fmask=0337,dmask=0227,codepage=cp437,iocharset=iso8859-1,shortname=lower,errors=remount-ro wait
/dev/block/platform/msm_sdcc.1/by-name/adsp /firmware/adsp vfat ro,relatime,uid=1000,gid=1000,fmask=0337,dmask=0227,codepage=cp437,iocharset=iso8859-1,shortname=lower,errors=remount-ro wait
/dev/block/platform/msm_sdcc.1/by-name/wcnss /firmware/wcnss vfat ro,relatime,uid=1000,gid=1000,fmask=0337,dmask=0227,codepage=cp437,iocharset=iso8859-1,shortname=lower,errors=remount-ro wait
/dev/block/mmcblk0p22 /custdata ext4 rw,seclabel,nosuid,nodev,relatime,data=ordered defaults
/devices/msm_sdcc.2/mmc_host auto auto defaults voldmanaged=sdcard1:auto
/devices/platform/xhci-hcd auto auto defaults voldmanaged=usb:auto
So compare between both & make the necessary updates, AFAIK, you don't need to include all the other build flags, those are for building ROMs/ kernels, just update the correct TARGET_CPU_VARIANT & PhilZ Touch build flags will do & if it doesn't boot then you'll have to find that out yourself . . . :laugh:
HTC One M8 recovery.img from here
Broadcom
Recently got a request for building PhilZ Touch for Lava Magnum X604 which uses Broadcom BCM23550 & there isn't much development on this SoC even thought its released on 2012 !
A quick search found Samsung Galaxy Grand Neo uses the same SoC & it doesn't have cm device tree.
AKA GT-I9060 & further search found this & it leads to few more . . . (1) (2) (3)
Above shall give some hint on how to build PhilZ Touch on your BCM23550.
Below are the mkvendor.sh generated files that needs editing.
BoardConfig.mk
Code:
USE_CAMERA_STUB := true
# inherit from the proprietary version
-include vendor/Magnum/X604/BoardConfigVendor.mk
TARGET_ARCH := arm
TARGET_NO_BOOTLOADER := true
TARGET_BOARD_PLATFORM := unknown [COLOR="Red"]<- Optionally, you can rename accordingly to [COLOR="Blue"]default.prop -> ro.board.platform=[B][COLOR="Black"]java[/COLOR][/B][/COLOR][/COLOR]
TARGET_CPU_ABI := armeabi-v7a
TARGET_CPU_ABI2 := armeabi
TARGET_ARCH_VARIANT := armv7-a-neon
TARGET_CPU_VARIANT := cortex-a7
TARGET_CPU_SMP := true
ARCH_ARM_HAVE_TLS_REGISTER := true
TARGET_BOOTLOADER_BOARD_NAME := X604
BOARD_KERNEL_CMDLINE :=
BOARD_KERNEL_BASE := 0x10000000
BOARD_KERNEL_PAGESIZE := 2048
# fix this up by examining /proc/mtd on a running device
BOARD_BOOTIMAGE_PARTITION_SIZE := 0x105c0000
BOARD_RECOVERYIMAGE_PARTITION_SIZE := 0x105c0000
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 0x105c0000
BOARD_USERDATAIMAGE_PARTITION_SIZE := 0x105c0000
BOARD_FLASH_BLOCK_SIZE := 131072
TARGET_PREBUILT_KERNEL := device/Magnum/X604/kernel
BOARD_HAS_NO_SELECT_BUTTON := true
[COLOR="Blue"]#Philz Touch build flags for Magnum X604[/COLOR]
TARGET_COMMON_NAME := Magnum X604
[COLOR="red"]#[/COLOR]BOARD_USE_NTFS_3G := false [COLOR="Blue"]<- if it doesn't boot then remove [COLOR="red"]#[/COLOR] remark[/COLOR]
[COLOR="Red"]#[/COLOR]TARGET_RECOVERY_PIXEL_FORMAT := "BGRA_8888" [COLOR="Blue"]<- if distorted graphics then remove [COLOR="red"]#[/COLOR] remark[/COLOR]
TARGET_SCREEN_HEIGHT := 1280
TARGET_SCREEN_WIDTH := 720
TARGET_USE_CUSTOM_LUN_FILE_PATH := "/sys/devices/platform/usb_mass_storage/lun0/file"
BRIGHTNESS_SYS_FILE := "/sys/class/leds/lcd-backlight/brightness"
recovery.fstab
Code:
# Android fstab file.
#<src> <mnt_point> <type> <mnt_flags and options> <fs_mgr_flags>
# The filesystem that contains the filesystem checker binary (typically /system) cannot
# specify MF_CHECK, and must come before any filesystems that do specify MF_CHECK
[COLOR="blue"]#Init[/COLOR]
/dev/block/platform/sdhci.1/by-name/boot /boot emmc defaults defaults
/dev/block/platform/sdhci.1/by-name/recovery /recovery emmc defaults defaults
/dev/block/platform/sdhci.1/by-name/system /system ext4 ro wait
/dev/block/platform/sdhci.1/by-name/cache /cache ext4 noatime,nosuid,nodev,nomblk_io_submit,errors=panic wait
/dev/block/platform/sdhci.1/by-name/userdata /data ext4 rw,nosuid,nodev,noatime,errors=panic,user_xattr,barrier=1,data=ordered,noauto_da_alloc wait,encryptable=footer
/dev/block/zram0 none swap defaults zramsize=201326592
[COLOR="Blue"]#voldmanaged[/COLOR]
/devices/platform/sdhci.1/mmc_host/mmc0 auto vfat defaults noemulatedsd,nonremovable,voldmanaged=sdcard0:auto
/devices/platform/sdhci.0/mmc_host/mmc2 auto vfat defaults voldmanaged=sdcard1:auto
/devices/platform/3f120000.usb-otg/usb1 auto vfat defaults voldmanaged=usbdisk0:auto
device_X604.mk
Code:
$(call inherit-product, $(SRC_TARGET_DIR)/product/languages_full.mk)
# The gps config appropriate for this device
[COLOR="Red"]#[/COLOR]$(call inherit-product, device/common/gps/gps_us_supl.mk)
$(call inherit-product-if-exists, vendor/Magnum/X604/X604-vendor.mk)
DEVICE_PACKAGE_OVERLAYS += device/Magnum/X604/overlay
LOCAL_PATH := device/Magnum/X604
ifeq ($(TARGET_PREBUILT_KERNEL),)
LOCAL_KERNEL := $(LOCAL_PATH)/kernel
else
LOCAL_KERNEL := $(TARGET_PREBUILT_KERNEL)
endif
PRODUCT_COPY_FILES += \
$(LOCAL_KERNEL):kernel
$(call inherit-product, build/target/product/full.mk)
PRODUCT_BUILD_PROP_OVERRIDES += BUILD_UTC_DATE=0
PRODUCT_NAME := full_X604
PRODUCT_DEVICE := X604
[COLOR="Blue"]#PhilZ Touch[/COLOR]
PRODUCT_COPY_FILES +=
$(LOCAL_PATH)/recovery.fstab:recovery/root/[COLOR="blue"]fstab.java[/COLOR]
Follow necessary steps at post #1 & #2 & you shall be able to build PhilZ Touch . . . :fingers-crossed:
Intel x86
To build PhilZ Touch for Atom using this Part-Source will require one additional project.
Code:
grep -v linux-x86/x86/i686-linux-android-4.7 ~/Documents/x>~/Documents/x.tmp;mv ~/Documents/x.tmp ~/Documents/x
Add the above to Line 82 of the Part-Source script. Below are the changes to BoardConfig.mk for building on x86 target
Code:
TARGET_ARCH := [COLOR="blue"]x86[/COLOR]
TARGET_NO_BOOTLOADER := true
TARGET_BOARD_PLATFORM := unknown [COLOR="Red"]<- Optionally, you can rename accordingly to [COLOR="Blue"]default.prop -> ro.board.platform[/COLOR][/COLOR]
TARGET_CPU_ABI := armeabi-v7a
TARGET_CPU_ABI2 := armeabi
TARGET_ARCH_VARIANT := [COLOR="blue"]x86-atom[/COLOR]
TARGET_CPU_VARIANT := [COLOR="blue"]x86[/COLOR]
TARGET_CPU_SMP := true
ARCH_ARM_HAVE_TLS_REGISTER := true
Source 1 <- For ref, you don't need to do all that on BBQLinux . . .
Source 2
First !!!!
Everytime afraid to see your detailed , and good to follow tutorials......
will start now to show my way for lg msm8226 device
THX MY FRIEND
***************************************************************************************************************************************
Here is my way to compile Philz Touch for LG L90 (w7) (D405EU) using yuwengs Cm-11 parted_source.
This Method should be similar for other LG Devices, like: "G2" + "G2 Mini" and other.... NOT TESTED !!!
let"s go:
To the point: "Syncing Part-source" you can follow the instructions of yuwengs tutorial from this thread.
additionally for our Lg Device we need mkbootimg from THIS link. developed by xiaolu ( thx for this)....
in our case we unpack the downloaded zip to Home so we have a new folder now. Named " mkbootimg_tools-master "
Copy stock boot.img or recovery.img from your device to your Home folder.
Open Terminal, and type :
Code:
cd ~/cm11
build/tools/device/mkvendor.sh lge w7 ~/boot.img
[COLOR="Blue"]or[/COLOR]
build/tools/device/mkvendor.sh lge w7 ~/recovery.img
[COLOR="Blue"]then[/COLOR]
cd ~/mkbootimg_tools-master
chmod 777 mkboot
./mkboot ~/boot.img stockboot[/QUOTE]
in your [B]mkbootimg_tools-master[/B] folder is a new folder named [B]stockboot[/B], copy the file [B]dt.img[/B] from there to:
~/cm11/device/lge/w7
[B]Open & edit the files as listed below
Put all PhilZ Touch build flags at the bottom of the BoardConfig.mk under a heading of #PhilZ Touch build flags for easy reference[/B]
~/cm11/device/lge/w7/[COLOR="Blue"]BoardConfig.mk[/COLOR]
[code]USE_CAMERA_STUB := true
# inherit from the proprietary version
-include vendor/lge/w7/BoardConfigVendor.mk
TARGET_GLOBAL_CFLAGS += -mfpu=neon -mfloat-abi=softfp
TARGET_GLOBAL_CPPFLAGS += -mfpu=neon -mfloat-abi=softfp
TARGET_ARCH := arm
TARGET_NO_BOOTLOADER := true
TARGET_BOARD_PLATFORM := unknown <- Non_Critical
TARGET_CPU_ABI := armeabi-v7a
TARGET_CPU_ABI2 := armeabi
TARGET_ARCH_VARIANT := armv7-a-neon
TARGET_CPU_VARIANT := krait [COLOR="Red"]<- Critical, either cortex-a5, cortex-a7, cortex-a8, cortex-a9, cortex-a15, krait, scorpion or generic[/COLOR]
ARCH_ARM_HAVE_TLS_REGISTER := true
TARGET_BOOTLOADER_BOARD_NAME := w7
# Kernel Prebuilt
TARGET_PREBUILT_KERNEL := device/lge/w7/kernel
BOARD_MKBOOTIMG_ARGS := --dt device/lge/w7/dt.img [COLOR="Red"]<- VERY IMPORTANT !!! otherwise recovery won"t boot[/COLOR]
BOARD_KERNEL_CMDLINE := console=ttyHSL0,115200,n8 androidboot.console=ttyHSL0 user_debug=31 msm_rtb.filter=0x37 androidboot.hardware=w7
BOARD_KERNEL_BASE := 0x00000000
BOARD_KERNEL_PAGESIZE := 2048
# fix this up by examining /proc/mtd on a running device
BOARD_BOOTIMAGE_PARTITION_SIZE := 0x105c0000
BOARD_RECOVERYIMAGE_PARTITION_SIZE := 0x105c0000 [COLOR="Red"]<- Change this accordingly to your recovery size so that build will error when its oversize[/COLOR]
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 0x105c0000
BOARD_USERDATAIMAGE_PARTITION_SIZE := 0x105c0000
BOARD_FLASH_BLOCK_SIZE := 131072
BOARD_HAS_NO_SELECT_BUTTON := true
#Recovery
BRIGHTNESS_SYS_FILE := "/sys/class/leds/lcd-backlight/brightness"
TARGET_USE_CUSTOM_LUN_FILE_PATH := "/sys/devices/virtual/android_usb/android0/f_mass_storage/lun%d/file"
TARGET_NO_BOOTLOADER := true
TARGET_RECOVERY_FSTAB := device/lge/w7/rootdir/fstab.w7
RECOVERY_FSTAB_VERSION := 2
TARGET_RECOVERY_PIXEL_FORMAT := "RGBX_8888"
BOARD_USE_CUSTOM_RECOVERY_FONT := \"roboto_10x18.h\"
HAVE_SELINUX := true
BOARD_HAS_NO_MISC_PARTITION := true
TARGET_RECOVERY_QCOM_RTC_FIX := true
TARGET_USERIMAGES_USE_F2FS := true
TARGET_SCREEN_HEIGHT := 960
TARGET_SCREEN_WIDTH := 540
TARGET_COMMON_NAME := LG L90
~/cm11/device/lge/w7/cm.mk
Code:
## Specify phone tech before including full_phone
$(call inherit-product, vendor/cm/config/gsm.mk)
# Release name
PRODUCT_RELEASE_NAME := w7
# Inherit some common CM stuff.
[COLOR="Red"]#[/COLOR]$(call inherit-product, vendor/cm/config/common_full_phone.mk) [COLOR="Red"]<- Disable it[/COLOR]
# Inherit device configuration
$(call inherit-product, device/lge/w7/device_w7.mk)
## Device identifier. This must come after all inclusions
PRODUCT_DEVICE := w7
PRODUCT_NAME := cm_w7
PRODUCT_BRAND := lge
PRODUCT_MODEL := w7
PRODUCT_MANUFACTURER := lge
~/cm11/device/lge/w7/recovery.fstab
Code:
# Android fstab file.
# The filesystem that contains the filesystem checker binary (typically /system) cannot
# specify MF_CHECK, and must come before any filesystems that do specify MF_CHECK
#
#<src> <mnt_point> <type> <mnt_flags and options> <fs_mgr_flags>
/devices/msm_sdcc.2/mmc_host auto vfat defaults voldmanaged=sdcard1:auto,noemulatedsd
/dev/block/platform/msm_sdcc.1/by-name/system /system ext4 ro,barrier=1 wait,check
/dev/block/platform/msm_sdcc.1/by-name/userdata /data ext4 noatime,nosuid,nodev,barrier=1,noauto_da_alloc,discard,data=ordered,errors=continue wait,check,encryptable=/dev/block/platform/msm_sdcc.1/by-name/encrypt
/dev/block/platform/msm_sdcc.1/by-name/cache /cache ext4 noatime,nosuid,nodev,barrier=1,data=ordered wait,check
/dev/block/platform/msm_sdcc.1/by-name/boot /boot emmc defaults defaults
/dev/block/platform/msm_sdcc.1/by-name/recovery /recovery emmc defaults defaults
/dev/block/platform/msm_sdcc.1/by-name/misc /misc emmc defaults defaults
~/cm11/device/lge/w7/device_w7.mk
Code:
$(call inherit-product, $(SRC_TARGET_DIR)/product/languages_full.mk)
# The gps config appropriate for this device
[COLOR="Red"]#[/COLOR]$(call inherit-product, device/common/gps/gps_us_supl.mk) [COLOR="Red"]<- Disable it[/COLOR]
$(call inherit-product-if-exists, vendor/lge/w7/w7-vendor.mk)
DEVICE_PACKAGE_OVERLAYS += device/lge/w7/overlay
LOCAL_PATH := device/lge/w7
ifeq ($(TARGET_PREBUILT_KERNEL),)
LOCAL_KERNEL := $(LOCAL_PATH)/kernel
else
LOCAL_KERNEL := $(TARGET_PREBUILT_KERNEL)
endif
PRODUCT_COPY_FILES += \
$(LOCAL_KERNEL):kernel
$(call inherit-product, build/target/product/full.mk)
PRODUCT_BUILD_PROP_OVERRIDES += BUILD_UTC_DATE=0
PRODUCT_NAME := full_w7
PRODUCT_DEVICE := w7
#PhilZ Touch
PRODUCT_COPY_FILES +=
$(LOCAL_PATH)/recovery.fstab:recovery/root/fstab.w7 [COLOR="Red"]<- adb shell getprop ro.hardware to identify it.[/COLOR]
LG L90 Device Specific. (maybe other LG Devices to):
Our L90 have no Hardware Key Combo to boot direct into recovery, we only could get into the LG internal " Factory data reset " menue with the Volume - & Power Key Combo
if we both ask confirm with yes, Recovery will boot and do automatic a factory reset and reboot. If we Softbricked now by an accident, we get into a "Loop". because theres no working system that can be factory reseted
and we have to manual reflash the device.
For this reason we change = ~/cm11/bootable/recovery/recovery.c
Code:
1176 case 's': send_intent = optarg; break;
1177 case 'u': update_package = optarg; break;
1178 case 'w': wipe_data = wipe_cache = 0; break; [COLOR="Red"]<- Change 1 to 0[/COLOR]
1179 case 'm': wipe_media = 1; break;
1180 case 'c': wipe_cache = 1; break;
now recovery boots up " Normal " when we choose Factory Reset by LG Hardware Combo
Note: its Highly Recommend to activate fastboot mode on LG L90 so you could reach your device in every case....
THX Phil3759 for the Help here...
FROM NOW WE FOLLOW AGAIN YUWENGS TUTORIAL FROM POINT: Start Building it !
THX yuweng
Hi there
Good Initiative
just some thoughts:
When Building, it should be (build command):
Code:
make recoveryimage
Why?
Adding an number of jobs, can cause some issues, depending on the host build system.
Also, it will hide possible source errors, giving only an few or none errors --> output
Of course yours is right also, but it wont work, for everyone.
Regards
I still use Bruno Martin's MTK Tools to unpack/repack after the compilation. :good:
I only take the ramdisk-recovery.cpio from the OUT_DIR folder, extract it, edit/change/remove some files, repack with stock/custom kernel to achieve smallest recovery.img size.
Configuration for ZTE N986 with single partition (/data/media)
BoardConfig.mk
Code:
USE_CAMERA_STUB := true
# inherit from the proprietary version
-include vendor/ZTE/N986/BoardConfigVendor.mk
TARGET_ARCH := arm
TARGET_NO_BOOTLOADER := true
TARGET_BOARD_PLATFORM := unknown
TARGET_CPU_ABI := armeabi-v7a
TARGET_CPU_ABI2 := armeabi
TARGET_ARCH_VARIANT := armv7-a-neon
TARGET_CPU_VARIANT := cortex-a7
TARGET_CPU_SMP := true
ARCH_ARM_HAVE_TLS_REGISTER := true
TARGET_BOOTLOADER_BOARD_NAME := N986
BOARD_KERNEL_CMDLINE := 8F02V1.0.5B01
BOARD_KERNEL_BASE := 0x10000000
BOARD_KERNEL_PAGESIZE := 2048
# fix this up by examining /proc/mtd on a running device
BOARD_BOOTIMAGE_PARTITION_SIZE := 0x105c0000
BOARD_RECOVERYIMAGE_PARTITION_SIZE := 0x105c0000
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 0x105c0000
BOARD_USERDATAIMAGE_PARTITION_SIZE := 0x105c0000
BOARD_FLASH_BLOCK_SIZE := 131072
TARGET_PREBUILT_KERNEL := device/ZTE/N986/kernel
BOARD_HAS_NO_SELECT_BUTTON := true
#Philz Touch build flags for MTK
TARGET_USE_CUSTOM_LUN_FILE_PATH := "/sys/devices/platform/mt_usb/gadget/lun%d/file"
TARGET_COMMON_NAME := N986
BOARD_USE_MTK_LAYOUT := true
BOARD_MTK_BOOT_LABEL := "/bootimg"
BOARD_USE_NTFS_3G := false
TARGET_SCREEN_HEIGHT := 1280
TARGET_SCREEN_WIDTH := 720
BRIGHTNESS_SYS_FILE := "/sys/class/leds/lcd-backlight/brightness"
recovery.fstab
Code:
# mount point fstype device [device2]
/dev/bootimg /bootimg emmc defaults defaults
/dev/recovery /recovery emmc defaults defaults
/dev/uboot /uboot emmc defaults defaults
/[email protected] /system ext4 ro,noatime wait
/[email protected] /cache ext4 noatime,nosuid,nodev,noauto_da_alloc wait
/[email protected] /data ext4 noatime,nosuid,nodev,noauto_da_alloc wait,encryptable=footer
/dev/block/mmcblk1p1 /sdcard vfat defaults defaults
UPDATE:
I'm still confused with the correlation between recovery.fstab, fstab.<device_id>, init and vold managed mount point. I only found the differences between recovery.fstab v1 and v2 in this post. Could you describe it a little bit?
I'm testing this fstab with kitkat kernel and it's working fine.
recovery.fstab
Code:
# Android fstab file.
# The filesystem that contains the filesystem checker binary (typically /system) cannot
# specify MF_CHECK, and must come before any filesystems that do specify MF_CHECK
/dev/bootimg /bootimg emmc defaults defaults
/dev/recovery /recovery emmc defaults defaults
/dev/uboot /uboot emmc defaults defaults
/[email protected] /system ext4 ro,noatime wait
/[email protected] /cache ext4 noatime,nosuid,nodev,noauto_da_alloc wait
/[email protected] /data ext4 noatime,nosuid,nodev,noauto_da_alloc wait,encryptable=footer
/[email protected] /emmc vfat defaults defaults
/dev/block/mmcblk1p1 /sdcard vfat defaults defaults
# VOLD mount points (Ref taken from Lenovo S939 KitKat 4.4.2)
# vold managed volumes for generic MTK
#/devices/platform/mtk-sd.0/mmc_host auto vfat defaults voldmanaged=sdcard0:[email protected],noemulatedsd
#/devices/platform/mtk-sd.1/mmc_host auto vfat defaults voldmanaged=sdcard1:auto
fstab.goldfish
Code:
# Android fstab file.
# The filesystem that contains the filesystem checker binary (typically /system) cannot
# specify MF_CHECK, and must come before any filesystems that do specify MF_CHECK
/dev/block/mtdblock0 /system ext4 ro,barrier=1 wait
/dev/block/mtdblock1 /data ext4 noatime,nosuid,nodev,barrier=1,nomblk_io_submit wait,check
/dev/block/mtdblock2 /cache ext4 noatime,nosuid,nodev,nomblk_io_submit,errors=panic wait,check
#/devices/platform/mtk-sd.0/mmc_host auto vfat defaults voldmanaged=sdcard0:[email protected],noemulatedsd
#/devices/platform/mtk-sd.1/mmc_host auto vfat defaults voldmanaged=sdcard1:auto
Thats how all android devices started off when they have the non-standard boot.img or recovery.img, Thanks to bgcngm AKA Bruno Martins he has open up a whole new world for MTK devices when he make his unpack/ repack script public to the world . . . :good:
As i've mentioned here, we would be using stock ROM until today but its sad to see many so called ROM Porter/ ROM Cooker never even mentioned his name when they published their work, they all have forgotten that all of this would not be possible without BM's script . . .
Back to business . . .
You can also try this or this your good friend awaaas told me bigbiff has help him with that, and this all is using BM's script to automate the whole build process . . . :good:
Alternate commands for your technique
Code:
cd ~/cm11
source build/envsetup.sh
lunch cm_N986-eng
cd $OUT
copy repack-MT65xx.pl to $OUT
Do all your necessary editing to $OUT/recovery/root
perl repack-MT65xx.pl -recovery kernel recovery/root new-recovery.img
@agismaniax : Reply to your question above. . .
You should have refer to here thats where it all started for MTK, take a look at Added on Apr 23, 2014 . . .
fstab.goldfish & ueventd.goldfish.rc is auto-generated by build & its not used for MTK, you can either leave it or just delete it . . .
INIT mount points are direct device block while voldmanaged is using vold which uses virtual nodes to mount both sdcard. -> Source
i don't own a /data/media MTK so i cannot/ donno how to solve the mount USB storage, i did a search previously on this problem & a quick search found this . . .
Why fstab.${ro.hardware} As explained at OP, adb shell getprop ro.hardware then copy your recovery.fstab to root & rename it to fstab.mt6589 & mount USB storage should work for most MTK but not /data/media . . . Why, no one found out or share the working mount points for /data/media on MTK for PhilZ Touch . . . Fyi, shooxy did try but fail . . . :laugh:
For your MT6589 you can use either as below, tested & confirmed working by shooxy . . . :good:
Code:
/devices/platform/mtk-sd.0/mmc_host/mmc0 auto auto defaults voldmanaged=sdcard0:[COLOR="blue"][SIZE="4"]6[/SIZE][/COLOR] [COLOR="Red"]<- your internal sdcard fat partition no.[/COLOR]
/devices/platform/mtk-sd.1/mmc_host/mmc1 auto auto defaults voldmanaged=sdcard1:auto
OR
Code:
/devices/platform/mtk-msdc.0/mmc_host/mmc0 auto auto defaults voldmanaged=sdcard0:[COLOR="Blue"][SIZE="4"]6[/SIZE][/COLOR] [COLOR="Red"]<- your internal sdcard fat partition no.[/COLOR]
/devices/platform/mtk-msdc.1/mmc_host/mmc1 auto auto defaults voldmanaged=sdcard1:auto
As said, for /data/media device i donno, you'll have to find that out yourself . . .
Try & see if it mounts both sdcard . . . :fingers-crossed:
Code:
/devices/platform/mtk-msdc.0/mmc_host/mmc0 auto auto defaults voldmanaged=sdcard0:[COLOR="Blue"][email protected][/COLOR]
/devices/platform/mtk-msdc.1/mmc_host/mmc1 auto auto defaults voldmanaged=sdcard1:auto
Code:
/devices/platform/mt_usb/usb1 auto auto defaults voldmanaged=usb:auto
/devices/platform/mtk-msdc.1/mmc_host/mmc1 auto auto defaults voldmanaged=sdcard1:auto
Use below command, try the path with usb in it, refer to here for some clues . . .
Code:
adb shell su -c ls -R > usb.txt
hello, @yuweng great thread, fantastic tut but... i unfortunately get an error while compiling & it stops. i've done every single step twice, checked and rechecked but can't find a solution. what am i doing worng ?!?! any help please. thanks in advance.
arm-linux-androideabi-gcc: error: ": No such file or directory
build/core/binary.mk:512: recipe for target '/home/eric/cm11/out/target/product/v3/obj/RECOVERY_EXECUTABLES/minivold_intermediates/vold.o' failed
make: *** [/home/eric/cm11/out/target/product/v3/obj/RECOVERY_EXECUTABLES/minivold_intermediates/vold.o] Error 1
CiR3 said:
hello, @yuweng great thread, fantastic tut but... i unfortunately get an error while compiling & it stops. i've done every single step twice, checked and rechecked but can't find a solution. what am i doing worng ?!?! any help please. thanks in advance.
arm-linux-androideabi-gcc: error: ": No such file or directory
build/core/binary.mk:512: recipe for target '/home/eric/cm11/out/target/product/v3/obj/RECOVERY_EXECUTABLES/minivold_intermediates/vold.o' failed
make: *** [/home/eric/cm11/out/target/product/v3/obj/RECOVERY_EXECUTABLES/minivold_intermediates/vold.o] Error 1
Click to expand...
Click to collapse
Check the toolchain PATH.
Regards
CiR3 said:
arm-linux-androideabi-gcc: error: ": No such file or directory
Click to expand...
Click to collapse
if you're using bbqlinux-2014.08.20-x86_64 on Virtualbox then i hope . . .
you did make a backup of your bbqlinux.vdi
All this while, i was using an old bbqlinux(May 1st version) when i wrote & tested the Part-Source script then started this thread & i got exactly the same error as you when i upgrade to use 08.20 version . . .
Tried deleting everything inside ~/cm11 folder except .repo folder, doesn't work, delete whole ~/cm11 & use the backed up .repo from secondary HDD, doesn't work, tried the old script that use 52 projects, again doesn't work, same arm-linux-androideabi-gcc: error no matter what i did . . .
Then i thought to myself, crap, i'm sharing a broken solution then thanks to shooxy he tested the Part-Source & confirmed it works on his setup so that indirectly indicates its my setup problem . . .
Never did found out the cause & here is what i did, replace with the untouched new 08.20 bbqlinux.vdi that i backed up earlier, use ~/cm11/.repo that i've backed up earlier then use PhilZ script to sync again to extract the files, build it & it builds without this error . . . :laugh:
Hi @yuweng. I did a clean and full install on a separate disk as my system is quite slow. But i cannot update the system. I get an error and the Installation gets aborted. And then the error while compiling. I will try with virtual box and report back asap. Thanks anyway for your help. Cheers.
yuweng said:
if you're using bbqlinux-2014.08.20-x86_64 on Virtualbox then i hope . . .
you did make a backup of your bbqlinux.vdi
All this while, i was using an old bbqlinux(May 1st version) when i wrote & tested the Part-Source script then started this thread & i got exactly the same error as you when i upgrade to use 08.20 version . . .
Tried deleting everything inside ~/cm11 folder except .repo folder, doesn't work, delete whole ~/cm11 & use the backed up .repo from secondary HDD, doesn't work, tried the old script that use 52 projects, again doesn't work, same arm-linux-androideabi-gcc: error no matter what i did . . .
Then i thought to myself, crap, i'm sharing a broken solution then thanks to shooxy he tested the Part-Source & confirmed it works on his setup so that indirectly indicates its my setup problem . . .
Never did found out the cause & here is what i did, replace with the untouched new 08.20 bbqlinux.vdi that i backed up earlier, use ~/cm11/.repo that i've backed up earlier then use PhilZ script to sync again to extract the files, build it & it builds without this error . . . :laugh:
Click to expand...
Click to collapse
Becouse your messing your build environment PATHS.
And when you update your distro, that can happen, if you don't know what your doing.
E.g. : Why not hardcode the toolchain$ Path?
OR , add it to the {user} ~bashrc ?
Specially on VM environment...
Regards
CiR3 said:
But i cannot update the system. I get an error and the Installation gets aborted. And then the error while compiling.
Click to expand...
Click to collapse
Thats why i don't updates, bad experience with Windows Updates at work but then again this thread is about building PhilZ Touch not setting up BBQLinux . . .
A XDA friend faces the same problem when he updates & got it solved, mentioned something about gcc-multilib i've pm'ed him to reply the solutions here . . . :fingers-crossed:
superdragonpt said:
E.g. : Why not hardcode the toolchain$ Path?
OR , add it to the {user} ~bashrc ?
Click to expand...
Click to collapse
you don't need to do that on BBQLinux, try it yourself then you'll know . . . :good:
Hi @snapdragonpt ,
thanks for your assistance. It is curious that this happens after 25min of compiling. I've switched back to ubuntu but will give bbq another try, maybe this evening. Anyway, thanks a lot.
Regards
No one better can write tutorials as you do The best in sharing your learnings
Thanks for all
superdragonpt said:
Hi there
Good Initiative
just some thoughts:
When Building, it should be (build command):
Code:
make recoveryimage
Why?
Adding an number of jobs, can cause some issues, depending on the host build system.
Also, it will hide possible source errors, giving only an few or none errors --> output
Of course yours is right also, but it wont work, for everyone.
Regards
Click to expand...
Click to collapse
Code:
mka recoveryimage
Works well too if using the CM source as the base. It will set the -j flag for you depending on what resources you have, kinda like brunch does building CM.
First thanks for detailed guide.
I have quest: My 8 files are empty.
Do I need to add these lines files to boardconfig.mk
#PhilZ Touch build flags for MTK
TARGET_COMMON_NAME := Lenovo S939
BOARD_USE_MTK_LAYOUT := true
BOARD_MTK_BOOT_LABEL := "/bootimg"
BOARD_USE_NTFS_3G := false
BRIGHTNESS_SYS_FILE := "/sys/class/leds/lcd-backlight/brightness"
TARGET_USE_CUSTOM_LUN_FILE_PATH := "/sys/devices/virtual/android_usb/android0/f_mass_storage/lun%d/file" <- Credits to RD chrmhoffmann
TARGET_SCREEN_HEIGHT := 1280
TARGET_SCREEN_WIDTH := 720
BOARD_CUSTOM_BOOTIMG_MK := device/Lenovo/S939/boot.mk <- Credits to RD chrmhoffmann. MTK uses custom mkbootimg
Off now I get this error: unpackbootimg not found. Is your android build environment set up and have the host tools been built??
And i thought the guide is easy enough for everyone to follow & you didn't even read the whole post #1 & #2 or you would've known to provide as much info as possible so that it'll be easier to trouble-shoot your problem rather than guessing what you have . . . Fyi, Phil3759 has given up porting PhilZ Touch to new devices b'cos of this . . . :laugh:
Based on your past active forum post, its Sony Xperia M2 then learn more from here . . . :good:
Yes, mkvendor.sh will generate ONLY skeleton files, you need to manually fill-in PhilZ Touch build flags based on your device specification . . .
Code:
[COLOR="Blue"]#PhilZ Touch build flags for Xperia M2[/COLOR]
TARGET_COMMON_NAME := [COLOR="blue"]Xperia M2[/COLOR]
BRIGHTNESS_SYS_FILE := "/sys/class/leds/lcd-backlight/brightness"
TARGET_USE_CUSTOM_LUN_FILE_PATH := "/sys/devices/virtual/android_usb/android0/f_mass_storage/lun%d/file"
TARGET_SCREEN_HEIGHT := [COLOR="blue"]960[/COLOR]
TARGET_SCREEN_WIDTH := [COLOR="blue"]540[/COLOR]
BOARD_CUSTOM_BOOTIMG_MK := device/Xperia/M2/[COLOR="Blue"]custombootimg.mk[/COLOR] <- Refer to [URL="https://github.com/CyanogenMod/android_device_sony_rhine-common/blob/cm-11.0/BoardConfigCommon.mk#L47"]here[/URL] & [URL="https://github.com/CyanogenMod/android_device_sony_huashan/blob/cm-11.0/BoardConfig.mk#L104"]here[/URL]. i donno which one is suitable for your [COLOR="Blue"]M2[/COLOR]
unpackbootimg not found : then you are not using BBQLinux, try make -j4 otatools first . . .
yuweng said:
And i thought the guide is easy enough for everyone to follow & you didn't even read the whole post #1 & #2 or you would've known to provide as much info as possible so that it'll be easier to trouble-shoot your problem rather than guessing what you have . . . Fyi, Phil3759 has given up porting PhilZ Touch to new devices b'cos of this . . . :laugh:
Based on your past active forum post, its Sony Xperia M2 then learn more from here . . . :good:
Yes, mkvendor.sh will generate ONLY skeleton files, you need to manually fill-in PhilZ Touch build flags based on your device specification . . .
Code:
[COLOR="Blue"]#PhilZ Touch build flags for Xperia M2[/COLOR]
TARGET_COMMON_NAME := [COLOR="blue"]Xperia M2[/COLOR]
BRIGHTNESS_SYS_FILE := "/sys/class/leds/lcd-backlight/brightness"
TARGET_USE_CUSTOM_LUN_FILE_PATH := "/sys/devices/virtual/android_usb/android0/f_mass_storage/lun%d/file"
TARGET_SCREEN_HEIGHT := [COLOR="blue"]960[/COLOR]
TARGET_SCREEN_WIDTH := [COLOR="blue"]540[/COLOR]
BOARD_CUSTOM_BOOTIMG_MK := device/Xperia/M2/[COLOR="Blue"]custombootimg.mk[/COLOR] <- Refer to [URL="https://github.com/CyanogenMod/android_device_sony_rhine-common/blob/cm-11.0/BoardConfigCommon.mk#L47"]here[/URL] & [URL="https://github.com/CyanogenMod/android_device_sony_huashan/blob/cm-11.0/BoardConfig.mk#L104"]here[/URL]. i donno which one is suitable for your [COLOR="Blue"]M2[/COLOR]
unpackbootimg not found : then you are not using BBQLinux, try make -j4 otatools first . . .
Click to expand...
Click to collapse
I've read whole post but I'm newbie of building from source sorry for this and also my english not good.
Actually I want to build recovery for Alcatel with custpack partition.
I'm using ubuntu with all necessary tools for building I was earlier synced repo CM11 but repo from you synced for 20sec. I think it's happend because I have required files for building.
After that I decided to remove whole CM11 repo and synced your repo which is 1.9GB I waiting some time for syncing.
And after that I get this error: unpackbootimg not found.
And now this thread in on the xda portal
Regards

[BUILD][AOSP][KASAN][QUESTIONS][HELP] How to build a sailfish with kasan ?

I had try to build a sailfish(with kasan) rom for fuzzing througth the official page, but all the android-8.0.0_xx branch rom failed to boot the system after I flash into the pixel .
branch:
asop: android-8.0.0_r15
marlin: android-msm-marlin-3.18-oreo
step:
1. build kernel with kasan, and change compress type the lz4 to gz.
2. change the device/google/marlin/device-common.mk: LOCAL_KERNEL path to Image.gz-dtb file.
3. change the device/google/marlin/sailfish/BoardConfig.mk:
Code:
BOARD_KERNEL_BASE := 0x80000000
BOARD_KERNEL_PAGESIZE := 4096
-ifneq ($(filter sailfish_kasan, $(TARGET_PRODUCT)),)
BOARD_KERNEL_OFFSET := 0x80000
BOARD_KERNEL_TAGS_OFFSET := 0x02500000
BOARD_RAMDISK_OFFSET := 0x02700000
BOARD_MKBOOTIMG_ARGS := --kernel_offset $(BOARD_KERNEL_OFFSET) --ramdisk_offset $(BOARD_RAMDISK_OFFSET) --tags_offset $(BOARD_
-else
-BOARD_KERNEL_TAGS_OFFSET := 0x02000000
-BOARD_RAMDISK_OFFSET := 0x02200000
-endif
Any one build the sailfish(with KASAN), flash into Pixel and boot the system successfully ?
Or any log can show me why I boot the system failed ?

Device tree and Vendor blobs Porting guide for MTK

Hello everybody
this is my guide to port a device tree ans vendor blobs to your device so that you can compile custom ROMs from source without porting
This is not a complete guide that will work on all devices and fix all bugs keep it in mind
So lets start
First i want to thank all of my friends that helps me starting from Syed Ahmed Ali Shah , @izaq Kull , @Coulibaly Nonta , Ahmed Rahmy , @Roman Yuskovsky , @hyperion70 , @lenovoved , John Gothi , @ROCK rok , Dennis M Wachira , Zakaria Re RE , and many more
Without these wonderful guys up here i would never reach that so Thank you Guys
And please know that this guide costs me a lot of time and efforts to write it and i tried to explain every single step to make it clear
SO PLEASE DO NOT STEAL THIS GUIDE OR SHARE IT IN YOUR BLOG OR WEBSITE WITHOUT MY PERMISSION
1- Porting will be more easier if you can find a device with the same CPU same architecture that already have a device tree
2- If you find a device that verify the reqirements try to port a rom compiled with this device tree and fix bugs as much as possible
3- if porting was successful and the rom boots you need to remember every change you made because we will need it to adapt this device tree to our device
4- Some softwares needs to be installed on your computer for me the most important ones are
- Superrs kitchen if you have Ubuntu installed it is useful to unpack repack ROMs
- Assayed kitchen for Windows if you dont have ubuntu
- Notepad ++ for editing Files
- Winmerge for comparing files and folders
- File Seek for searching inside of files
here are the Device tree and Vendor Blobs links used in this porting
Device Tree : https://github.com/nasreirma/X571-test.git
Vendor Blobs : https://github.com/nasreirma/android_vendor_Infinix_X571.git
If you did all the steps and save all the files replaced and all the files edited now were good to go to modifying device tree to adapt it to our device
As example I will try to port Infinix NOTE 4 Pro device tree to Infinix S2 Based on Nougat 3.18.35+ 64-bit
Both of the devices are MT6753 so it will be more easier
I tried to port a ROM compiled for the Infinix NOTE 4 Pro to the S2 and it was successful but I face some Bugs and i will try to explain how to solve them Later
So i made some changes in 3 ompenents of the ROM wich is
- System Files
- Boot.img
- Build.prop
For System files i copy the changed files to vendor directly and overwrite them
For Boot.img i did replace he prebuilt kernel and changed some files in the ramdisk so i just look for the kernel in the device tree and I replace it and for the ramdisk files I make the same changes in the "rootdir" directory wich it contains ramdisk files
And for build.prop we need to make changes all over the device tree and vendor blobs so i need just to take a few lines from my build.prop and then i will explain file by file
the lines to take from your build.prop are
ro.product.model=Infinix S2
ro.product.brand=Infinix
ro.product.device=Infinix-X522
ro.product.name=H539
ro.product.manufacturer=Infinix
ro.board.platform=mt6753
ro.build.description=full_rlk6753_65_n-user 7.0 NRD90M 1502824225 release-keys
ro.build.fingerprint=Infinix/H539/Infinix-X522:7.0/NRD90M/X522-H539A-N-170816V187:user/release-keys
ro.mediatek.platform=MT6735
mediatek.wlan.chip=CONSYS_MT6735
mediatek.wlan.module.postfix=_consys_mt6735
ro.rlk_project=x522
After we get these lines we write our device tree path wich is "device/manufacturer/project_name" wich is in my case "device/Infinix/X522"
now we open the device tree and i will tell you wich file you need to modifying
I will not touch these folders "cmhw,EngineerMode,include,Mediatek,power,ril,seccomp,wifi_hal,wpa_supplicant_8_lib,YGPS"
we open bluetooth/bdroid_buildcfg.h
we change that line
#define BTM_DEF_LOCAL_NAME "Infinix NOTE 4 Pro"
to
#define BTM_DEF_LOCAL_NAME "Infinix S2" (check ro.product.model)
Lets move to "overlay" folder
the only fie that i will change is "overlay/frameworks/base/core/res/res/xml/power_profile.xml"
i will change this line " <item name="battery.capacity">5000</item>"
this line is designed for battery capacity do change with your device capacity
then we will move on patches folder
i will change these 2 files "apply-patches.sh,check-patches.sh"
i will change only the device path form "device/Infinix/X571" to "device/Infinix/X522" in these 2 files
then "prebuild folder
i will change only the kernel to my stock kernel
then "rootdir" folder
you need to apply the changes you did earlier on ramdisk into this folder if you add or delete a file you need to mention it in the device make file to avoid errors during compiling (i will explain when we move to the file)
were done with the folders lets move to the files inside
starting with "Android.mk"
we change that line "ifeq ($(TARGET_DEVICE),X571)" with our device project name wich it is in my case "ifeq ($(TARGET_DEVICE),X522)"
For "AndroidBoard.mk"
if you have got kernel source and you want to use it comment this line "ALL_PREBUILT += $(INSTALLED_KERNEL_TARGET)"
if not just leave it and dont change anything in this file
For "BoardConfig.mk"
first we need to change the device path and vendor path whenever we found it in this file
in my case its present in hese 4 lines
DEVICE_PATH := device/Infinix/X571
VENDOR_PATH := vendor/Infinix/X571
BOARD_RIL_CLASS := ../../../device/Infinix/X571/ril/
BOARD_SECCOMP_POLICY += device/Infinix/X571/seccomp
so we change to
DEVICE_PATH := device/Infinix/X522
VENDOR_PATH := vendor/Infinix/X522
BOARD_RIL_CLASS := ../../../device/Infinix/X522/ril/
BOARD_SECCOMP_POLICY += device/Infinix/X522/seccomp
lets move to "# Architecture" Part
if you have a 32-bit device and you want to port a my 64-bit device tree you need to uncomment this line "#FORCE_32_BIT := false"
uncomment means to delete "#" and thats it
for 32-bit you need to make more changesso its better to take from a 32-bit device and i will explain how to adapt to 32-bit from 64-bit so dont worry
for "# Platform"
we change that line to our device platform "TARGET_BOARD_PLATFORM := mt6753" better port from a device with the sae platform but its possible to port between mt653/mt6735/mt6737m
since is the same platform for me i will leave it
same for "# Bootloader"
TARGET_BOOTLOADER_BOARD_NAME := mt6753
for "# Kernel"
if you have a prebuilt kernel and want to use prebuilt kernel dont touch anything
if you want to use kernel sources you need to delete this line "TARGET_PREBUILT_KERNEL := $(DEVICE_PATH)/prebuild/kernel"
and add this lines
if you have 32-bit add this after "ifeq ($(FORCE_32_BIT),true)" and before "else"
BOARD_KERNEL_IMAGE_NAME := zImage-dtb
TARGET_KERNEL_CONFIG := rlk6753_n_defconfig (change to your device defconfig)
TARGET_KERNEL_SOURCE := kernel/Infinix/X522
if you have 64-bit add this after "else" and before "endif"
BOARD_KERNEL_IMAGE_NAME := Image.gz-dtb
TARGET_KERNEL_CONFIG := rlk6753_n_defconfig (change to your device defconfig)
TARGET_KERNEL_SOURCE := kernel/Infinix/X522
for "# Assert"
change this line "TARGET_OTA_ASSERT_DEVICE := X571,Infinix NOTE 4 Pro,H5311,Infinix-X571" you can refer to the lines that we took from build.prop
and thats it for BoardConfig.mk
lets move to "full_X571.mk"
first we rename it to "full_X522.mk" (refer to the device project name)
and then we open it to modify it
as "BoardConfig.mk" we will change device paths
LOCAL_PATH := device/Infinix/X571 to LOCAL_PATH := device/Infinix/X522
$(call inherit-product-if-exists, vendor/Infinix/X571/X571-vendor.mk) to $(call inherit-product-if-exists, vendor/Infinix/X522/X522-vendor.mk)
DEVICE_PACKAGE_OVERLAYS += device/Infinix/X571/overlay to DEVICE_PACKAGE_OVERLAYS += device/Infinix/X522/overlay
PRODUCT_PACKAGE_OVERLAYS += device/Infinix/X571/overlay to PRODUCT_PACKAGE_OVERLAYS += device/Infinix/X522/overlay
for 32-bit change
$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk) to $(call inherit-product, $(SRC_TARGET_DIR)/product/core.mk)
for "# Dalvik/HWUI"
$(call inherit-product-if-exists, frameworks/native/build/phone-xxhdpi-3072-dalvik-heap.mk)
$(call inherit-product-if-exists, frameworks/native/build/phone-xxhdpi-3072-hwui-memory.mk)
we will change only xxhdpi and 3072
since my S2 is xhdpi i will change it to that
and since it is 2GB RAM i will change 3072 to 2048 if you have 3GB or more RAM just leave it 3072
same for "# set locales & aapt config."
PRODUCT_AAPT_CONFIG := normal xhdpi xxhdpi
PRODUCT_AAPT_PREF_CONFIG := xxhdpi
for these 2 lines change to your default country language and region for me its Morocco "MA" and french "fr"
PRODUCT_DEFAULT_LANGUAGE := fr
PRODUCT_DEFAULT_REGION := MA
for "# Ramdisk"it depends on your changes to the "rootdir" directory if you add a file mention here if you delete delete this line
do as example i added a file named "example" so i will add this line
" $(LOCAL_PATH)/rootdir/example:root/example "
for " power.mt6753" or any file with mt6753 change with your platform
like if i have mt6737m platform i will change that line to " power.mt6737m"
this line is for device density
" ro.sf.lcd_density=480 " i will change to 320 since my S2 density is 320
for those lines here
PRODUCT_BUILD_PROP_OVERRIDES += PRODUCT_NAME=H5311
PRODUCT_BUILD_PROP_OVERRIDES += PRODUCT_MODEL="Infinix NOTE 4 Pro"
PRODUCT_BUILD_PROP_OVERRIDES += PRODUCT_BRAND=Infinix
PRODUCT_BUILD_PROP_OVERRIDES += PRODUCT_DEVICE=Infinix-X571
PRODUCT_BUILD_PROP_OVERRIDES += BUILD_FINGERPRINT=Infinix/H5311/Infinix-X571:7.0/NRD90M/X571-H5311A-N-170701V151:user/release-keys
PRODUCT_BUILD_PROP_OVERRIDES += PRIVATE_BUILD_DESC="full_rlk6753_65_n-user 7.0 NRD90M 1498916323 release-keys"
refer to the lines that you took earlier from build.prop
and were done from full_X522.mk
lets move to "lineage.mk"
for "# Release name"
PRODUCT_RELEASE_NAME := Infinix NOTE 4 Pro
I will change to
PRODUCT_RELEASE_NAME := Infinix S2
for "# Inherit device configuration"
$(call inherit-product, device/Infinix/X571/full_X571.mk)
I will change to
$(call inherit-product, device/Infinix/X522/full_X522.mk)
for those 3 lines
TARGET_SCREEN_HEIGHT := 1920
TARGET_SCREEN_WIDTH := 1080
DEVICE_RESOLUTION := 1080x1920
change to your device weight and width for me its 1280x720
so it will be
TARGET_SCREEN_HEIGHT := 1280
TARGET_SCREEN_WIDTH := 720
DEVICE_RESOLUTION := 720x1280
for "# Device identifier. This must come after all inclusions"
PRODUCT_DEVICE := X571
PRODUCT_NAME := lineage_X571
PRODUCT_BRAND := Infinix
PRODUCT_MODEL := Infinix NOTE 4 Pro
PRODUCT_MANUFACTURER := Infinix
change to your device infos (refer to build.prop)
so it will be
PRODUCT_DEVICE := X522
PRODUCT_NAME := lineage_X522
PRODUCT_BRAND := Infinix
PRODUCT_MODEL := Infinix S2
PRODUCT_MANUFACTURER := Infinix
for "PRODUCT_GMS_CLIENTID_BASE := android-Infinix" change to your device manufacturer like if you have tecno must change to "PRODUCT_GMS_CLIENTID_BASE := android-tecno"
and for "# Available languages"
PRODUCT_LOCALES := fr_MA ar_MA ru_RU en_US en_AU en_IN fr_FR it_IT es_ES et_EE de_DE nl_NL cs_CZ pl_PL ja_JP zh_TW zh_CN zh_HK ko_KR nb_NO es_US da_DK el_GR tr_TR pt_PT pt_BR sv_SE bg_BG ca_ES en_GB fi_FI hi_IN hr_HR hu_HU in_ID iw_IL lt_LT lv_LV ro_RO sk_SK sl_SI sr_RS vi_VN tl_PH ar_EG fa_IR th_TH sw_TZ ms_MY af_ZA zu_ZA am_ET en_XA ar_XB fr_CA km_KH lo_LA ne_NP si_LK mn_MN hy_AM az_AZ ka_GE my_MM mr_IN ml_IN is_IS mk_MK ky_KG eu_ES gl_ES bn_BD ta_IN kn_IN te_IN uz_UZ ur_PK kk_KZ sq_AL gu_IN pa_IN be_BY bs_BA
add or delete whatever language you want
thats all for lineage.mk
for system.prop refer to your build.prop and change from your stock
for MANUAL.md and README.md just bunch of files to specify for wich device is device tree and the compiling instructions
and finally "vendorsetup.sh"
just change this line " add_lunch_combo lineage_X571-$var" to your device project name
so for me it ill be
" add_lunch_combo lineage_X522-$var"
and thats it for the device tree
lets move to the vendor blobs now
first replace all the files you already used for porting the rom and overwrite any
then lets move to the files
for "Android.mk"
change only that line
ifneq ($(filter X571, $(TARGET_DEVICE)),)
to your device project name
ifneq ($(filter X522, $(TARGET_DEVICE)),)
For "X571-vendor.mk" rename it to "X522-vendor.mk" (always device project name"
and change paths from "vendor/Infinix/X571" to "vendor/Infinix/X522"
and if you add a folder add the line as well in this file
and Hola finally we finished porting the device tree and vendor blobs
we can start now building our first ROM for our device
Now after i did all of that i found 3 Major Bugs on my ROM for the S2
wich are
- Camera
- Fingerprint
- Video Recording (after fixing Camera)
so for Camera i replaced all files responsible for camera exept "libcam.client.so" wich it causes bootloop
do what did i do is taking a logcat and analyse it (before booloop)
so i found i symbol missing (its present only in libcam.client.so"
so if you suufer from the same issue and found a missing symbol
you need to copy that symbol
in my case it was "_ZN7android16CameraParameters20KEY_APP_PACKAGE_NAMEE" it may change according to the device
and i add this line that contains the symbol to "mtk_symbols/mtk_cam.cpp"
void _ZN7android16CameraParameters20KEY_APP_PACKAGE_NAMEE () {
}
between the "extern "C" {" and the final "}"
so camera got fixed
for fingerprint i didnt fix it yet but the problem in "sepolicy" folder need to add some lines in order to make it work
and for video recording i didnt manage to fix it but i will try to
So thats all hope that this guide helps you porting a device tree for your devices
Deleted
Deleted
nasreirma said:
Hello everybody
this is my guide to port a device tree ans vendor blobs to your device so that you can compile custom ROMs from source without porting
This is not a complete guide that will work on all devices and fix all bugs keep it in mind
So lets start
First i want to thank all of my friends that helps me starting from Syed Ahmed Ali Shah , @izaq Kull , @Coulibaly Nonta , Ahmed Rahmy , @Roman Yuskovsky , @hyperion70 , @lenovoved , John Gothi , @ROCK rok , Dennis M Wachira , Zakaria Re RE , and many more
Without these wonderful guys up here i would never reach that so Thank you Guys
And please know that this guide costs me a lot of time and efforts to write it and i tried to explain every single step to make it clear
SO PLEASE DO NOT STEAL THIS GUIDE OR SHARE IT IN YOUR BLOG OR WEBSITE WITHOUT MY PERMISSION
1- Porting will be more easier if you can find a device with the same CPU same architecture that already have a device tree
2- If you find a device that verify the reqirements try to port a rom compiled with this device tree and fix bugs as much as possible
3- if porting was successful and the rom boots you need to remember every change you made because we will need it to adapt this device tree to our device
4- Some softwares needs to be installed on your computer for me the most important ones are
- Superrs kitchen if you have Ubuntu installed it is useful to unpack repack ROMs
- Assayed kitchen for Windows if you dont have ubuntu
- Notepad ++ for editing Files
- Winmerge for comparing files and folders
- File Seek for searching inside of files
here are the Device tree and Vendor Blobs links used in this porting
Device Tree : https://github.com/nasreirma/X571-test.git
Vendor Blobs : https://github.com/nasreirma/android_vendor_Infinix_X571.git
If you did all the steps and save all the files replaced and all the files edited now were good to go to modifying device tree to adapt it to our device
As example I will try to port Infinix NOTE 4 Pro device tree to Infinix S2 Based on Nougat 3.18.35+ 64-bit
Both of the devices are MT6753 so it will be more easier
I tried to port a ROM compiled for the Infinix NOTE 4 Pro to the S2 and it was successful but I face some Bugs and i will try to explain how to solve them Later
So i made some changes in 3 ompenents of the ROM wich is
- System Files
- Boot.img
- Build.prop
For System files i copy the changed files to vendor directly and overwrite them
For Boot.img i did replace he prebuilt kernel and changed some files in the ramdisk so i just look for the kernel in the device tree and I replace it and for the ramdisk files I make the same changes in the "rootdir" directory wich it contains ramdisk files
And for build.prop we need to make changes all over the device tree and vendor blobs so i need just to take a few lines from my build.prop and then i will explain file by file
the lines to take from your build.prop are
ro.product.model=Infinix S2
ro.product.brand=Infinix
ro.product.device=Infinix-X522
ro.product.name=H539
ro.product.manufacturer=Infinix
ro.board.platform=mt6753
ro.build.description=full_rlk6753_65_n-user 7.0 NRD90M 1502824225 release-keys
ro.build.fingerprint=Infinix/H539/Infinix-X522:7.0/NRD90M/X522-H539A-N-170816V187:user/release-keys
ro.mediatek.platform=MT6735
mediatek.wlan.chip=CONSYS_MT6735
mediatek.wlan.module.postfix=_consys_mt6735
ro.rlk_project=x522
After we get these lines we write our device tree path wich is "device/manufacturer/project_name" wich is in my case "device/Infinix/X522"
now we open the device tree and i will tell you wich file you need to modifying
I will not touch these folders "cmhw,EngineerMode,include,Mediatek,power,ril,seccomp,wifi_hal,wpa_supplicant_8_lib,YGPS"
we open bluetooth/bdroid_buildcfg.h
we change that line
#define BTM_DEF_LOCAL_NAME "Infinix NOTE 4 Pro"
to
#define BTM_DEF_LOCAL_NAME "Infinix S2" (check ro.product.model)
Lets move to "overlay" folder
the only fie that i will change is "overlay/frameworks/base/core/res/res/xml/power_profile.xml"
i will change this line " <item name="battery.capacity">5000</item>"
this line is designed for battery capacity do change with your device capacity
then we will move on patches folder
i will change these 2 files "apply-patches.sh,check-patches.sh"
i will change only the device path form "device/Infinix/X571" to "device/Infinix/X522" in these 2 files
then "prebuild folder
i will change only the kernel to my stock kernel
then "rootdir" folder
you need to apply the changes you did earlier on ramdisk into this folder if you add or delete a file you need to mention it in the device make file to avoid errors during compiling (i will explain when we move to the file)
were done with the folders lets move to the files inside
starting with "Android.mk"
we change that line "ifeq ($(TARGET_DEVICE),X571)" with our device project name wich it is in my case "ifeq ($(TARGET_DEVICE),X522)"
For "AndroidBoard.mk"
if you have got kernel source and you want to use it comment this line "ALL_PREBUILT += $(INSTALLED_KERNEL_TARGET)"
if not just leave it and dont change anything in this file
For "BoardConfig.mk"
first we need to change the device path and vendor path whenever we found it in this file
in my case its present in hese 4 lines
DEVICE_PATH := device/Infinix/X571
VENDOR_PATH := vendor/Infinix/X571
BOARD_RIL_CLASS := ../../../device/Infinix/X571/ril/
BOARD_SECCOMP_POLICY += device/Infinix/X571/seccomp
so we change to
DEVICE_PATH := device/Infinix/X522
VENDOR_PATH := vendor/Infinix/X522
BOARD_RIL_CLASS := ../../../device/Infinix/X522/ril/
BOARD_SECCOMP_POLICY += device/Infinix/X522/seccomp
lets move to "# Architecture" Part
if you have a 32-bit device and you want to port a my 64-bit device tree you need to uncomment this line "#FORCE_32_BIT := false"
uncomment means to delete "#" and thats it
for 32-bit you need to make more changesso its better to take from a 32-bit device and i will explain how to adapt to 32-bit from 64-bit so dont worry
for "# Platform"
we change that line to our device platform "TARGET_BOARD_PLATFORM := mt6753" better port from a device with the sae platform but its possible to port between mt653/mt6735/mt6737m
since is the same platform for me i will leave it
same for "# Bootloader"
TARGET_BOOTLOADER_BOARD_NAME := mt6753
for "# Kernel"
if you have a prebuilt kernel and want to use prebuilt kernel dont touch anything
if you want to use kernel sources you need to delete this line "TARGET_PREBUILT_KERNEL := $(DEVICE_PATH)/prebuild/kernel"
and add this lines
if you have 32-bit add this after "ifeq ($(FORCE_32_BIT),true)" and before "else"
BOARD_KERNEL_IMAGE_NAME := zImage-dtb
TARGET_KERNEL_CONFIG := rlk6753_n_defconfig (change to your device defconfig)
TARGET_KERNEL_SOURCE := kernel/Infinix/X522
if you have 64-bit add this after "else" and before "endif"
BOARD_KERNEL_IMAGE_NAME := Image.gz-dtb
TARGET_KERNEL_CONFIG := rlk6753_n_defconfig (change to your device defconfig)
TARGET_KERNEL_SOURCE := kernel/Infinix/X522
for "# Assert"
change this line "TARGET_OTA_ASSERT_DEVICE := X571,Infinix NOTE 4 Pro,H5311,Infinix-X571" you can refer to the lines that we took from build.prop
and thats it for BoardConfig.mk
lets move to "full_X571.mk"
first we rename it to "full_X522.mk" (refer to the device project name)
and then we open it to modify it
as "BoardConfig.mk" we will change device paths
LOCAL_PATH := device/Infinix/X571 to LOCAL_PATH := device/Infinix/X522
$(call inherit-product-if-exists, vendor/Infinix/X571/X571-vendor.mk) to $(call inherit-product-if-exists, vendor/Infinix/X522/X522-vendor.mk)
DEVICE_PACKAGE_OVERLAYS += device/Infinix/X571/overlay to DEVICE_PACKAGE_OVERLAYS += device/Infinix/X522/overlay
PRODUCT_PACKAGE_OVERLAYS += device/Infinix/X571/overlay to PRODUCT_PACKAGE_OVERLAYS += device/Infinix/X522/overlay
for 32-bit change
$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk) to $(call inherit-product, $(SRC_TARGET_DIR)/product/core.mk)
for "# Dalvik/HWUI"
$(call inherit-product-if-exists, frameworks/native/build/phone-xxhdpi-3072-dalvik-heap.mk)
$(call inherit-product-if-exists, frameworks/native/build/phone-xxhdpi-3072-hwui-memory.mk)
we will change only xxhdpi and 3072
since my S2 is xhdpi i will change it to that
and since it is 2GB RAM i will change 3072 to 2048 if you have 3GB or more RAM just leave it 3072
same for "# set locales & aapt config."
PRODUCT_AAPT_CONFIG := normal xhdpi xxhdpi
PRODUCT_AAPT_PREF_CONFIG := xxhdpi
for these 2 lines change to your default country language and region for me its Morocco "MA" and french "fr"
PRODUCT_DEFAULT_LANGUAGE := fr
PRODUCT_DEFAULT_REGION := MA
for "# Ramdisk"it depends on your changes to the "rootdir" directory if you add a file mention here if you delete delete this line
do as example i added a file named "example" so i will add this line
" $(LOCAL_PATH)/rootdir/example:root/example "
for " power.mt6753" or any file with mt6753 change with your platform
like if i have mt6737m platform i will change that line to " power.mt6737m"
this line is for device density
" ro.sf.lcd_density=480 " i will change to 320 since my S2 density is 320
for those lines here
PRODUCT_BUILD_PROP_OVERRIDES += PRODUCT_NAME=H5311
PRODUCT_BUILD_PROP_OVERRIDES += PRODUCT_MODEL="Infinix NOTE 4 Pro"
PRODUCT_BUILD_PROP_OVERRIDES += PRODUCT_BRAND=Infinix
PRODUCT_BUILD_PROP_OVERRIDES += PRODUCT_DEVICE=Infinix-X571
PRODUCT_BUILD_PROP_OVERRIDES += BUILD_FINGERPRINT=Infinix/H5311/Infinix-X571:7.0/NRD90M/X571-H5311A-N-170701V151:user/release-keys
PRODUCT_BUILD_PROP_OVERRIDES += PRIVATE_BUILD_DESC="full_rlk6753_65_n-user 7.0 NRD90M 1498916323 release-keys"
refer to the lines that you took earlier from build.prop
and were done from full_X522.mk
lets move to "lineage.mk"
for "# Release name"
PRODUCT_RELEASE_NAME := Infinix NOTE 4 Pro
I will change to
PRODUCT_RELEASE_NAME := Infinix S2
for "# Inherit device configuration"
$(call inherit-product, device/Infinix/X571/full_X571.mk)
I will change to
$(call inherit-product, device/Infinix/X522/full_X522.mk)
for those 3 lines
TARGET_SCREEN_HEIGHT := 1920
TARGET_SCREEN_WIDTH := 1080
DEVICE_RESOLUTION := 1080x1920
change to your device weight and width for me its 1280x720
so it will be
TARGET_SCREEN_HEIGHT := 1280
TARGET_SCREEN_WIDTH := 720
DEVICE_RESOLUTION := 720x1280
for "# Device identifier. This must come after all inclusions"
PRODUCT_DEVICE := X571
PRODUCT_NAME := lineage_X571
PRODUCT_BRAND := Infinix
PRODUCT_MODEL := Infinix NOTE 4 Pro
PRODUCT_MANUFACTURER := Infinix
change to your device infos (refer to build.prop)
so it will be
PRODUCT_DEVICE := X522
PRODUCT_NAME := lineage_X522
PRODUCT_BRAND := Infinix
PRODUCT_MODEL := Infinix S2
PRODUCT_MANUFACTURER := Infinix
for "PRODUCT_GMS_CLIENTID_BASE := android-Infinix" change to your device manufacturer like if you have tecno must change to "PRODUCT_GMS_CLIENTID_BASE := android-tecno"
and for "# Available languages"
PRODUCT_LOCALES := fr_MA ar_MA ru_RU en_US en_AU en_IN fr_FR it_IT es_ES et_EE de_DE nl_NL cs_CZ pl_PL ja_JP zh_TW zh_CN zh_HK ko_KR nb_NO es_US da_DK el_GR tr_TR pt_PT pt_BR sv_SE bg_BG ca_ES en_GB fi_FI hi_IN hr_HR hu_HU in_ID iw_IL lt_LT lv_LV ro_RO sk_SK sl_SI sr_RS vi_VN tl_PH ar_EG fa_IR th_TH sw_TZ ms_MY af_ZA zu_ZA am_ET en_XA ar_XB fr_CA km_KH lo_LA ne_NP si_LK mn_MN hy_AM az_AZ ka_GE my_MM mr_IN ml_IN is_IS mk_MK ky_KG eu_ES gl_ES bn_BD ta_IN kn_IN te_IN uz_UZ ur_PK kk_KZ sq_AL gu_IN pa_IN be_BY bs_BA
add or delete whatever language you want
thats all for lineage.mk
for system.prop refer to your build.prop and change from your stock
for MANUAL.md and README.md just bunch of files to specify for wich device is device tree and the compiling instructions
and finally "vendorsetup.sh"
just change this line " add_lunch_combo lineage_X571-$var" to your device project name
so for me it ill be
" add_lunch_combo lineage_X522-$var"
and thats it for the device tree
lets move to the vendor blobs now
first replace all the files you already used for porting the rom and overwrite any
then lets move to the files
for "Android.mk"
change only that line
ifneq ($(filter X571, $(TARGET_DEVICE)),)
to your device project name
ifneq ($(filter X522, $(TARGET_DEVICE)),)
For "X571-vendor.mk" rename it to "X522-vendor.mk" (always device project name"
and change paths from "vendor/Infinix/X571" to "vendor/Infinix/X522"
and if you add a folder add the line as well in this file
and Hola finally we finished porting the device tree and vendor blobs
we can start now building our first ROM for our device
Now after i did all of that i found 3 Major Bugs on my ROM for the S2
wich are
- Camera
- Fingerprint
- Video Recording (after fixing Camera)
so for Camera i replaced all files responsible for camera exept "libcam.client.so" wich it causes bootloop
do what did i do is taking a logcat and analyse it (before booloop)
so i found i symbol missing (its present only in libcam.client.so"
so if you suufer from the same issue and found a missing symbol
you need to copy that symbol
in my case it was "_ZN7android16CameraParameters20KEY_APP_PACKAGE_NAMEE" it may change according to the device
and i add this line that contains the symbol to "mtk_symbols/mtk_cam.cpp"
void _ZN7android16CameraParameters20KEY_APP_PACKAGE_NAMEE () {
}
between the "extern "C" {" and the final "}"
so camera got fixed
for fingerprint i didnt fix it yet but the problem in "sepolicy" folder need to add some lines in order to make it work
and for video recording i didnt manage to fix it but i will try to
So thats all hope that this guide helps you porting a device tree for your devices
Click to expand...
Click to collapse
How you get/extracts your device tree and vendor blobs. Is it available for you device or you build one
Thanks for the guide, but here's a question. I'm trying to use GSI ROM on my infinix note7. I got my overlay ready, but still i'm facing huge battery drain on GSI ROM and also the battery usage data is not available under battery settings. Could you throw some light why is it happening? Also, mobile data connection speed is too slow on GSI ROM, and my phone shows fake third sim slot with carrier name "china unicom", where my device has only 2 slots and no e-sim support. Being an expert, please guide me on how to handle these issues.

Preinstall APK to custom Android 10 ROM

Hey guys, I've tried to preinstall an prebuilt and signed APK to an Android 10 AOSP build, but when I launch the emulator locally the APK is not there... I've tried searching similar threads here and couldn't find any.
First I tried to build the "device/generic/armv7-a-neon" one, but no luck, then I've copied the config to my custom device and modified it there, still no luck. Here are my steps:
Bash:
repo init -u https://android.googlesource.com/platform/manifest -b android-security-10.0.0_r51
repo sync
echo "PRODUCT_PROPERTY_OVERRIDES += ro.config.low_ram=true" >> device/generic/armv7-a-neon/AndroidProducts.mk
#Add MyApp
mkdir packages/apps/MyApp
echo 'LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := MyApp
LOCAL_MODULE_TAGS := optional
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_SRC_FILES := MyApp.apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
include $(BUILD_PREBUILT)' >> packages/apps/MyApp/Android.mk
echo "PRODUCT_PACKAGES += MyApp" >> ~/WORKING_DIRECTORY/build/target/product/handheld_product.mk
source build/envsetup.sh
lunch aosp_arm-eng
#for my own custom device config I am using:
#lunch custom_armv7_neon-eng
make -j8
#after that I am copying the out/target/product/generic/system.img and out/target/product/generic/userdata.img to my local machine
#and running on my local AVD emulator, which I've created from scratch and specifying the system.img and userdata.img
emulator -avd Pixel_4_API_25_ARM -system ~/aosp/system.img -initdata ~/aosp/userdata.img
The emulator launches with the system and the apk is not preinstalled.
Any feedback would be very appreciated

Categories

Resources