[Miscellaneous Android Development] yuweng:
Features

Auto mode

- You don't need to know a thing & it'll port a working TWRP for your MTK & that is why it is called Magic . . .

Manual mode

- Let you choose either to use your boot.img or recovery.img for porting.

- Let you manually choose your device res, data/media device, flipped screen & uses all files from your stock recovery. Refer to here for more info . . .

- device resolutions

- data/media

- flipped screen

UnPack/ RePack mode

- Let you mod whatever you want with option to install it right away to your MTK

Requirement

- Requires Root

- Install adb driver

- Enable USB debugging

- Disable UAC

- Disable driver signature

- Compatibility with KitKat

- No need ro.secure=0 to run

recovery.fstab

How-to

Updates

This porting tool is build on jellybean repo so that it can support three generation of MTK SoC with non-device specific build flags to maintain compatibility. Below specific build flags are not use & it seem that the 2.8.1.0 porting tool doesn't work across MTK device. However, fyi, it works fine on mine

TW_INTERNAL_STORAGE_PATH := "/data/media"

TW_INTERNAL_STORAGE_MOUNT_POINT := "data"

TW_EXTERNAL_STORAGE_PATH := "/sdcard"

TW_EXTERNAL_STORAGE_MOUNT_POINT := "sdcard"

TW_INTERNAL_STORAGE_PATH := "/emmc"

TW_INTERNAL_STORAGE_MOUNT_POINT := "emmc"

TW_EXTERNAL_STORAGE_PATH := "/sdcard"

TW_EXTERNAL_STORAGE_MOUNT_POINT := "sdcard"

SP1_NAME := "uboot"

SP1_DISPLAY_NAME := "uboot"

SP1_BACKUP_METHOD := image

SP1_MOUNTABLE := 0

SP2_NAME := "nvram"

SP2_DISPLAY_NAME := "nvram"

SP2_BACKUP_METHOD := image

SP2_MOUNTABLE := 0

SP3_NAME := "custpack"

SP3_DISPLAY_NAME := "custpack"

SP3_BACKUP_METHOD := image

SP3_MOUNTABLE := 0

So pls refer to here <- *RECOVERY.FSTAB* to use the different flags to properly support your MTK device.

With non-device specific build flags, compatibility can be maintained across MTK SoC, you only need to mod the recovery.fstab. Having said that, i need users feedback so that i can incorporate those changes or this porting tool will remain as it is on every new release.

It seems that you need to label Sdcard as Internal Storage or External Storage to properly support proper BackUp/ Restore function. Refer to here for more info . . .

TTF font is also disable to maintain compatibility across MTK SoC.

-------------------------------------------

Preface

As mentioned few times, i don't own all the MTK devices available on the market so a few things might not work on your MTK. So use the UnPack/ RePack mode to edit necessary files typically the init.rc & recovery.fstab.

UnPack other MTK TWRP by other DEVs & see how they did it.

google your device info & search github & see how they did it, Eg. here for USB-OTG Thanks to hehua2008 the only one that published/ i can find for MTK TWRP.

As mentioned few times, the porting tool now is AIO so go ahead & play with it.

Intro

What is recovery.fstab

The actual require backup partition for MTKs or any android devices are actually ONLY just the boot, cache, data & system partition.

When you encounter any problems such as doesn't boot/ bootloop issues after a new app installation or anything at all, a Wipe Data/ Factory Reset or Restore with ONLY the system & data partition & you'll be able to revert to previous working state in a short while. Thats why its very important to make a backup before modding anything at all !

For bootloop issues with new firmware installation (update.zip) then its best to restore everything. Having said that, if you flash preloader using SP Flash Tool then TWRP restore would not be able to restore it, thats why it is important to backup your Factory ROM with MTK Droid Root & Tools first.

How to identify MTK partition

WARNING : Might corrupt or brick your MTK when you specify the wrong partition at recovery.fstab ! You have been fore-warned . . .

adb shell cat /proc/dumchar_info OR adb shell cat /proc/mtd

Below are typical MTK partition layout

