It's me again trying to mod Unihertz Titan Phone. But this time all of the sesearch and documentation work was already done by rumplestilzken @ Github with absolutely great tools and documentation. This entry is only to show in what order I did everything and how it worked out. This one will be written more like a continues Blog entry because I'm writing this over the time I wait for the phone to arrive until I have it modded and working. Last time I modded a Unihertz and wrote an entry about it I primarily did research and testing. The development and reverse engineering was already done by others, just not in one place and all over the internet.
This time no stupid UFS and EMMC stuff. Only my Linux PC, a VM with Ubuntu and easy to follow guide form rumplestilzken. Just doing everything rumplestilzken documented! THANKS AGAIN TO THEM! YOU ARE DOING SUCH A GREAT JOB!!!
As last time, it is important that you have all files prepared, the phone charged and a working SP Flash Tool!!!
If somthing goes wrong reflash the original file with the bootloader or, if not accessible, SP Flash Tool. In most cases vbmeta, boot.img or the super.img.
I want to make clear again that this is ONLY a documentation on how I followed rumplestilzken documentation's and did this mod to my phone. Not more! All the hard work and hours of reverse engineering, programming and documenting were done by rumplestilzken @ Github.
As usual and always on the internet: If you do this kind of BS it is always at your own risk. !OBVIOUSLY!
What I did and how it went:
python3 mksuper.py -dev slim
adb reboot bootloader
fastboot flashing unlock
adb reboot bootloader
fastboot flash boot magisk-boot.img
fastboot flash --disable-verity --disable-verification vbmeta vbmeta.img
fastboot flash --disable-verity --disable-verification vbmeta_system vbmeta_system.img
fastboot flash --disable-verity --disable-verification vbmeta_vendor vbmeta_vendor.img
fastboot reboot
adb reboot bootloader
fastboot erase super
fastboot erase cache
fastboot erase userdata
fastboot flash super super.new.img
fastboot reboot
adb root
adb remount
adb shell mount -o remount,rw /
adb push ../Unihertz-Titan-lineageos-microg-master-slim/resources/keyboard/Android10/system_usr_idc/* /system/usr/idc/
adb push ../Unihertz-Titan-lineageos-microg-master-slim/resources/keyboard/Android10/system_usr_keychars/* /system/usr/keychars/
adb push ../Unihertz-Titan-lineageos-microg-master-slim/resources/keyboard/Android10/system_usr_keylayout/* /system/usr/keylayout/
adb shell settings put secure show_ime_with_hard_keyboard 0
adb push ../Unihertz-Titan-lineageos-microg-master-slim/resources/keyboard/Android10_function/system_usr_idc/* /system/usr/idc/
adb push ../Unihertz-Titan-lineageos-microg-master-slim/resources/keyboard/Android10_function/system_usr_keychars/* /system/usr/keychars/
adb push ../Unihertz-Titan-lineageos-microg-master-slim/resources/keyboard/Android10_function/system_usr_keylayout/* /system/usr/keylayout/
adb push ../Unihertz-Titan-lineageos-microg-master-slim/resources/uinput-titan/uinput-titan /system/bin/uinput-titan
adb push ../Unihertz-Titan-lineageos-microg-master-slim/resources/uinput-titan/titan.rc /system/etc/init/
adb push ../Unihertz-Titan-lineageos-microg-master-slim/resources/uinput-titan/titan-uinput.idc /system/usr/idc/
adb shell rm /system/bin/uinput-titan
adb shell rm /system/etc/init/titan.rc
adb shell rm /system/usr/idc/titan-uinput.idc
adb push ../Unihertz-Titan-lineageos-microg-master-slim/resources/keyboard/Android10/system_usr_idc/* /system/usr/idc/
adb push ../Unihertz-Titan-lineageos-microg-master-slim/resources/keyboard/Android10/system_usr_keychars/* /system/usr/keychars/
adb push ../Unihertz-Titan-lineageos-microg-master-slim/resources/keyboard/Android10/system_usr_keylayout/* /system/usr/keylayout/
adb shell pm disable-user com.android.statementservice
adb shell setprop persist.sys.overlay.devinputjack true
adb shell settings put system persist.dbg.ims_volte_enable 1
adb shell settings put system persist.dbg.volte_avail_ovr 1
adb shell settings put system persist.dbg.vt_avail_ovr 1
adb shell settings put system persist.dbg.wfc_avail_ovr 1
adb shell settings put system persist.radio.rat_on combine
adb shell settings put system persist.radio.data_ltd_sys_ind 1
adb shell settings put system persist.radio.data_con_rprt 1
adb shell settings put system persist.radio.calls.on.ims 1
adb push ../excluded-input-devices.xml /etc/excluded-input-devices.xml
adb shell settings put global restricted_networking_mode 0
adb shell settings put global persist.restricted_networking_mode 0
####### Bluetooth Fix (UI):
####### Bluetooth Fix (alternative using ADB - @rumplestilzken thanks for finding it!):
adb shell settings put system persist.sys.bt.unsupport.features 00000000
adb shell settings put system persist.sys.bt.unsupport.states 00000000
adb shell settings put system persist.sys.bt.unsupport.stdfeatures 000001
adb shell settings put system persist.sys.phh.disable_a2dp_offload 1
And that was pretty much it. Now everything works great. The super.img situation on modern android makes updating GSI's even more annoying especially because you need to create a super.img everytime and then still need to apply all the keyboard files again after booting the first time after the update. Rumplestilzken offers finished GSI's on there Github. With them you only need to create the super.img. No need to any of the steps after step 4.
A lot of Thanks to rumplestilzken for documenting, creating tools and workarounds, for all the research and especially for the help and proofreading of my steps during the modding process. You made this modding process so much less painful, so much safer and easier, especially with your mksuper-tool and the gargoyle-GSI's!
A lot of settings and modifications I do to Android after insalling everthing (stuff like ACCA, AdAway, ...) can be found in my old Blogpost about the OG Unihertz Titan UFS and GISs and Android 13: /Blog/2022.08.07_Unihertz_Titan_GSI_UFS/Unihertz_Titan_GSI_UFS.html