yashsingh1/xdaforums huggingface dataset:
[Android Software Development] ashyx:
This is why I mentioned about unnecessary flags. Just causes errors if you are missing the required sources.

Is this tree just for TWRP?
[Android Software Development] lehmancurtis:
Originally I had planned to build Omnirom and TWRP but at this point I only want to build twrp. I've dropped some flags and would like to know what the minimum requirements are.
[Android Software Development] ashyx:
There are no minimum requirements, just include the flags that your device actually needs to boot recovery.

Half the stuff included in your device tree isn't needed for recovery only.

Obviously every device is different but architecture, kernel path, mkbootimg parameters, theme and pixel format would be the least required to get it to boot.
[Android Software Development] ashyx:
Looks much neater, probably don't need the TWRP variant, bionic and selinux flags for recovery.

Maybe just comment out and build.
[Android Software Development] Shedaim:
[MENTION=4899305]ashyx[/MENTION], could you please take a look at my device tree? https://github.com/Shedaim/gtactive2lte.git

Trying to build TWRP and kernel for the Galaxy Tab Active 2, which doesn't have much info on the internet.

I am able to build all the images, but after installing recovery using Odin, the device displays a "recovery is not seandroid enforcing" message, and does not load. Only thing to fix this is to get back into Download mode and flash stock rom. I'm not sure what to do with the recovery.fstab - I took it from stock recovery after unpacking the img, should I make any changes to it?
[Android Software Development] ashyx:
The SEandroid message is nothing to worry about. It just means the image is unsigned.

Fstab won't affect it booting either.

Are you using the stock kernel or source built?
[Android Software Development] Shedaim:
Right now building with source kernel, although tried using prebuilt kernel with the same results.
[Android Software Development] ashyx:
Did you build it permissive or enforcing?
[Android Software Development] chriz:
I made a twrp 3.2.2 but it didn't booted

How to fix it
[Android Software Development] Shedaim:
I didn't change the official sources yet so it's in "enforcing".

Changed some files according to this guide to force a change to permissive: https://xdaforums.com/chef-central/android/guide-how-to-build-android-kernel-t3654336

Will update as soon as I finish the build.

EDIT: Tried the above guide and tried changing Makefile in kernel/security/selinux to permissive. No change. Still stuck on Samsung's logo.

---------- Post added at 04:22 PM ---------- Previous post was at 04:21 PM ----------

hmmm.

What device? What sources? any errors appearing?
[Android Software Development] chriz:
Asus Zenfone max

We have twrp there

But no traces of trees there so I just made a tree

No build errors but not booted after flashing
[Android Software Development] aclegg2011:
Has anyone been able to get a twrp built from omnirom android-8.1 branch to boot? I can get a recovery built, but it's not twrp. It's some generic looking recovery.

Honor view 10

https://github.com/TeamWin/android_device_huawei_berkeley
[Android Software Development] ashyx:
I'm not sure those changes will work for the stock kernel source. Did you comment out the flag below?

CONFIG_SECURITY_SELINUX_PRETEND_ENFORCE=y

---------- Post added at 08:12 PM ---------- Previous post was at 08:08 PM ----------

Are you sure you've got the TWRP recovery sources?

https://github.com/omnirom/android_bootable_recovery
[Android Software Development] aclegg2011:
I'll double check when I get home. Omni-rom doesn't come with twrp android_bootable_recovery repo already? If it comes with the aosp instead then I would need to switch it out.
[Android Software Development] ashyx:
It should, but let us know?
[Android Software Development] aclegg2011:
aclegg2011@darkf0rce:~/Android/twrp/.repo/manifests$ git remote -v

origin git://github.com/omnirom/android.git (fetch)

origin git://github.com/omnirom/android.git (push)

aclegg2011@darkf0rce:~/Android/twrp/bootable/recovery$ git remote -v

aosp https://android.googlesource.com/platform/bootable/recovery (fetch)

aosp https://android.googlesource.com/platform/bootable/recovery (push)

so it looks like on the omni-rom android-8.1 branch you do need to switch out the bootable_recovery repo or else you'l just build the aosp recovery.
[Android Software Development] Shedaim:
Tbh, I couldn't find the flag you mentioned (nor any info googling it).