Part_Name Size StartAddr Type MapTo
preloader 0x0000000000040000 0x0000000000000000 2 /dev/misc-sd
dsp_bl 0x00000000005c0000 0x0000000000040000 2 /dev/misc-sd
mbr 0x0000000000004000 0x0000000000000000 2 /dev/block/mmcblk0
ebr1 0x0000000000004000 0x0000000000004000 2 /dev/block/mmcblk0p1
pmt 0x0000000000400000 0x0000000000008000 2 /dev/block/mmcblk0
[COLOR="Blue"]nvram[/COLOR] 0x0000000000500000 0x0000000000408000 2 /dev/block/mmcblk0
seccfg 0x0000000000020000 0x0000000000908000 2 /dev/block/mmcblk0
[COLOR="blue"]uboot[/COLOR] 0x0000000000060000 0x0000000000928000 2 /dev/block/mmcblk0
bootimg 0x0000000000600000 0x0000000000988000 2 /dev/block/mmcblk0
recovery 0x0000000000800000 0x0000000000f88000 2 /dev/block/mmcblk0
sec_ro 0x0000000000400000 0x0000000001788000 2 /dev/block/mmcblk0p2
misc 0x0000000000060000 0x0000000001b88000 2 /dev/block/mmcblk0
logo 0x0000000000300000 0x0000000001be8000 2 /dev/block/mmcblk0
expdb 0x0000000000200000 0x0000000001ee8000 2 /dev/block/mmcblk0
android 0x0000000020100000 0x00000000020e8000 2 /dev/block/mmcblk0p[COLOR="blue"]3[/COLOR]
cache 0x0000000020100000 0x00000000221e8000 2 /dev/block/mmcblk0p[COLOR="blue"]4[/COLOR]
usrdata 0x0000000020100000 0x00000000422e8000 2 /dev/block/mmcblk0p[COLOR="blue"]5[/COLOR]
fat 0x0000000085338000 0x00000000623e8000 2 /dev/block/mmcblk0p[COLOR="blue"]6[/COLOR]
bmtpool 0x0000000001500000 0x00000000ff9f00a8 2 /dev/block/mmcblk0
Part_Name:Partition name you should open;
Size:size of partition
StartAddr:Start Address of partition;
Type:Type of partition(MTD=1,EMMC=2)
MapTo:actual device you operate

Standard TWRP recovery.fstab for MTK devices

# mount point	fstype device	[device2]

/boot emmc /dev/bootimg
/recovery emmc /dev/recovery
/system ext4 /dev/block/mmcblk0p[COLOR="Blue"]3[/COLOR]
/cache ext4 /dev/block/mmcblk0p[COLOR="blue"]4[/COLOR]
/data ext4 /dev/block/mmcblk0p[COLOR="blue"]5[/COLOR]
/emmc vfat /dev/block/mmcblk0p[COLOR="blue"]6[/COLOR]
/sdcard vfat /dev/block/mmcblk1p1 /dev/block/mmcblk1
/sd-ext auto /dev/block/mmcblk1p2
/nvram emmc /dev/nvram flags=display="[COLOR="blue"]Nvram[/COLOR]";backup=1
/uboot emmc /dev/uboot flags=display="[COLOR="blue"]Uboot[/COLOR]";backup=1

Thanks to MrJavum who discover that we can also backup Nvram & Uboot for MTK devices . . . :good:

MTK Uboot also consist of camera driver & this feature is extremely useful when you upgrade your device firmware, typically it will replace the Uboot & your camera doesn't work after that. A simple restore & you'll have your camera working again in no time.

MTK Nvram consist of your IMEI & this feature is extremely useful when you have corrupted it, a simple restore & you'll have your phone in working state again.

Below format was discovered by bgcngm & it has saved me a few lines of codes as MTK manufacturer tends to use different partition no. from each other. Eg. Some might be using mmcblk0p6 for system & some uses mmcblk0p3 while emmc@android will work on all MTK devices.

# mount point	fstype device	[device2]

/boot emmc /dev/bootimg
/recovery emmc /dev/recovery flags=display="recovery";backup=1
/uboot emmc /dev/uboot flags=display="uboot";backup=1
/nvram emmc /dev/nvram flags=display="nvram";backup=1
/cache ext4 /[COLOR="blue"]emmc@cache[/COLOR]
/data ext4 /[COLOR="blue"]emmc@usrdata[/COLOR]
/system ext4 /[COLOR="blue"]emmc@android[/COLOR]
/emmc vfat /[COLOR="blue"]emmc@fat[/COLOR]
/sdcard vfat /dev/block/mmcblk1p1 /dev/block/mmcblk1
/sd-ext auto /dev/block/mmcblk1p2

Having said that, few has reported back that its not compatible for their MTK then you'll need to unpack it & use the device block path /dev/block/mmcblk0pX instead of this soft-link emmc@android format. Use Notepad++ for editing. Updates : Porting tool now uses direct device block path.

Below examples are some of MrJavum TWRP recovery.fstab for MTKs

# mount point	fstype	device	[device2]

/boot emmc /dev/bootimg
/cache ext4 /emmc@cache
/data ext4 /emmc@usrdata
/misc emmc /dev/misc
/recovery emmc /dev/recovery
/system ext4 /emmc@android
[COLOR="blue"]/preload[/COLOR] ext4 /[COLOR="blue"]emmc@preload[/COLOR] flags=display="[COLOR="blue"]Preload[/COLOR]";backup=1;wipeingui
/external_sd vfat /dev/block/mmcblk1p1 flags=display="External SD-card";storage;wipeingui;removable
/nvram emmc /dev/nvram flags=display="Nvram";backup=1
/uboot emmc /dev/uboot flags=display="Uboot";backup=1
/logo emmc /dev/logo flags=display="Boot Logo";backup=1

#mt6582/recovery_emmc.fstab

To support preload partition you'll need to specify it at init.rc too.

[COLOR="Blue"]mkdir /preload[/COLOR]
mkdir /external_sd
mkdir /system
mkdir /data
mkdir /cache
mount /tmp /tmp tmpfs

/boot	emmc	/dev/bootimg
/cache	ext4	/emmc@cache
/data	ext4	/emmc@usrdata
/misc	emmc	/dev/misc
/recovery	emmc	/dev/recovery
/emmc	vfat	/emmc@fat	flags=display="Internal SD-card";storage;wipeingui;backup=1
/system	ext4	/emmc@android
/sdcard	vfat	/dev/block/mmcblk1p1	/dev/block/mmcblk1	flags=display="External SD-card";storage;wipeingui;removable
/nvram	emmc	/dev/nvram	flags=display="Nvram";backup=1
/uboot	emmc	/dev/uboot	flags=display="Uboot";backup=1
/[COLOR="blue"]logo[/COLOR]	emmc	[COLOR="blue"]/dev/logo[/COLOR]	flags=display="[COLOR="blue"]Boot Logo[/COLOR]";backup=1

Awaaas is so kind to shared with me his findings. He got help from bigbiff on the IRC & now TWRP can also backup EBR1 & SECRO. Refer to updates here.

CodeLover has added cust partition for his Huawei.

# mount point	fstype	device	[device2]

/boot emmc /dev/bootimg flags=display="boot"
/misc emmc /dev/misc
/recovery emmc /dev/recovery flags=display="recovery";backup=1
/uboot emmc /dev/uboot flags=display="uboot";backup=1
/nvram emmc /dev/nvram flags=display="nvram";backup=1
/cache ext4 /emmc@cache flags=display="cache"
/data ext4 /emmc@usrdata flags=display="data"
[COLOR="Blue"]/cust[/COLOR] ext4 /[COLOR="blue"]emmc@cust[/COLOR] flags=display="[COLOR="blue"]cust[/COLOR]";backup=1
/system ext4 /emmc@android flags=display="system"
/sdcard vfat /dev/block/mmcblk1p1 /dev/block/mmcblk1

init.rc with cust partition support.