This is the security configuration in the kernel config file for my device: (you can also find the entire file in the github under "kernel/arch/arm64/configs/exynos7870-gtactive2lte_eur_open_defconfig"

https://github.com/Shedaim/gtactive2lte.git

# Security options
#
CONFIG_KEYS=y
# CONFIG_PERSISTENT_KEYRINGS is not set
# CONFIG_BIG_KEYS is not set
# CONFIG_ENCRYPTED_KEYS is not set
CONFIG_KEYS_DEBUG_PROC_KEYS=y
# CONFIG_SECURITY_DMESG_RESTRICT is not set
# CONFIG_SECURITY_PERF_EVENTS_RESTRICT is not set
CONFIG_SECURITY=y
CONFIG_SECURITYFS=y
CONFIG_SECURITY_NETWORK=y
# CONFIG_SECURITY_NETWORK_XFRM is not set
# CONFIG_SECURITY_PATH is not set
CONFIG_LSM_MMAP_MIN_ADDR=4096
CONFIG_SECURITY_SELINUX=y
CONFIG_SECURITY_SELINUX_BOOTPARAM=y
CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1
# CONFIG_SECURITY_SELINUX_DISABLE is not set
CONFIG_SECURITY_SELINUX_DEVELOP=y
CONFIG_SECURITY_SELINUX_AVC_STATS=y
CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set
# CONFIG_SECURITY_SMACK is not set
# CONFIG_SECURITY_TOMOYO is not set
# CONFIG_SECURITY_APPARMOR is not set
# CONFIG_SECURITY_YAMA is not set
# CONFIG_MST_LDO is not set
CONFIG_INTEGRITY=y
# CONFIG_INTEGRITY_SIGNATURE is not set
CONFIG_INTEGRITY_AUDIT=y
# CONFIG_IMA is not set
# CONFIG_EVM is not set
CONFIG_TZ_ICCC=y
CONFIG_DEFAULT_SECURITY_SELINUX=y
# CONFIG_DEFAULT_SECURITY_DAC is not set
CONFIG_DEFAULT_SECURITY="selinux"
CONFIG_CRYPTO=y

I just changed CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1 to 0 to disable selinux at boot (at least for now), but I'm not sure it's gonna work.

Btw Ashyx, thank you very much for your help, I really appreciate it.

EDIT: Nope. Still failing to boot into recovery or system.
[Android Software Development] ashyx:
That flag won't work in the command line as it's overridden by the command line set by the bootloader.

Is this an Oreo kernel?
[Android Software Development] Shedaim:
Nope, it is for 7.1 (at least what "README_platform.txt" states but now that you ask, I'm not convinced it's the right kernel.

I downloaded version "T395XXU1AQI9" from Samsung sources. Doesn't state anything and could not find that version anywhere else.

I am going to try with version "T395DXU1AQJ3" as I found a model with that version and Android 7.1.1.

Still, I have already tried building with the zImage unpacked from my stock rom boot.img, having the same results.

Got me thinking if I'm doing it right. I'm building "recoveryimage" and trying to flash the recovery.tar through Odin. I know for Samsung it used to be building bootimage and flashing boot.img, but I don't think that's the case anymore, is it?

EDIT: Can't believe I was stuck because of this... Wrong kernel source indeed. I managed to get into TWRP. Now it's time to see what doesn't work within the recovery :)
[Android Software Development] Shedaim:
So, I managed to build and flash twrp, which is nice.

But, the screen is flipped and the touch events are horizontally and vertically flipped.

I tried a variety of flags compositions but had the same thing every time.

These are the flags I played with in BoardConfig.mk:

RECOVERY_TOUCHSCREEN_SWAP_XY

RECOVERY_TOUCHSCREEN_FLIP_X

RECOVERY_TOUCHSCREEN_FLIP_Y

BOARD_HAS_FLIPPED_SCREEN

TW_THEME

also tried changing system.prop while the device was on and change ro.sf.hwrotation, also with no change whatsoever.

What other place can I check for theme configuration? probably something in the kernel files imo.
[Android Software Development] ashyx:
Try:

RECOVERY_TOUCHSCREEN_SWAP_XY := true

RECOVERY_TOUCHSCREEN_FLIP_Y := true
[Android Software Development] Shedaim:
Nope, already tried that. It's like the configuration doesn't take place or gets overwritten somewhere.

Shouldn't BOARD_HAS_FLIPPED_SCREEN := true revert the screen?

Seems like FLIP_Y actually works, but FLIP_X does nothing. On the last Build I had Y axis right but flipped X. Tried changing X conf but it does nothing.

Nvm, I guess I'm not sleeping enough. So it seems that I needed to clear ccache before changing configurations. I used BOARD_HAS_FLIPPED_SCREEN := true and now it works.
[Android Software Development] Shedaim:
Ok, so I got a working recovery (@Ashyx BIG thanks to you) and even the partitions look right now (had a v2 fstab using twrp 3.1.1 so I had to rearrange the file to make it v1).

I'm stuck in a bootloop everytime I try to load the system.

This is what I tried:

Installed stock rom --> Installed TWRP --> entered recovery --> reboot to system --> bootloop with Samsung's logo

Installed stock rom --> Installed TWRP --> entered recovery --> flashed boot.img from same twrp build --> black screen that leads nowhere

Currently researching it, reading logs and stuff, but meanwhile I can use some guidance as to what I'm looking for that may cause the issues above.

EDIT: I believe this can be something wrong with the partitions (although I don't see any errors on the recovery.log), or some kernel mismatch with the existing stock rom. Not sure how to proceed as I can't see the logs of the bootloop sequence or the black screen.
[Android Software Development] lehmancurtis:
Have you tried using the app?
[Android Software Development] ashyx:
Have you rooted yet?

You probably need to disable dm-verity if you've accepted to allow twrp to make modifications.

Rooting will do this for you.
[Android Software Development] Shedaim:
You are right.

Dees_Troy helped with that. I was choosing to modify therefore dm_verity wouldn't pass.

So the status now is somewhat better.

I manage to have twrp and a working stock rom.

I tried flashing SuperSu 2.82 SR5 --> leads to bootloop that tells me to format --> goes to recovery, changes recovery name or smth like that, then again the same thing, SuperSu 2.49 --> bootloop with samsung's logo.

I think I'm gonna build an entire Omni Rom tomorrow and see if it helps not being the stock rom.

*I still have "failed to mount /data" each time I get into TWRP (with stock rom working well).
[Android Software Development] ashyx:
The data partition is encrypted so cannot mount.

You must format the data partition and then immediately apply the dm-verity and encryption patch.
[Android Software Development] Shedaim:
Will look for the patches tomorrow then.

So in order to keep the encryption I'm gonna have to flash twrp, install patches, install supersu, remove patches or can't I use encryption with root privileges?
[Android Software Development] ashyx:
You can use encryption but it makes twrp useless as you won't be able to back up the data partition.
[Android Software Development] Clamor:
Not so long ago https://xdaforums.com/showpost.php?p=76200321&postcount=3854 [MENTION=4878287]_that[/MENTION] looks like this began after update TWRP to 3.0.0-0. Before 3.0.0-0 was detected vi.bits_per_pixel = 16 which automatically leads to GGL_PIXEL_FORMAT_RGB_565 on 3.x.x-x transformed to vi.bits_per_pixel = 32 which in my case leads to GGL_PIXEL_FORMAT_RGBA_8888. Looks like this is kernel independent since any kernel works with 2.8.7.x, but none except TeamWin prebuild one works with 3.x.x.-x. Using forcing RGB_565 or decreasing bits_per_pixel in half in kernel fixes GUI but produces problems with getting screenshots. Maybe there were some serious changes in PIXEL_FORMAT detection or something like that?

Update. Using TARGET_RECOVERY_FORCE_PIXEL_FORMAT := "RGB_565" fixes gui but brakes screenshot taking. I get soft reboot of recovery with next error

E:[MTP] twmtp_MtpServer::mtppipe_thread unexpected read_count 0

Maybe someone had similar issue. I found same issue here and I'm making recovery for same device, but there are no solution(
[Android Software Development] Vaughnn:
what's the reccomended branch for building minimal twrp now? is it twrp-8.1 ?
[Android Software Development] The_Walking_Playground:
Hi,

The recommended branch is typically the one that corresponds to the version of Android with which your device ships. Or more accurately, the version of Android that came with the kernel you're using for TWRP. The latest TWRP will build in all of the minimal branches going back to Lollipop, so it doesn't matter what branch you use.

TWP
[Android Software Development] lehmancurtis:
How to overcome this error?

target thumb C++: adbd <= system/core/adb/set_verity_enable_state_service.cpp
make: *** No rule to make target '/home/curtis/android/omni/out/target/product/cp3622a/obj/STATIC_LIBRARIES/libbatterymonitor_intermediates/libbatterymonitor.a', needed by '/home/curtis/android/omni/out/target/product/cp3622a/obj/EXECUTABLES/charger_intermediates/LINKED/charger'. Stop.
make: *** Waiting for unfinished jobs....
Import includes file: /home/curtis/android/omni/out/target/product/cp3622a/obj/STATIC_LIBRARIES/libhealthd_draw_intermediates/import_includes

#### make failed to build some targets (16:39 (mm:ss)) ####
[Android Software Development] Muhammad Zubair:
Help...

Hello guys

I have installed version 2.8.7.0 on my galaxy note 3 verizon 5.0 lollipop and its file name is twrp-2.8.7.0-hlte-4.4

Later on when i restart into recovery it shows an error something like "recovery is not seandroid enforcing. ..."

Then me have to install stock firmware using odin.

2 times i have faced this problem

Infact i would like to install aryamod port s7edge rom in galaxy note 3 sm-N900v

I NEED 2.8.7.0 TWRP FOR THIS ROM,

I HAVE ROOTED MY PHONE TWO TIMES.
[Android Software Development] DiamondJohn:
As the thread title states, this thread is a "how to compile", not a TWRP help thread.
[Android Software Development] ashyx:
You should go to this thread.

https://xdaforums.com/galaxy-note-3/development/recovery-twrp-3-2-1-1-t3746760
[Android Software Development] D3AMON514:
Hey ashyx!i just wanna know how you compile twrp for sm-g532(j2 prime/grand prime plus).i'm in need of your help to build latest twrp for the device.i hope you can help with this.
[Android Software Development] D3AMON514:
[MENTION=308939]diamond[/MENTION] John.can you help me with building twrp for j2 prime/grand prime plus (sm-g532g).i have device tree,vendor and kernel source.it would be appreciated if you help me.
[Android Software Development] ashyx:
You can't be helped if you don't explain what the issue is?
[Android Software Development] D3AMON514:
I just want to know how to build twrp for sm-g532g.i have the device tree,kernel source,vendor.but i dont know how to build latest twrp for my device.i'm asking ashyx becuase he built twrp 3.1.0.1 for sm g532.help needed to build lateat twrp for that device.thanks in advance.
[Android Software Development] ashyx:
If you have the device tree then follow the steps in this thread to download the sources then just use the commands to build as specified.

I'm not sure what you want to know as it's all explained in the OP?
[Android Software Development] flex1911:
Thread cleaned.

This thread is for actual development-related questions and discussions. If you want to ask anything regarding the actual usage - please go to device-specific twrp threads instead.

Thanks for understanding.
[Android Software Development] lehmancurtis:
I'm pulling together (device, kernel, vendor) sources for an unsupported device. I've almost got the recovery to compile, but I'm having a little trouble with mkbootimg args i.e. are all fields required? Also I am getting error message about kernel size mismatch 2048 2088. Not sure how my kernel put on weight.
[Android Software Development] DiamondJohn:
OR you can try for yourself, and post here the specific step which is causing you a problem and have many many people who know more than me, provide you help.

Also read the "getting started" at https://github.com/minimal-manifest-twrp/platform_manifest_twrp_lineageos

A quick read, its missing the directory create and entry before you do the "init". And the adding of device/kernel/vendor to the local manifest before the repo-sync; which i think is easier after a repo-sync followed by another repo-sync, as it creates the directories for you. Both of these steps would be in the OP
[Android Software Development] lehmancurtis:
My boot partition is 16777216

-rw-rw-rw- 1 don 0 524288 2017-01-12 21:00 tz
-rw-rw-rw- 1 don 0 524288 2017-01-12 21:00 tzbak
-rw-rw-rw- 1 don 0 1825361920 2017-01-12 21:00 system
-rw-rw-rw- 1 don 0 524288 2017-01-12 20:57 rpm
-rw-rw-rw- 1 don 0 524288 2017-01-12 20:57 rpmbak
-rw-rw-rw- 1 don 0 524288 2017-01-12 20:57 sbl1
-rw-rw-rw- 1 don 0 524288 2017-01-12 20:57 sbl1bak
-rw-rw-rw- 1 don 0 16384 2017-01-12 20:57 sec
-rw-rw-rw- 1 don 0 8192 2017-01-12 20:57 ssd
-rw-rw-rw- 1 don 0 16777216 2017-01-12 20:57 recovery
-rw-rw-rw- 1 don 0 33554432 2017-01-12 20:57 persist
-rw-rw-rw- 1 don 0 1048576 2017-01-12 20:57 params
-rw-rw-rw- 1 don 0 20971520 2017-01-12 20:57 panic
-rw-rw-rw- 1 don 0 1572864 2017-01-12 20:57 modemst2
-rw-rw-rw- 1 don 0 1048576 2017-01-12 20:57 oem
-rw-rw-rw- 1 don 0 1048576 2017-01-12 20:57 pad
-rw-rw-rw- 1 don 0 67108864 2017-01-12 20:57 modem
-rw-rw-rw- 1 don 0 1572864 2017-01-12 20:57 modemst1
-rw-rw-rw- 1 don 0 1024 2017-01-12 20:57 fsc
-rw-rw-rw- 1 don 0 1572864 2017-01-12 20:57 fsg
-rw-rw-rw- 1 don 0 524288 2017-01-12 20:57 keystore
-rw-rw-rw- 1 don 0 1048576 2017-01-12 20:57 misc
-rw-rw-rw- 1 don 0 268435456 2017-01-12 20:57 cache
-rw-rw-rw- 1 don 0 524288 2017-01-12 20:57 config
-rw-rw-rw- 1 don 0 32768 2017-01-12 20:57 DDR
-rw-rw-rw- 1 don 0 1048576 2017-01-12 20:57 devinfo
-rw-rw-rw- 1 don 0 16777216 2017-01-12 20:56 boot
-rw-rw-rw- 1 don 0 3145728 2017-01-12 20:56 aboot
-rw-rw-rw- 1 don 0 3145728 2017-01-12 20:56 abootbak

Unless I am looking at it wrong (I hope I am at this point). If I increase the sizes in my Boardconfig.mk everything compiles fine, but I'm sure you know, the device is unable to accept the larger size.

In hindsight, I did have the sizes wrong, but I plugged in the correct values and still can't hit the target size.
[Android Software Development] justmpm:
We're trying to get twrp ported onto the xperia ray. This guide has been a big help, but it looks like our screen is somehow messed up (the dimensions are supported)...once you are in recovery it looks like an invisible man is constantly tapping the screen making it pretty impossible to use. Some aroma installers behave in a similar way and they can be fixed by putting in a screen calibration....this includes the newer versions of aroma that contain some calibration code from twrp: https://github.com/amarullz/AROMA-Installer/commit/ea100b05c16ac0deaba42a4cc744d5a6b04ce9c8. I was wondering if you guys knew how to put in a screen calibration into twrp. Thanks a lot....
[Android Software Development] gls9:
I'am sorry, but I don't understand exactly what you are meaning with this ?

I hope you can explain this a little bit more.
[Android Software Development] kokotas:
Hi Dees_Troy,

First of all thanks for a great project and for sharing its code.

I've compiled the latest version for the HD2 and it looked good. Didn't stay that way for long because I wanted to experiment and I added a couple of things like

option for nilfs2 fs-type formatting, option to add a second EXT partition on sd, option to convert fs-type of a partition and a NativeSD Manager.

I'm still messing/testing it (was thinking of pushing what I've done to a git repo) and I need to ask your help for some things:

Is it possible to have a condition in a slider object?

I've tried something like this:

<object type="slider">
<condition var1="tw_has_sdext2_partition" op="=" var2="1" />
<placement x="%slider_x%" y="%row17_text_y%" />
<resource base="slider" used="slider-used" touch="slider-touch" />
<action function="page">partsdcardaction</action>
<actions>
<action function="set">tw_back=convertext</action>
<action function="set">tw_action=convertext2fs</action>
<action function="set">tw_has_action2=0</action>
<action function="set">tw_action_text1=Re-formatting 2nd EXT partition...</action>
<action function="set">tw_action_text2=This will take a few minutes.</action>
<action function="set">tw_complete_text1=Operation Completed</action>
<action function="page">action_page</action>
</actions>
</object>

but the slider is shown regardless of the value of "tw_has_sdext2_partition".

Note: "tw_has_sdext2_partition" is supposed to be set in Update_System_Details():

else if ((*iter)->Mount_Point == "/sdext2") {
int backup_display_size = (int)((*iter)->Backup_Size / 1048576LLU);
DataManager::SetValue(TW_BACKUP_SDEXT2_SIZE, backup_display_size);
if ((*iter)->Backup_Size == 0) {
DataManager::SetValue(TW_HAS_SDEXT2_PARTITION, 0);
DataManager::SetValue(TW_BACKUP_SDEXT2_VAR, 0);
} else
DataManager::SetValue(TW_HAS_SDEXT2_PARTITION, 1);
}

How do we get existing partitions?

In many functions I see the loop:

for (iter = Partitions.begin(); iter != Partitions.end(); iter++) {
//...
}

but for the love of god I can't see how Partitions is set:o

I'm sure there was one more question, but I forgot it...lol

Regards!
[Android Software Development] whitexp:
i have a question:

TWRP support 320x240 ?

thanks !

Gustavo .
[Android Software Development] Deadly:
It has been written in op first post , how to check it yourself.. see a part of op post below and read bolded lines..

Nothing is True.. Everything is Permitted©
[Android Software Development] sgt. meow:
pilu1978 has successfully ported it to the X8. Thanks Dees_Troy and the rest of Team Win. Awesome work.
[Android Software Development] antonio8297:
when give make bootimage give me this error:

antonio@antonio-HP-Pavilion-dv6-Notebook-PC:~/android/cm7$ make bootimage
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=2.3.7
TARGET_PRODUCT=cyanogen_gio
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=false
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv6-vfp
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=GINGERBREAD
============================================
build/core/base_rules.mk:162: *** external/pigz: MODULE.TARGET.RECOVERY_EXECUTABLES.pigz already defined by bootable/recovery/pigz. Arresto.
[Android Software Development] Dees_Troy:
No other devices have ever needed calibration. It's also probably safe to assume that your device doesn't need calibration when booted to regular Android? Most likely there is a configuration or firmware file that regular Android uses to achieve proper calibration. If you can find that file and include it in the recovery ramdisk then the problem will likley go away.

Architecture flags look a lot like this:

TARGET_GLOBAL_CFLAGS += -mfpu=neon -mfloat-abi=softfp
TARGET_GLOBAL_CPPFLAGS += -mfpu=neon -mfloat-abi=softfp
TARGET_CPU_ABI := armeabi-v7a
TARGET_CPU_ABI2 := armeabi
TARGET_CPU_SMP := true
TARGET_ARCH := arm
TARGET_ARCH_VARIANT := armv7-a-neon
ARCH_ARM_HAVE_TLS_REGISTER := true

But the flags vary depending on the CPU & GPU in the device.

The slider element doesn't have a conditional capability at this time. For now a button with a conditional that leads to a new page with your slider would probably be the best approach.

Partitions are loaded in partitionmanager.cpp and partitions.cpp during booting of the recovery. Most of the partition loading functions are at the top of these 2 files.

Remove external/pigz from your build tree. Pigz is included in the TWRP code base.
[Android Software Development] kokotas:
Eventually I edited the slider.cpp and objects.hpp in order to add conditional capability by checking how you've done it for buttons. It works like I wanted now:)

Ok, got that too!:good: The more I read the code the more I get familiar with it.

Wanted also to thank you for your work! I think the HD2 has another great tool added to its assets thanks to your open project.

(Here is the thread for hd2's twrp version)

Merry Christmas

Regards!