mkdir /boot
mkdir /recovery
mkdir /system
mkdir /data
[COLOR="blue"]mkdir /cust[/COLOR]
mkdir /cache
mkdir /sdcard
mount tmpfs tmpfs /tmp

So its entirely up to you to specify what you want TWRP to backup on your MTK no need to compile a new one, just mod the recovery.fstab

For further info refer to the main thread here . . . :good:

For MTK Alcatel devices, besides /custpack there is also /mobile_info partition, again its entirely up to you whether you would wanna backup it too, credits to MrJavum for compiling the first TWRP version for it . . .

# mount point	fstype	device	[device2]

/boot	emmc	/dev/bootimg
/recovery	emmc	/dev/recovery
/cache	ext4	/emmc@cache
/data	ext4	/emmc@usrdata
/system	ext4	/emmc@android
/emmc	vfat	/emmc@fat
[COLOR="Blue"]/custpack[/COLOR]	ext4	/emmc@custpack	flags=display=[COLOR="blue"]custpack[/COLOR];backup=1
[COLOR="blue"]/mobile_info[/COLOR]	ext4	/emmc@mobile_info	flags=display=[COLOR="blue"]mobile_info[/COLOR];backup=1
/nvram	emmc	/dev/nvram	flags=display=Nvram;backup=1
/uboot	emmc	/dev/uboot	flags=display=Uboot;backup=1
/sdcard	vfat	/dev/block/mmcblk1p1	/dev/block/mmcblk1
/sd-ext	auto	/dev/block/mmcblk1p2

mkdir /boot
mkdir /recovery
mkdir /system
mkdir /data
mkdir /cache
[COLOR="blue"]	mkdir /custpack
mkdir /mobile_info[/COLOR]
mkdir /sdcard
mount tmpfs tmpfs /tmp

As mentioned many times, i don't own all MTK devices out there so some features might not work. To fix it & to learn more about modding recovery refer to my Master Shifu thread here & here . . . :good:

Ported recovery.img is too large & causes region overlap !

This tool is AIO so use the UnPack/ RePack feature to remove below known files that are safe to be deleted to save a few Kb. ( rmdisk/sbin folder ) Below list starts with less critical to critical

Use awaaas technique to use basic theme

Parted

All *exfat*

erase_image, dump_image

flash_image <- You will not be able to flash modded EBR, MBR

rmdisk/supersu folder <- You will not be able to Root via TWRP

adbd <- No adb shell & mount USB storage but you still can use MTP

In fact in the past i have tested, there are quite a few more binary that you can safely remove from rmdisk/sbin folder. Of course you'll loose a few features but at least you can still use TWRP for basic backup & restore.

Delete one file at a time at rmdisk/sbin folder, repack it, until it let you auto-install it.

Updates

Found out that you can also zip the whole content of res folder, move it to /sdcard/TWRP/theme/ui.zip, delete whole res folder & that will work too but no splash screen . . . :cowboy:

if you want then remain res/images/curtain.jpg then splash screen will work . . .

TWRP Materialised Theme

Huge Credits to z31s1g, TWRP has never look so elegant & sophisticated ever before . . . :good:

As mentioned many times, this tool is AIO so unpack the ported recovery.img, download the various custom splash screen that you like, resize it to your device res, copy & paste it to res/images/curtain.jpg, Credits to PünchUp . . . :good:

i have ported to 480x854 res Dark Theme & Light Theme, credits to thewisenerd & Modding.MyMind & don't forget to hit the Thanks button for them . . . :good:

Dark & Light Theme porting to MTK

If you're using other themes other than 480x854 which is ported by me then Dark & Light Theme will not work properly on MTK . . . :cowboy:

Solution to Change Color on Dark & Light Themes to work on MTK

Open ui.zip -> ui.xml & change all /sdcard/TWRP to /emmc/TWRP EXCEPTIONAL for two -> tw_filename=/sdcard/TWRP/aromafm/aromafm.zip & save it first.

Tips : Use the search function -> Ctrl + f to search for above keyword & if you're a Windows users then use Notepad++ for editing . . .

There are two occurrence -> ./zip -0 -r -u "/emmc/TWRP/theme/ui.zip" *; <- You'll need to delete both the -u.

mkdir "/cache/twrp";
if [ -f "/emmc/TWRP/theme/ui.zip" ];
then unzip -o "/emmc/TWRP/theme/ui.zip" -d "/cache/twrp";
chmod 777 "/cache/twrp/zip";
cp -r /cache/twrp/%tw_folder%/* "/cache/twrp/images";
busybox mv "/cache/twrp/ui.xml" "/cache/twrp/ui_temp.xml";
busybox sed "s/%text_highlight%/#%tw_text_color_highlight%/g" "/cache/twrp/ui_temp.xml" > "/cache/twrp/ui_temp2.xml";
rm -f "/cache/twrp/ui_temp.xml";
busybox sed "s/%text_actionbar%/#%tw_text_actionbar%/g" "/cache/twrp/ui_temp2.xml" > "/cache/twrp/ui.xml";
rm -f "/cache/twrp/ui_temp2.xml";
cd "/cache/twrp";
[COLOR="blue"]./zip -0 -r "/emmc/TWRP/theme/ui.zip" *;[/COLOR]
cd /;
rm -r "/cache/twrp"
else

Updates

/data/media device refer to here . . . :good:

Solution to Install Image on Dark & Light Themes to work on MTK

WARNING : Does not check whether the boot.img or recovery.img you're about to flash is oversize & that might brick your MTK if you have only 6Mb partition, you have been fore-warned . . .

When you select Install -> Top Menu Install Zip -> Install Zip or Install Image

Open ui.zip -> flashify -> META-INF -> com -> google -> android -> update-binary & edit as below . . .

Replace Line 41 to 53 with below & save it first.

# Modded to work on MediaTek devices only
case $image in
boot*)
imgtype="boot.img";;
*recovery*)
imgtype="recovery.img";;
*)
ui_print "No image file found to flash.";
abort;;
esac;

Now at Line 66 to 74 replace with below, save it & now flashing MTK boot.img or recovery.img will work on Dark & Light Theme.

# Modded to work on MediaTek devices only
if [ "$imgtype" == "boot.img" ]; then
block=/dev/bootimg;
elif [ "$imgtype" == "recovery.img" ]; then
block=/dev/recovery;
fi;

Aroma File Manager

It is a known problem that aromafm will not to work properly on flip-screen, this is not a TWRP problem as it has never been updated for almost a year.

Flip Touch on Flip Screen

It is a known problem that MTK manufacturer uses non-standard design & uses different Flip Screen/ Non-Flip LCD with different combinations of Flip/ Non-Flip Touch Screen on various Portrait & especially Landscape Android devices.

There is absolutely no way that the porting tool could detect whether your MTK's Touch is FlipX or FlipY or SwapXY so i build all possible combinations here -> View attachment 3039567, read the How-to use it. Built-in to porting tool -> Manual-mode

Bug report

<- No support if you don't attach it to your post, pls refer to post #1 YOUR TOOL DOESN'T WORK . . .

Refer to here on how to submit a proper bug report . . . :good:

Please always attach recovery.log & log.txt from the porting tool or i'll be giving the wrong advice based on assumption & that might brick your device !

How to obtain recovery log

adb pull /tmp/recovery.log -> Attach to your post

At TWRP -> BackUp -> After Backup go to Advanced -> Copy Log to SDCard

Typically you will find the recovery.log at

Typical Internal SdCard

/emmc/TWRP/BACKUPS/ [Your Device Name] / [Backup date] [ro.mediatek.version.release]

or

Typical External SdCard

/sdcard/TWRP/BACKUPS/ [Your Device Name] / [Backup date] [ro.mediatek.version.release]

Attach it to your post.

At TWRP console (Square button at button) -> You can view the log

if you don't see me replying means either the answer is already at this thread so start reading every page, its not like there are 100 over pages, as of 10 Jan 2014, there are only 24 pages . . .

The 2nd reason you don't see me replying is i donno the answer then head up to the TWRP IRC channel to get help, refer to here for more info . . . :cowboy:

TWRP FAQ