OmniROM 13 | How to compile the OmniROM 13 for the ASUS Zenfone 8 |
OmniROM 14 |
How to compile the OmniROM 14 for the ASUS Zenfone 8 |
OmniROM 15 |
How to compile the OmniROM 15 for the ASUS Zenfone 8 |
repo init -u https://github.com/omnirom/android.git -b
android-12.1
repo sync
[xtrnaw7@t15g /data/develop/android/OmniROM]$ cat
.repo/local_manifests/local_manifest.xml
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="DonkeyCoyote"
fetch="https://github.com/DonkeyCoyote" />
<project path="device/asus/zenfone8"
name="android_device_asus_zenfone8" remote="omnirom"
revision="android-12.0" />
<project path="vendor/asus" name="proprietary_vendor_asus"
remote="DonkeyCoyote" revision="android-12.1" />
</manifest>
repo sync
. build/envsetup.sh
brunch omni_zenfone8-user
[xtrnaw7@t15g /data/develop/android/OmniROM]$ ls -ltr
out/target/product/zenfone8/omni-12-20220621-zenfone8-HOMEMADE.zip
-rw-rw-r--. 25 xtrnaw7 xtrnaw7 1253703465 Jun 25 10:03
out/target/product/zenfone8/omni-12-20220621-zenfone8-HOMEMADE.zip
[xtrnaw7@t15g /data/develop/android/OmniROM]$
[xtrnaw7@t15g /data/develop/android/OmniROM]$ cat
.repo/local_manifests/local_manifest.xml
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="DonkeyCoyote"
fetch="https://github.com/DonkeyCoyote" />
<project path="device/asus/zenfone8"
name="android_device_asus_zenfone8" remote="omnirom"
revision="android-12.0" />
<project path="vendor/asus" name="proprietary_vendor_asus"
remote="DonkeyCoyote" revision="android-12.1" />
<project path="vendor/microg"
name="android_prebuilts_prebuiltapks" remote="omnirom"
revision="android-12.0" />
</manifest>
[xtrnaw7@t15g /data/develop/android/OmniROM]$
repo sync
export ROM_BUILDTYPE=MICROG
brunch omni_zenfone8-user
[xtrnaw7@t15g /data/develop/android/OmniROM]$ ls -ltr
out/target/product/zenfone8/omni-12-20220621-zenfone8-MICROG.zip
-rw-rw-r--. 25 xtrnaw7 xtrnaw7 1253703465 Jun 25 10:03
out/target/product/zenfone8/omni-12-20220621-zenfone8-MICROG.zip
[xtrnaw7@t15g /data/develop/android/OmniROM]$
./build/make/target/product/security
[xtrnaw7@t15g /data/develop/android/OmniROM]$ ls -l
./build/make/target/product/security/platform.*
-rw-------. 1 xtrnaw7 xtrnaw7 1219 Jun 25 09:39
./build/make/target/product/security/platform.pk8
-rw-rw-r--. 1 xtrnaw7 xtrnaw7 1460 Jun 25 09:39
./build/make/target/product/security/platform.x509.pem
[xtrnaw7@t15g /data/develop/android/OmniROM]$
# remove the current certificate files from the apk (probably
not neccessary -- but shouldn't harm)
#
zip -d SMMI_TEST.apk META-INF/CERT.SF META-INF/CERT.RSA
# do a zip align for the apk and write the output to
SMMI_TEST1.apk
#
# (zipalign is part of the OTA tools)
#
/data/develop/android/otatools/bin/zipalign 4 SMMI_TEST.apk
SMMI_TEST1.apk
# test the result (there should be NO output from this command)
#
/data/develop/android/otatools/bin/zipalign -c 4 SMMI_TEST1.apk
# and now sign the apk with the platform key from the
development tree for your self compiled CustomROM
# (apksigner.jar is part of the Sdk from Google for Android)
#
java -jar ./Android/Sdk/build-tools/33.0.0/lib/apksigner.jar
sign --key platform.pk8 --cert platform.x509.pem SMMI_TEST1.apk
adb shell su - -c mkdir -p
/data/adb/modules/SMMI_TEST/system/app/SMMI_TEST
adb push SMMI_TEST1.apk /sdcard/Download/
adb shell su - -c cp /sdcard/Download/SMMI_TEST1.apk
/data/adb/modules/SMMI_TEST/system/app/SMMI_TEST/SMMI_TEST1.apk
adb shell su - -c chmod o+r
/data/adb/modules/SMMI_TEST/system/app/SMMI_TEST/SMMI_TEST1.apk
ASUS_I006D:/ # find /system/app/SMMI_TEST/
/system/app/SMMI_TEST/
/system/app/SMMI_TEST/SMMI_TEST1.apk
ASUS_I006D:/ #
# open a shell on the ASUS Zenfone 8 (either local or via "adb
shell"), become root user
su -
# switch SELinux to permissive mode (I currently do not know the
neccessary SELinux policies to avoid this step ...)
#
setenforce 0
# and start the ASUS Hardware Test App from within the shell
#
am start -n
com.asus.atd.smmitest/com.asus.atd.smmitest.main.MAIN
# switch SELinux to permissive mode (I currenlty do not know
the neccessary SELinux policies to avoid this step ...)
#
setenforce
# simple script to start the ASUS Hardware App
CUR_SELINUX_STATUS="$( getenforce )"
CUR_USERID=$( id -u -n )
RESTORE_SELINUX_STATE="false"
if [ "${CUR_SELINUX_STATUS}"x != "Permissive"x ] ; then
if [ "${CUR_USERID}"x != "root"x ] ; then
echo "Either start this script as user \"root\" or set
the SELinux mode to \"permissive\" using the command
\"setenforce 0\" before starting this script"
exit 1
fi
echo "Setting the SELinux mode to \"Permissive\" ..."
setenforce 0
RESTORE_SELINUX_STATE="true"
else
echo "The SELinux mode is already \"Permissive}\" "
fi
am start -n
com.asus.atd.smmitest/com.asus.atd.smmitest.main.MAIN
2>&1 | tee /sdcard/Download/test.out
if [ ${RESTORE_SELINUX_STATE} = true ] ; then
echo "Press return when done with the tests .."
read USER_INPUT
echo "Setting the SElinux mode back to \"Enforcing\"
...."
setenforce 1
else
echo "Do not forget to set the SELinxu mode back to
\"Enforcing\" using the command \"setenforce 1\" "
fi
# connect to the phone via adb (that should work!)
#
adb shell
# become root user
#
su -
# delete the file with the AUS Hardware Test App
#
rm
/data/adb/modules/SMMI_TEST/system/app/SMMI_TEST/SMMI_TEST1.apk
# and reboot the phone
#
reboot
# try to install the apk as root user
#
su -
# and then
#
setenforce 0
pm install /sdcard/Download/SMMI_TEST.apk
chmod +x
scriptname
) and reboot the phone.# boot the phone into the bootloader and then do
sudo fastboot boot
/data/backup/ASUS_ZENFONE8/twrp/twrp-3.6.1_12-1-I006D.img
cat /data/adb/service.d/correct_dev_pn553.sh
#!/system/bin/sh
NFC_DEVICE="/dev/pn553"
echo ""
echo "The SELinux context for \"${NFC_DEVICE}\" is now:"
ls -lZ ${NFC_DEVICE}
echo ""
echo "Correcting the SELinux context for the NFC device
\"${NFC_DEVICE}\" ..."
chcon -v u:object_r:nfc_device:s0 /dev/pn553
echo ""
echo "The SELinux context for \"${NFC_DEVICE}\" is now:"
ls -lZ ${NFC_DEVICE}
REBOOT=yes install_magisk_via_twrp.sh
REBOOT=no install_magisk_via_twrp.sh
/data/adb/magisk/boot_patch.sh[211]: can't create
/proc/self/fd/: Is a directory
[ 77%] /sdcard/Download/patched_boot_a.391985.img ERROR:
Error downloading the file
"/sdcard/Download/patched_boot_a.391985.img" from the phone!
adb: insufficient permissions for device
adb kill-server
[xtrnaw7@t15g /data/backup/Android/scripts_on_linux]$
./install_magisk_via_twrp.sh
./install_magisk_via_twrp.sh version - 2.0.0.0 - add Magisk to
the boot partition of a phone running Android using TWRP
Using the TWRP image hardcoded in the script:
"/data/backup/ASUS_ZENFONE8/twrp/twrp-3.7.0_12-0-I006D.img"
Checking the script prerequisites ...
Will wait 10 second(s) before starting the script on the phone
The script is running as user "xtrnaw7" -- will use "sudo" for
the fastboot commands ...
Will patch the boot partition on the attached phone with the
serial number "M6AIB760D0939LX"
Using the options "-d -s M6AIB760D0939LX " for the adb
commands
Using the options " -s M6AIB760D0939LX " for the fastboot
commands
Checking for a connected phone booted into fastboot mode ...
No attached phone in fastboot mode found
Checking for an attached phone with working access via adb
(USB) ...
Linux localhost 5.4.147-Omni-qgki-perf-gea6f815f5af9-dirty #42
SMP PREEMPT Tue Sep 27 18:03:41 CEST 2022 aarch64
... found a phone connected via USB with working adb access
The phone is booted in normal mode
The installed OS is based on Android 12 (Wed Aug 10 06:59:46
CEST 2022); the description for the distribution is
"omni_zenfone8-user 12 SQ3A.220605.009.A1
eng.xtrnaw.20220810.065947 release-keys"
The installed version of Magisk is com.topjohnwu.magisk
versionCode 25200
Booting the phone into the fastboot mode now ...
Waiting up to 60 seconds for the boot into the fastboot mode
...
Booting the phone from the TWRP image
"/data/backup/ASUS_ZENFONE8/twrp/twrp-3.7.0_12-0-I006D.img"
now ...
Sending 'boot.img' (98304 KB) OKAY [ 2.489s]
Booting OKAY [ 10.359s]
Finished. Total time: 12.888s
Waiting up to 60 seconds for the boot of the phone ....
Retrieving the current boot slot from the phone ...
The current boot slot is "_b"
The boot slot to patch is "_b"
The boot partition to patch is "boot_b"
Checking if the Magisk patch script "boot_patch.sh" exists on
the phone ....
-rwxr-xr-x 1 root root 5987 2022-10-27 07:33
/data/adb/magisk/boot_patch.sh
Checking if the download directory "/sdcard/Download" exists
on the phone ....
/sdcard/Download
Creating the boot image file
"/sdcard/Download/boot_b.732627.img" from the partition
"/dev/block/by-name/boot_b" ...
196608+0 records in
196608+0 records out
100663296 bytes (96 M) copied, 0.308243 s, 311 M/s
Checking the result ...
-rw-rw---- 1 root media_rw 100663296 2022-10-28 09:51
/sdcard/Download/boot_b.732627.img
The check sums are:
The check sum of the boot partition
"/dev/block/by-name/boot_b" on the phone is "4108888341"
The check sum of th boot image file on the phone is
"/sdcard/Download/boot_b.732627.img" is "4108888341"
Patching the boot image file
"/sdcard/Download/boot_b.732627.img" ...
Waiting now 10 seconds ...
- Unpacking boot image
Parsing boot image: [/sdcard/Download/boot_b.732627.img]
HEADER_VER [3]
KERNEL_SZ [42025472]
RAMDISK_SZ [34080597]
OS_VERSION [12.0.0]
OS_PATCH_LEVEL [2022-05]
PAGESIZE [4096]
CMDLINE []
KERNEL_FMT [raw]
RAMDISK_FMT [gzip]
VBMETA
- Checking ramdisk status
Loading cpio: [ramdisk.cpio]
- Stock boot image detected
- Patching ramdisk
Loading cpio: [ramdisk.cpio]
Add entry [init] (0750)
Create directory [overlay.d] (0750)
Create directory [overlay.d/sbin] (0750)
Add entry [overlay.d/sbin/magisk64.xz] (0644)
Patch with flag KEEPVERITY=[false] KEEPFORCEENCRYPT=[false]
Found fstab file [system/etc/fstab.postinstall]
Remove pattern
[,avb_keys=/product/etc/security/avb/system_other.avbpubkey]
Loading cpio: [ramdisk.cpio.orig]
Backup mismatch entry: [init] -> [.backup/init]
Record new entry: [overlay.d] -> [.backup/.rmlist]
Record new entry: [overlay.d/sbin] -> [.backup/.rmlist]
Record new entry: [overlay.d/sbin/magisk64.xz] ->
[.backup/.rmlist]
Backup mismatch entry: [system/etc/fstab.postinstall] ->
[.backup/system/etc/fstab.postinstall]
Create directory [.backup] (0000)
Add entry [.backup/.magisk] (0000)
Dump cpio: [ramdisk.cpio]
- Repacking boot image
Parsing boot image: [/sdcard/Download/boot_b.732627.img]
HEADER_VER [3]
KERNEL_SZ [42025472]
RAMDISK_SZ [34080597]
OS_VERSION [12.0.0]
OS_PATCH_LEVEL [2022-05]
PAGESIZE [4096]
CMDLINE []
KERNEL_FMT [raw]
RAMDISK_FMT [gzip]
VBMETA
Repack to boot image: [new-boot.img]
HEADER_VER [3]
KERNEL_SZ [42025472]
RAMDISK_SZ [34331854]
OS_VERSION [12.0.0]
OS_PATCH_LEVEL [2022-05]
PAGESIZE [4096]
CMDLINE []
Checking the result ...
-rw-r--r-- 1 root root 100663296 2022-10-28 09:51
/data/adb/magisk/new-boot.img
The patched boot image is
"/sdcard/Download/patched_boot_b.732627.img"
Waiting now 5 seconds ...
Patching the partition "/dev/block/by-name/boot_b" from the
patched boot image file
"/sdcard/Download/patched_boot_b.732627.img" via dd ...
196608+0 records in
196608+0 records out
100663296 bytes (96 M) copied, 4.721236 s, 20 M/s
Checking the result ....
The check sums for the images and devices on the phone are:
4108888341 100663296 /sdcard/Download/boot_b.732627.img
3369959638 100663296
/sdcard/Download/patched_boot_b.732627.img
3369959638 100663296 /dev/block/by-name/boot_b
OK, patching the boot partition "/dev/block/by-name/boot_b"
was successfull
*** Press return to reboot the phone now
Rebooting the phone now ...
[xtrnaw7@t15g /data/backup/Android/scripts_on_linux]$
adb shell
su -
ASUS_I006D:/ # ls -ld /data/adb/modules/*
drwxrws--- 3 u0_a118 media_rw 3452 2022-05-30 12:12
/data/adb/modules/playstore
ASUS_I006D:/ #
ASUS_I006D:/ # find /data/adb/modules/playstore
/data/adb/modules/playstore
/data/adb/modules/playstore/system
/data/adb/modules/playstore/system/etc
/data/adb/modules/playstore/system/etc/permissions
/data/adb/modules/playstore/system/etc/permissions/com.android.vending.xml
/data/adb/modules/playstore/system/priv-app
/data/adb/modules/playstore/system/priv-app/Phonesky
/data/adb/modules/playstore/system/priv-app/Phonesky/lib
/data/adb/modules/playstore/system/priv-app/Phonesky/lib/arm
/data/adb/modules/playstore/system/priv-app/Phonesky/lib/arm/libbrotli.so
/data/adb/modules/playstore/system/priv-app/Phonesky/lib/arm/libconscrypt_jni.so
/data/adb/modules/playstore/system/priv-app/Phonesky/lib/arm/libcronet.85.0.4181.5.so
/data/adb/modules/playstore/system/priv-app/Phonesky/lib/arm/libgame_sdk_device_info_jni.so
/data/adb/modules/playstore/system/priv-app/Phonesky/lib/arm/libphonesky_data_loader.so
/data/adb/modules/playstore/system/priv-app/Phonesky/lib/arm/libtensorflowlite_jni.so
/data/adb/modules/playstore/system/priv-app/Phonesky/Phonesky.apk
/data/adb/modules/playstore/system/priv-app/FakeStore
/data/adb/modules/playstore/system/priv-app/FakeStore/oat
/data/adb/modules/playstore/system/priv-app/FakeStore/oat/arm64
/data/adb/modules/playstore/system/priv-app/FakeStore/oat/arm64/FakeStore.odex
/data/adb/modules/playstore/system/priv-app/FakeStore/oat/arm64/FakeStore.vdex
/data/adb/modules/playstore/system/priv-app/FakeStore/FakeStore.apk
ASUS_I006D:/ #
ASUS_I006D:/ # find /system/priv-app/Phonesky/
/system/priv-app/Phonesky/
/system/priv-app/Phonesky/lib
/system/priv-app/Phonesky/lib/arm
/system/priv-app/Phonesky/lib/arm/libbrotli.so
/system/priv-app/Phonesky/lib/arm/libconscrypt_jni.so
/system/priv-app/Phonesky/lib/arm/libcronet.85.0.4181.5.so
/system/priv-app/Phonesky/lib/arm/libgame_sdk_device_info_jni.so
/system/priv-app/Phonesky/lib/arm/libphonesky_data_loader.so
/system/priv-app/Phonesky/lib/arm/libtensorflowlite_jni.so
/system/priv-app/Phonesky/Phonesky.apk
ASUS_I006D:/ # ASUS_I006D:/ # find /system/priv-app/FakeStore/
/system/priv-app/FakeStore/
/system/priv-app/FakeStore/oat
/system/priv-app/FakeStore/oat/arm64
/system/priv-app/FakeStore/oat/arm64/FakeStore.vdex
/system/priv-app/FakeStore/oat/arm64/FakeStore.odex
/system/priv-app/FakeStore/FakeStore.apk
ASUS_I006D:/ #
adb push magisk_ssh_v0.14.zip /sdcard/Download/
adb shell su - -c /data/adb/magisk/magisk64 --install-module
/sdcard/Download/magisk_ssh_v0.14.zip
ASUS_I006D:/ # /data/adb/magisk/magisk64 --install-module
/sdcard/Download/magisk_ssh_v0.14.zip
- Current boot slot: _a
- Device is system-as-root
******************************* OpenSSH for Android
*******************************
[0/7] Preparing module directory
[1/7] Extracting architecture unspecific module files
[2/7] Extracting libraries and binaries for arm64
[3/7] Configuring library path wrapper
[4/7] Recreating symlinks
[5/7] Creating SSH user directories
[6/7] Found sshd_config, will not copy a default one
[7/7] Cleaning up - Setting permissions - Done
ASUS_I006D:/ #
adb shell reboot
touch /data/ssh/root/.ssh/authorized_keys
chmod 600 /data/ssh/root/.ssh/authorized_keys
touch /data/ssh/KEEP_ON_UNINSTALL
touch /data/ssh/no-autostart
# start the sshd (as user root)
#
/data/adb/modules/ssh/opensshd.init start
# to stop the sshd (as user root)
#
/data/adb/modules/ssh/opensshd.init stop
PHONE_IP_ADDRESS=$( adb shell ifconfig wlan0 | grep "inet
addr:" | sed -e "s/.*inet addr://g" -e
"s/[[:space:]]*Bcast.*//g" )
[xtrnaw7@t15g ~]$ ssh -l root ${PHONE_IP_ADDRESS} id
uid=0(root) gid=0(root) groups=0(root) context=u:r:magisk:s0
[xtrnaw7@t15g ~]$
# on your local Linux workstation do:
# start the sshd on the phone via adb if not already running
#
adb shell su - -c /data/adb/modules/ssh/opensshd.init start
# retrieve the current IP address from the phone
#
PHONE_IP_ADDRESS=$( adb shell ifconfig wlan0 | grep "inet addr:"
| sed -e "s/.*inet addr://g" -e "s/[[:space:]]*Bcast.*//g" )
# backup the new photos from the phone to the Linux workstation
(rsync only copies new files from the phone)
# to the local directory /data/backup/ASUS_ZENFONE8/DCIM
#
rsync -av --rsync-path /data/adb/modules/ssh/usr/bin/rsync
root@${PHONE_IP_ADDRESS}:/sdcard/DCIM/
/data/backup/ASUS_ZENFONE8/DCIM
# optional stop the sshd on the phone via adb
#
adb shell su - -c /data/adb/modules/ssh/opensshd.init stop
ASUS_I006D:/ # ls -ld /storag
drwx--x--- 4 shell everybody 80 2022-06-26 18:37 /storage
ASUS_I006D:/ #
# /data/adb/service.d/create_ssh_dir_for_shell.sh
#
mkdir -p /storage/shell/.ssh chmod -R 700 /storage/shell/
touch /storage/shell/.ssh/authorized_keys
echo "<ssh_public_key>" >
/storage/shell/.ssh/authorized_keys
chmod 600 /storage/shell/.ssh/authorized_keys
chown -R shell:shell /storage/shell
su - -c sh data/adb/service.d/create_ssh_dir_for_shell.sh
su - -c cp /data/ssh/sshd_config
/storage/ssh/sshd_config.org.$$
Match User shell AuthorizedKeysFile
/storage/shell/.ssh/authorized_keys
[xtrnaw7@t15g ~]$ ssh -l shell 192.168.1.148 id
uid=2000(shell) gid=2000(shell) groups=2000(shell)
context=u:r:magisk:s0
[xtrnaw7@t15g ~]$
sed -i -e "s/.*StrictModes.*//g" -e
"s/UsePrivilegeSeparation/StrictModes
no\nUsePrivilegeSeparation/g" /data/ssh/sshd_config
Match User shell AuthorizedKeysFile
/sdcard/shell/.ssh/authorized_keys
/data/adb/modules/ssh/opensshd.init stop
/data/adb/modules/ssh/opensshd.init start
ASUS_I006D:/ # find /sdcard/shell -exec ls -ld {} \;
drwxrws--- 3 u0_a118 media_rw 3452 2022-06-26 18:32
/sdcard/shell
drwxrws--- 2 u0_a118 media_rw 3452 2022-06-26 18:32
/sdcard/shell/.ssh
-rw-rw---- 1 u0_a118 media_rw 408 2022-06-26 18:32
/sdcard/shell/.ssh/authorized_keys
ASUS_I006D:/ #
ps -fp $PPID| grep adbd >/dev/null if [ $? -ne 0 ] ; then
# # not running in an adb session : else # # running in an adb
session ... fi
#!/system/bin/sh
GRANTED=$(magisk --sqlite "SELECT uid FROM policies WHERE
policy = '2';")
echo 'Packages with root granted:'
for UID in $GRANTED
do
UID=$(echo $UID | sed 's!^uid=!!g')
pm list packages --uid $UID
done
adb shell rm /data/adb/modules/*/disable
A tool to unpack / repack boot images, parse / patch / extract cpio, patch dtb, hex patch binaries, and compress / decompress files with multiple algorithms.
/system/etc/init
/vendor/etc/init
/odm/etc/init
OmniROM 12 | How to compile the OmniROM for the ASUS Zenfone 8 |
OmniROM 14 |
How to compile the OmniROM 14 for the ASUS Zenfone 8 |
OmniROM 15 |
How to compile the OmniROM 15 for the ASUS Zenfone 8 |
repo init -u https://github.com/omnirom/android.git -b
android-13.0
repo sync
[xtrnaw7@t15g /data/develop/android/OmniROM_13.0]$ cat
.repo/local_manifests/local_manifest.xml
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="DonkeyCoyote"
fetch="https://github.com/DonkeyCoyote" />
<project path="device/asus/zenfone8"
name="android_device_asus_zenfone8" remote="omnirom"
revision="android-13.0" />
<project path="vendor/asus" name="proprietary_vendor_asus"
remote="DonkeyCoyote" revision="android-13.0" />
<project path="vendor/microg"
name="android_prebuilts_prebuiltapks" remote="omnirom"
revision="android-13.0" />
<project path="vendor/images/asus"
name="android_vendor_images_asus" remote="gitlab"
revision="android-13.0" />
</manifest>
[xtrnaw7@t15g /data/develop/android/OmniROM_13.0]$
repo sync
# optional:
#
# to create an OmniROM image with MicroG packages set the
environment variable ROM_BUILDTYPE to MICROG before starting the
build
#
# to create an OmniROM image with GAPPS packages set the
environment variable ROM_BUILDTYPE to GAPPS before starting the
build
#(that will only work if the repositories for the GAPPS are
configured, of course)
#
export ROM_BUILDTYPE=MICROG
. build/envsetup.sh
brunch omni_zenfone8-user
[xtrnaw7@t15g /data/develop/android/OmniROM_13.0]$ ls -l
out/target/product/zenfone8/omni-13-2022*-zenfone8-*.zip
-rw-rw-r--. 3 xtrnaw7 xtrnaw7 1258920226 Nov 14 11:55
out/target/product/zenfone8/omni-13-202211141148-zenfone8-MICROG.zip
[xtrnaw7@t15g /data/develop/android/OmniROM_13.0]$
[xtrnaw7@t15g /data/develop/android/OmniROM]$ ls -l
./build/make/target/product/security/platform.*
-rw-------. 1 xtrnaw7 xtrnaw7 1219 Jun 25 09:39
./build/make/target/product/security/platform.pk8 -rw-rw-r--. 1
xtrnaw7 xtrnaw7 1460 Jun 25 09:39
./build/make/target/product/security/platform.x509.pem
[xtrnaw7@t15g /data/develop/android/OmniROM]$
TWRP Dev - xtrnaw7@t15g /data/develop/android/twrp ] $
lunch twrp_I006D-eng
In file included from build/make/core/config.mk:313:
In file included from build/make/core/envsetup.mk:312:
build/make/core/product_config.mk:160: error: Can not locate
config makefile for product "twrp_I006D".
11:35:37 dumpvars failed with: exit status 1
Device I006D not found. Attempting to retrieve device
repository from TeamWin Github (http://github.com/TeamWin).
Found repository: android_device_asus_I006D
Checking branch info
Calculated revision: android-12.1
Adding dependency:
Repository: android_device_asus_I006D
Branch: android-12.1
Remote: TeamWin
Path: device/asus/I006D
Syncing repository to retrieve project.
Fetching: 100% (1/1), done in 12.846s
NOT Garbage collecting: 0% (0/1), done in 0.001s
repo sync has finished successfully.
Repository synced!
Looking for dependencies
Adding dependencies to manifest
Adding dependency:
Repository: android_device_asus_sm8350-common
Branch: android-12.1
Remote: TeamWin
Path: device/asus/sm8350-common
Syncing dependencies
Fetching: 100% (1/1), done in 15.848s
NOT Garbage collecting: 0% (0/1), done in 0.001s
repo sync has finished successfully.
Looking for dependencies
device/asus/sm8350-common has no additional dependencies.
Done
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=99.87.36
TARGET_PRODUCT=twrp_I006D
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_ARCH=arm64
TARGET_ARCH_VARIANT=armv8-a
TARGET_CPU_VARIANT=generic
TARGET_2ND_ARCH=arm
TARGET_2ND_ARCH_VARIANT=armv8-a
TARGET_2ND_CPU_VARIANT=generic
HOST_ARCH=x86_64
HOST_2ND_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-6.0.9-200.fc36.x86_64-x86_64-Fedora-Linux-36-(MATE-Compiz)
HOST_CROSS_OS=windows
HOST_CROSS_ARCH=x86
HOST_CROSS_2ND_ARCH=x86_64
HOST_BUILD_TYPE=release
BUILD_ID=SP2A.220405.004
OUT_DIR=out
PRODUCT_SOONG_NAMESPACES=device/asus/sm8350-common
============================================
[ TWRP Dev - xtrnaw7@t15g /data/develop/android/twrp ] $
[ TWRP Dev - xtrnaw7@t15g /data/develop/android/twrp ] $
time mka bootimage
build/make/core/soong_config.mk:197: warning:
BOARD_PLAT_PUBLIC_SEPOLICY_DIR has been deprecated. Use
SYSTEM_EXT_PUBLIC_SEPOLICY_DIRS instead.
build/make/core/soong_config.mk:198: warning:
BOARD_PLAT_PRIVATE_SEPOLICY_DIR has been deprecated. Use
SYSTEM_EXT_PRIVATE_SEPOLICY_DIRS instead.
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=99.87.36
TARGET_PRODUCT=twrp_I006D
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_ARCH=arm64
TARGET_ARCH_VARIANT=armv8-a
TARGET_CPU_VARIANT=generic
TARGET_2ND_ARCH=arm
TARGET_2ND_ARCH_VARIANT=armv8-a
TARGET_2ND_CPU_VARIANT=generic
HOST_ARCH=x86_64
HOST_2ND_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-6.0.9-200.fc36.x86_64-x86_64-Fedora-Linux-36-(MATE-Compiz)
HOST_CROSS_OS=windows
HOST_CROSS_ARCH=x86
HOST_CROSS_2ND_ARCH=x86_64
HOST_BUILD_TYPE=release
BUILD_ID=SP2A.220405.004
OUT_DIR=out
PRODUCT_SOONG_NAMESPACES=device/asus/sm8350-common
============================================
[ 78% 246/312] including bootable/recovery/Android.mk ...
bootable/recovery/prebuilt/Android.mk:437: warning: vendor_hw:
bootable/recovery/prebuilt/relink.sh
out/target/product/I006D/recovery/root/vendor/bin/hw
[ 95% 299/312] including system/sepolicy/Android.mk ...
system/sepolicy/Android.mk:57: warning:
BOARD_PLAT_PUBLIC_SEPOLICY_DIR has been deprecated. Use
SYSTEM_EXT_PUBLIC_SEPOLICY_DIRS instead.
system/sepolicy/Android.mk:62: warning:
BOARD_PLAT_PRIVATE_SEPOLICY_DIR has been deprecated. Use
SYSTEM_EXT_PRIVATE_SEPOLICY_DIRS instead.
[ 30% 8637/28297] //bionic/libc:libc_bionic clang
arch-arm64/bionic/setjmp.S
....
Removing unneeded service: keymaster-4-1-citadel
Service_Cleanup script complete.
[100% 28297/28297] Target boot image from recovery:
out/target/product/I006D/boot.img
#### build completed successfully (14:50 (mm:ss)) ####
real 14m50.110s
user 182m6.217s
sys 11m58.492s
[ TWRP Dev - xtrnaw7@t15g /data/develop/android/twrp ] $
bootctl
lpdump
lpdumpd
lptools
Name |
Type |
Content |
Comment |
/tmp/adbkey.pub |
file |
ssl public key that should be configured |
/tmp is on a ramdisk so this file is lost
after booting the phone |
/data/recovery/work |
Directory |
temporary files used for enabling adb |
|
/data/recovery/work/enable_adb_via_service.rc |
file |
init *rc file added to the boot partition
via Magiks |
|
/data/recovery/work/boot_a.img |
file |
image of the original boot partition |
|
/data/recovery/work/original_boot_partition.img |
SymLink |
link to the image with the original boot
partition |
|
/data/recovery/work/restore_boot_partition.sh | file |
Script to restore the boot partition using
the image of the original boot partition |
|
/data/recovery/work/header /data/recovery/work/kernel /data/recovery/work/ramdisk.cpio |
files |
contents of the boot partition |
|
/data/recovery/adbkey.pub |
file |
public ssl key to be configured for access
via adb |
|
/data/recovery/adb_temp_keys.xml.human |
file |
XML file with the configuration for the
access via adb (will be converted to an XML file in Android binary XML format in /data/misc/adb) |
|
/data/recovery/enable_adb_via_service.sh |
file |
script to enable the access via adb and
installl the public ssl key for the access via adb The script is configured in the init*rc file /data/recovery/work/enable_adb_via_service.rc |
|
/data/recovery/enable_adb_via_service.log |
file |
log file created by the script /data/recovery/enable_adb_via_service.sh | |
/data/recovery/adb_initialized |
file |
semphor file for the script
/data/recovery/enable_adb_via_service.sh - if this file
exists the script will do nothing |
|
/data/recovery/semfile |
file |
test file created by the new init *rc
service |
|
/data/recovery/log.gz /data/recovery/last_log.gz /data/recovery/recovery.fstab /data/recovery/storage.fstab |
file |
Files created by TWRP |
only for information |
/system
, /vendor
,
/product
, /system_ext
, /odm
,
/odm_dlkm
, /vendor_dlkm
, ...) become
read-write.How to properly install the GApps without using a computer ? can I download it as APK and install it ?
I want to add custom.init.rc with this code
```
./magiskboot unpack boot_root.img
./magiskboot cpio ramdisk.cpio \
"mkdir 0700 overlay.d" \
"add 0700 overlay.d/init.custom.rc init.custom.rc" \
"mkdir 0700 overlay.d/sbin" \
"add 0700 overlay.d/sbin/custom.sh init.custom.sh"
./magiskboot repack boot_root.img
```
After reboot my phone doing nothing, check file /sbin/custom.sh is existed, but /init.custom.rc not exist.
A10 Pixel Experience Redmi4x
*.rc
file (except for init.rc
)
in overlay.d
will be read and concatenated AFTER
init.rc
if it does not exist in the root directory, otherwise it will
REPLACE the existing one.Starting from Android 11, the /sbin folder may no longer exists, and in that scenario, Magisk randomly generates a different tmpfs folder each boot. Every occurrence of the pattern ${MAGISKTMP} in your *.rc scripts will be replaced with the Magisk tmpfs folder when magiskinit injects it into init.rc. On pre Android 11 devices, ${MAGISKTMP} will simply be replaced with /sbin, so NEVER hardcode /sbin in the *.rc scripts when referencing these additional files.To get the value of ${MAGISKTMP} in the running Android OS use the command magisk --path, e.g.
Note that the TWRP image for LineageOS created using this method is version and build (!) dependent : A TWRP image must be created for each LineageOS image (even with the same LIneageOS version). And the TWRP images for LineageOS cannot be used if another ROM is installed on the phone. Therefor this is really only a very ugly workaround! |
OmniROM 12 | How to compile the OmniROM for the ASUS Zenfone 8 |
OmniROM 13 | How to compile the OmniROM 13 for the ASUS Zenfone 8 |
OmniROM 15 |
How to compile the OmniROM 15 for the ASUS Zenfone 8 |
repo init -u https://github.com/omnirom/android.git -b
android-14.0 --git-lfs
repo sync
[ OmniRom 14 Dev - xtrnaw7@t15g
/data/develop/android/OmniROM_14.0 ] $ cat
.repo/local_manifests/local_manifest.xml
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="DonkeyCoyote"
fetch="https://github.com/DonkeyCoyote" />
<project path="device/asus/zenfone8"
name="android_device_asus_zenfone8" remote="omnirom"
revision="android-14.0" />
<project path="vendor/asus" name="proprietary_vendor_asus"
remote="DonkeyCoyote" revision="android-14.0" />
<project path="vendor/microg"
name="android_prebuilts_prebuiltapks" remote="omnirom"
revision="android-13.0" />
<project path="vendor/images/asus"
name="android_vendor_images_asus" remote="gitlab"
revision="android-13.0" />
</manifest>
[ OmniRom 14 Dev - xtrnaw7@t15g
/data/develop/android/OmniROM_14.0 ] $
repo sync
# optional:
#
# to create an OmniROM image with MicroG packages set the
environment variable ROM_BUILDTYPE to MICROG before starting the
build
#
# to create an OmniROM image with GAPPS packages set the
environment variable ROM_BUILDTYPE to GAPPS before starting the
build
#(that will only work if the repositories for the GAPPS are
configured, of course)
#
export ROM_BUILDTYPE=MICROG
. build/envsetup.sh
brunch omni_zenfone8-user
[ OmniRom 14 Dev - xtrnaw7@t15g
/data/develop/android/OmniROM_14.0 ] $ ls -l
out/target/product/zenfone8/omni-14-202311*zip
-rw-rw-r--. 3 xtrnaw7 xtrnaw7 1363298353 Nov 20 10:22
out/target/product/zenfone8/omni-14-20231119-zenfone8-MICROG.zip
[ OmniRom 14 Dev - xtrnaw7@t15g
/data/develop/android/OmniROM_14.0 ] $
[ OmniRom 14 Dev - xtrnaw7@t15g
/data/develop/android/OmniROM_14.0 ] $ ls -l
./build/make/target/product/security/platform.*
-rw-rw-r--. 1 xtrnaw7 xtrnaw7 1216 Nov 14 15:24
./build/make/target/product/security/platform.pk8
-rw-rw-r--. 1 xtrnaw7 xtrnaw7 1675 Nov 14 15:24
./build/make/target/product/security/platform.x509.pem
[ OmniRom 14 Dev - xtrnaw7@t15g
/data/develop/android/OmniROM_14.0 ] $
. build/envsetup.sh lunch $ make <options>
. build/envsetup
# select the target hardware
#
breakfast omni_zenfone8-user
# Now instead of following the rest of the guide
(which will compile both Android and the kernel
# for your device), simply compile the kernel:
#
mka kernel
# This command will also generate the device tree,
initramfs and boot.img images
#
mka bootimage
for each repository configued in the manifest file omni-aosp.xml
do
is the repository in the list of forked AOSP repositories
for the OmniROM? If not, ignore it
is the repository in the list of repositories to ignore ?
if yes, ignore it
get the URL of the original AOSP repository for this
repository
either
fetch the changes in the files for the new
security patch using "git fetch <AOSP_repository_url>
<new_tag>"
merge the files just fetched using "git merge
<new_tag>"
or
pull the repository from the AOSP
repositories using "git pull <AOSP_repository_url>
<new_tag>"
done
Environment variable |
Used for |
Comment |
NEW_TAG | new tag to apply (will be overwritten by the parameter of the script if any) | If no new tag is defined in this variable
or in the script parameters, the script will ask the user |
YES | do not ask the user for confirmation if not empty | If this variable is not set and the "yes"
parameter is not used, the script will ask the user for
confirmation before starting the merge. |
VERBOSE | print some more messages if this variable
is not empty |
|
GIT_PARAMETER | additional parmeter for the command git |
Do NOT use "-q" here because the script analyzes the messages written by git! |
Directory |
Contents |
Comment |
/data/data/com.termux/files |
base directory for the files used by Termux |
|
/data/data/com.termux/files/usr |
binaries, config files, etc: ASUS_I006D:/ # ls /data/data/com.termux/files/usr/ bin etc include lib libexec share tmp var ASUS_I006D:/ |
|
/data/data/com.termux/files/home/ |
writable home directory for Termux |
update_verifier
provided by LineageOS can be used. update_verifier
is a python script and available for download here: https://wiki.lineageos.org/verifying-builds targetSdkVersion
lower than 23 can't be installed. Requiring apps to meet these
minimum target API level requirements improves security and
privacy for users."Value |
Description |
PRESIGNED | the apk file is already signed |
platform | the build scripts will sign the apk with
the platform key this will be converted to: -> LOCAL_CERTIFICATE := build/make/target/product/security/platform |
shared | "a key for things that are shared in the
home/contacts process." this will be converted to: -> LOCAL_CERTIFICATE := build/make/target/product/security/shared |
media | the build scripts will sign the apk with
the key used for packages in media/download this will be converted to: -> LOCAL_CERTIFICATE := build/make/target/product/security/media |
vendor/example/certs/app |
the bulild scripts will sign the apk with
the key found in the local directory vendor/example/certs this will be converted to: -> LOCAL_CERTIFICATE := vendor/example/certs/app |
testkey |
a key used for all other packages default this will be converted to: -> LOCAL_CERTIFICATE := build/make/target/product/security/testkey |
EXTERNAL |
"The magic string "EXTERNAL" means this
package will be signed with the test key throughout the
build process, but we expect the final package to be
signed with a different key." -> LOCAL_CERTIFICATE := build/make/target/product/security/testkey |
ROM |
"adb reboot edl" works? |
Comment |
ASUS Android 13 |
yes |
|
OmniROM 13 |
yes |
|
OmniROM 14 | yes |
|
LineageOS 19 |
no |
the phone boots into the Android OS after
executing "adb reboot edl" Booting into EDL mode via adb does also not work if the phone is booted into the recovery Booting via adb into the EDL mode works if the phone is booted from the TWRP image file. |
LineageOS 20 |
no | the phone boots into the Android OS after
executing "adb reboot edl" Booting into EDL mode via adb does also not work if the phone is booted into the recovery Booting via adb into the EDL mode also does not work if the phone is booted from the TWRP image file created for the LineageOS (see here) |
LineageOS 21 (unofficial build!) |
yes |
OS image downloaded from here: https://github.com/mikooomich/android_device_asus_sake/releases |
/e/ |
no |
the phone boots into the Android OS after
executing "adb reboot edl" Booting into EDL mode via adb does also not work if the phone is booted into the recovery Booting via adb into the EDL mode also does not work if the phone is booted from the TWRP image file created for the StatiXOS (see here) |
StatiXOS |
no |
the phone boots into the Android OS after
executing "adb reboot edl" Booting into EDL mode via adb does also not work if the phone is booted into the recovery Booting via adb into the EDL mode also does not work if the phone is booted from the TWRP image file created for the StatiXOS (see here) |
LMODroid |
no |
the phone boots into the Android OS after executing "adb reboot edl" |
TWRP 3.7.1_12-0 |
yes |
[ OmniRom 14 Dev - xtrnaw7@t15g /data/develop/android/edl ]
$ ./edl getstorageinfo
Qualcomm Sahara / Firehose Client V3.62 (c) B.Kerler 2018-2023.
main - Trying with no loader given ...
main - Waiting for the device
main - Device detected :)
main - Mode detected: sahara
Traceback (most recent call last):
File "/data/develop/android/edl/./edl", line 393, in
<module>
base.run()
File "/data/develop/android/edl/./edl", line 295, in run
version = conninfo["data"].version
^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: type object 'req' has no attribute 'version'
[ OmniRom 14 Dev - xtrnaw7@t15g /data/develop/android/edl ] $
./edl
--loader=/data/backup/ASUS_ZENFONE8/edl/prog_firehose_ddr.elf
ROM |
Magisk module adb_root works? |
Comment |
LineageOS 20.x |
yes |
|
LineageOS 21.x | yes |
|
ASUS Android 13 | yes |
|
OmniROM 13 | no |
see below for a work around |
OmniROM 14 |
no |
see below for a work around |
/e/ 2.0x |
yes |
|
LMODroid 4.2 |
yes |
|
File / Directory |
Content |
Comment |
/system/bin/server/syslogd | the syslogd binary |
|
/system/bin/nlogger | the logger binary |
this is the executable logger from the GNU
inetuils (There is already a binary called logger in the Android OS ) |
/system/bin/restart_syslogd | a script to restart the syslogd |
a symbolic link to ./start_syslogd |
/system/bin/start_syslogd | a script to start the syslogd | |
/system/bin/stop_syslogd | a script to stop the syslogd | a symbolic link to ./start_syslogd |
/system/etc/syslog.conf_with_local_files | an example syslog config file to log a
loghost and to local files |
|
/system/etc/syslog.conf | a syslog config file to log only to the
loghost |
this is the default syslog config file |
/system/etc/syslog.d | the directory for additional syslog config
files |
additional syslog config files must use the
suffic .conf |
/system/etc/hosts | a writable host file to be able to define
the loghost |
The file /system/etc/hosts is not changed if already replaced by another Magisk Module. |
OmniROM 12 | How to compile the OmniROM for the ASUS Zenfone 8 |
OmniROM 13 | How to compile the OmniROM 13 for the ASUS Zenfone 8 |
OmniROM 14 |
How to compile the OmniROM 14 for the ASUS Zenfone 8 |
repo init -u https://github.com/omnirom/android.git -b
android-15 --git-lfs
[ OmniRom 15 - xtrnaw7@t15g
/data/develop/android/OmniROM_15.0 ] $ date
Sat Mar 8 09:57:54 AM CET 2025
[ OmniRom 15 - xtrnaw7@t15g
/data/develop/android/OmniROM_15.0 ] $
[ OmniRom 15 - xtrnaw7@t15g /data/develop/android/OmniROM_15.0 ]
$ cat .repo/local_manifests/local_manifest.xml
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="DonkeyCoyote"
fetch="https://github.com/DonkeyCoyote" />
<project path="vendor/asus"
name="android_vendor_asus" remote="gitlab" revision="android-15"
/>
<project path="vendor/microg"
name="android_prebuilts_prebuiltapks" remote="omnirom"
revision="android-14.0" />
<project path="vendor/images/asus"
name="android_vendor_images_asus" remote="gitlab"
revision="android-14.0" />
<project path="vendor/gapps"
name="android_vendor_gapps" remote="gitlab"
revision="android-15" />
</manifest>
[ OmniRom 15 - xtrnaw7@t15g /data/develop/android/OmniROM_15.0 ]
$
[ OmniRom 15 (devpool) - xtrnaw7@t15g
/devpool001/develop/OmniROM_15.0 ] $ cat
.repo/local_manifests/local_manifest.xml
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="DonkeyCoyote"
fetch="https://github.com/DonkeyCoyote" />
<project path="vendor/asus"
name="proprietary_vendor_asus" remote="DonkeyCoyote"
revision="android-15" />
<project path="vendor/microg" name="android_prebuilts_prebuiltapks"
remote="omnirom" revision="android-14.0" />
<project path="vendor/images/asus"
name="android_vendor_images_asus" remote="gitlab"
revision="android-14.0" />
<project path="vendor/gapps" name="android_vendor_gapps"
remote="gitlab" revision="android-15" />
</manifest>
[ OmniRom 15 (devpool) - xtrnaw7@t15g
/devpool001/develop/OmniROM_15.0 ] $
repo-lfs
# optional:
#
# to build an OmniROM image with MicroG packages, set the
environment variable ROM_BUILDTYPE to MICROG before starting the
build
# (of course this only works if the
repositories with MicroG are configured in the manifest files)
#
# to build an OmniROM image with GAPPS packages, set the
environment variable ROM_BUILDTYPE to GAPPS before starting the
build.
# (of course this only works if the repositories with GAPPS are
configured in the manifest files)
#
export ROM_BUILDTYPE=MICROG
. build/envsetup.sh
lunch omni_zenfone8-ap4a-user
brunch omni_zenfone8-ap4a-user
[ OmniRom 15 - xtrnaw7@t15g
/data/develop/android/OmniROM_15.0 ] $ ls -l
out/target/product/zenfone8/omni-15-*zip
-rw-rw-r--. 2 xtrnaw7 xtrnaw7 1405496265 Nov 21 23:50
out/target/product/zenfone8/omni-15-20241121-zenfone8-MICROG.zip
[ OmniRom 15 - xtrnaw7@t15g /data/develop/android/OmniROM_15.0 ]
$
[ OmniROM 15 Dev - xtrnaw7@t15g
/data/develop/android/OmniROM_14.0 ] $ ls -l
./build/make/target/product/security/platform.*
-rw-rw-r--. 1 xtrnaw7 xtrnaw7 1216 Nov 14 15:24
./build/make/target/product/security/platform.pk8
-rw-rw-r--. 1 xtrnaw7 xtrnaw7 1675 Nov 14 15:24
./build/make/target/product/security/platform.x509.pem
[ OmniROM 15 Dev - xtrnaw7@t15g
/data/develop/android/OmniROM_14.0 ] $
"proprietary_vendor_asus"
from DonkeyCoyote
Directory |
Content |
Comment |
/data/local/tmp/sysroot/bin | a few binaries and symbolic links for the
tools |
|
/data/local/tmp/sysroot/usr/bin |
binaries for the tools |
|
/data/local/tmp/sysroot/usr/lib |
libraries for the tools |
|
/data/local/tmp/sysroot/usr/libexec |
helper files and binaries for the tools |
|
/data/local/tmp/sysroot/etc |
config files for the tools |
|
/data/local/tmp/sysroot/usr/include/ |
some include files that might be used to
compile the binaries |
|
/data/local/tmp/sysroot/usr/share |
data files for the tools |
|
/data/local/tmp/sysroot/usr/ndk/#ndkversion# |
#ndkversion# is the NDK version; as of 19.05.2025 the NDK versions in the tar archive are r27b and r27c | |
/data/local/tmp/sysroot/usr/clang19/ |
directory tree with the clang files |
|
/data/local/tmp/sysroot/usr/clang19/bin/ |
directory with the binaries for clang |
|
In case of an error when executing a
self compiled binary, I recommend to create a binary with debug
infos and execute the binary from within the GNU debugger gdb,
which is part of the toolchainTWRP image file |
/e/ version |
Comment |
twrp-e-2.5-t-20241108446630-community-sake.img | 2.5.1 |
Android 13 |
twrp-e-2.6.3-t-20241217455572-community-sake.img | 2.6.3 |
Android 13 |
twrp-e-2.7-t-20250112460975-community-sake.img | 2.7 |
Android 13 |
twrp-e-2.8-t-20250219470166-community-sake.img |
2.8 |
Android 13 |
e-codeversionnumber-osversion-YYYYMMDDbuildid-UNOFFICIAL-devicename.zip
-e "BRANCH_NAME=v2.9-t" \
URL |
Contents |
https://gitlab.e.foundation/e/os/releases/-/tags | The list of defined tags for /e/
|
https://gitlab.e.foundation/e/os/releases/-/branches |
The list of defined branches for /e/ |
https://doc.e.foundation/support-topics/docker-command-details | Important parameter for the docker command
for buildling /e/ |
https://gitlab.e.foundation/e/os/docker-lineage-cicd/-/blob/master/Dockerfile.community | The list of environment variables that can
be used for the docker command to build /e/
|
https://community.e.foundation/c/e-devices/unofficial-builds/ | The discussion forum for unofficial builds
of /e/ |
https://gitlab.e.foundation/e |
repositories with the source code for /e/
|
https://wiki.lineageos.org/devices/sake/ | Information about LineageOS for the
ASUS Zenfone 8 |
https://wiki.lineageos.org/devices/sake/build/ | Instructions to build LineageOS for
the ASUS Zenfone 8 |
cd vendor/nxp
find . -name ".git"
executable |
type |
Description |
enable_wireless_adb.sh |
script |
This script enables adb via WiFi The script can also be used manually to enable adb via WiFi (without the port forwarding) The script is also available for download here: enable_wireless_adb.sh |
socat |
binary |
socat is used for the local port
forwarding; the socat binary in the Magisk Module
is for arm64 CPUs. The socat binary is also available for download here: socat |
real_netstat |
binary |
netstat executable with different
name to not overwrite the netstat from Android;
this binary is optional - the scripts use the netstat
from Android if this binary does not exist |
start_adb_via_wifi.sh | script |
This script enables adb using the script enable_wireless_adb.sh,
starts socat to forward the fixed port, monitors
the socat process and restarts it if necessary The script can also be used manually to enable adb via WiFi and the port forwarding if not started by the Magisk Module (see below) |
Script |
Logfile |
Comment |
customize.sh |
/data/local/tmp/enable_wireless_adb_customize.sh.log |
customize.sh creates the logfile only if
the file /data/local/tmp/debug exists |
service.sh |
/data/local/tmp/enable_wireless_adb_service.sh.log |
customize.sh creates the logfile only if the file /data/local/tmp/debug exists |
enable_wireless_adb.sh |
/data/local/tmp/enable_wireless_adb/enable_wireless_adb.log* |
enable_wireless_adb.sh creates the log file
only if it runs in a session without tty To force the script to write the messages to a log file execute it with redirection for STDIN, example: ASUS_I006D:/ $ enable_wireless_adb.sh </dev/null /system/bin/enable_wireless_adb.sh -- enabling adb connections via WLAN Running in a session without tty -- using the logfile "/data/local/tmp/enable_wireless_adb.log" ASUS_I006D:/ $ Set the variable ENABLE_WIRELESS_ADB_LOGFILE before starting the script to use another logfile. The script internal logrotate keeps the last 10 versions of this log file |
start_adb_via_wifi.sh |
/data/local/tmp/enable_wireless_adb/start_adb_via_wifi.sh.log |
enable_wireless_adb.sh creates the log file
only if it runs in a session without tty Set the variable START_ADB_VIA_WIFI_LOGFILE before starting the script to use another logfile. The script internal logrotate keeps the last 10 versions of this log file |
File |
used for |
Comment |
/tmp/start_adb_via_wifi.sh.run |
semaphor file for start_adb_via_wifi.sh
to avoid multiple parallel executions; the file contains
the PID of the running process. |
The script start_adb_via_wifi.sh
will not start if this file exists. If no other instance
of the script is running, just delete the file manually
before executing start_adb_via_wifi.sh. |
/data/local/tmp/enable_wireless_adb/adb_wifi_port |
fixed TCP Port to use; the default fixed
TCP port hardcoded in the script is 9999 |
If the script is executed as non-root user,
the port to use must be greater then 1024 ( the scripts
started via Magisk are always running as user root) |
/data/local/tmp/enable_wireless_adb/current_adb_wifi_port |
fixed TCP port used; this file is created
by the script start_adb_via_wifi.sh with the real
TCP port in use (either the default port or the port found
in the file adb_wifi_port) |
|
/data/local/tmp/enable_wireless_adb/do_not_start_socat | semaphor file to disable the execution of start_adb_via_wifi.sh
|
|
/data/local/tmp/enable_wireless_adb/do_not_restart_socat | semaphor file to disable the restart of
socat after socat failed |
The Action button for the Magisk
Module in the Magisk GUI creates this file |
/data/local/tmp/enable_wireless_adb/add_wlan_bssid | if this file exists; start_adb_via_wifi.sh
always adds the BSSID of the current WLAN to the adbd
store |
see the notes
about this feature above |
/data/local/tmp/wireless_adb_port |
random selected TCP port used for adb via
WiFi; this file is created by the script enable_wireless_adb.sh
If the directory /data/local/tmp does not (yet) exist when the script is running, it writes the port to the file /cache/wireless_adb_port. |
use the the command enable_wireless_adb.sh --print_port_file to print the name of the current file used to store the port number use the command enable_wireless_adb.sh --print_port to print the contents of this file |
/data/local/tmp/debug |
if this file exists, the scripts write
STDOUT and STDERR to a log file |
|
/data/local/tmp/trace |
If this file exists, the trace output (set
-x) of the scripts is enabled |
|
Note that Magisk also disables root access for
the shell when it detects a bootloop.
This implementation only finds bootloops that occur during loading of the Magisk module; a bootloop that starts after all modules have been loaded is not recognized.
To test the feature, create a dummy module that reboots the
phone:
# execute as root user
#
mkdir /data/adb/modules/test_failsafe_mode/
echo "reboot" >/data/adb/modules/test_failsafe_mode/service.sh
and reboot the phone to start a bootloop.
magisk --sqlite 'UPDATE settings SET
value="2" where key="bootloop" ;'
and reboot the phone. To re-enable Magisk just
reboot the phone (the Magisk modules must be enable manually).
File |
Date / Version |
Mentioned in |
Comment |
install_apk.sh | 24.11.2024 2.1.0 |
How to install packages (apk files) for Android via script | the script can run on the PC or in an adb
session on the phone |
install_magisk_via_twrp.sh |
24.11.2024 v4.1.0.0 |
How to
install Magisk into the boot partition using script |
|
PlayStore_for_MicroG.zip |
How to replace the Fake Store from OmniROM with MicroG with a patched Playstore | this is a Magisk Module; the Playstore
version is 20-9-20-all |
|
PlayStore_for_MicroG_28.3.16.21-v1.0.0.zip | 28.3.16-21-v1.0.0.0 |
How
to replace the FakeStore in_MicroG with the original
Playstore |
this is a Magisk Module |
PlayStore_for_MicroG_42.3.24-31-v1.1.0.zip | 42.3.24-31-v1.1.0 |
How to replace the Fake Store from OmniROM with MicroG with a patched Playstore | This is a Magisk Module |
initshell.zip |
How to change the home directory for the user root on an Android phone | This is a Magisk Module | |
profile |
How to change the home directory for the user root on an Android phone | ||
bootctl-binary-v2.1.3.zip | 2.1.3 |
How to switch the
active slot |
This is a Magisk Module The original repository https://github.com/roihershberg/bootctl-binary is not maintained anymore by the author. |
install_twrp_from_within_twrp.sh |
22.11.2024 v1.3.0.0 |
How to install
TWRP via script |
starting with version 1.3.0.0 the script also supports the OrangeFox recovery |
install_twrp.sh | 24.11.2024 v1.3.2.0 | How to install TWRP via script | |
boot_phone_from_twrp.sh |
13.07.2025 v3.2.8.0 |
How to
boot a phone from a TWRP recovery image via script How to enable root access using Magisk in a script |
starting with version 3.2.0.0 the script
also supports the OrangeFox
recovery |
enable_wifi.sh |
20.11.2022 |
How to
change files in Android XML Binary format |
|
sqlite3 |
3.50.1 2025-06-03 18:11:27 | How
to
enable
root
access
using
Magisk
in a script |
sqlite3 binary for 64 Bit ARM CPUs
dynamically linked only for the standard Android OS
librariesDetails[clang19 toolchain] ASUS_I006D:/data/local/tmp $ sqlite3 --version 3.50.1 2025-06-03 18:11:27 c8523d9e145ebdc74dc0516d4eed55e96f324166edcf0f65766de3a7622d561f (64-bit) [clang19 toolchain] ASUS_I006D:/data/local/tmp $ [clang19 toolchain] ASUS_I006D:/data/local/tmp $ file $PWD/sqlite3 /data/local/tmp/sqlite3: ELF shared object, 64-bit LSB arm64, dynamic (/system/bin/linker64), for Android 31, built by NDK r27b (12297006), not stripped [clang19 toolchain] ASUS_I006D:/data/local/tmp $ [clang19 toolchain] ASUS_I006D:/data/local/tmp $ ldd $PWD/sqlite3 linux-vdso.so.1 => [vdso] (0x7a1ff2f000) libm.so => /apex/com.android.runtime/lib64/bionic/libm.so (0x7a1b905000) libz.so => /system/lib64/libz.so (0x7a1b881000) libc.so => /apex/com.android.runtime/lib64/bionic/libc.so (0x7a1849c000) libdl.so => /apex/com.android.runtime/lib64/bionic/libdl.so (0x7a1b8ef000) [clang19 toolchain] ASUS_I006D:/data/local/tmp $ |
enable_root_access_via_magisk.sh |
21.11.2024 1.6.0.0 |
How to enable root access using Magisk in a script | |
init_magisk_db.sh |
30.04.2024 v1.0.3.0 |
How to enable root access using Magisk in a script | |
enable_adb.sh |
16.12.2022 1.0.0.0 |
||
install_os_via_twrp.sh |
26.02.2025 v2.1.5.0 |
How
to
install
an
OS
image
using
the TWRP binary twrp |
|
enable_access_via_adb.sh | 30.04.2024 v1.3.0.0 |
How
to
enable
root
access
using
Magisk
in a script |
|
enable_adb_using_magisk.sh |
23.05.2024 1.2.3.0 |
How
to
enable
root
access
using
Magisk
in a script |
|
execute_tasks.sh |
04.06.2024 v2.3.5 |
How to install and configure the Android OS | |
prepare_phone.include |
25.02.2025 |
How to install and configure the Android OS | |
prepare_phone.conf |
25.02.2025 | How to install and configure the Android OS | |
install_twrp_ramdisk.sh | 15.05.2023 1.0.0.0 |
Installing
TWRP
into
the
boot
partition
again
after the installation of an OS update |
|
disable_fake_store.zip |
04.06.2023 1.0.0.0 |
How to install a more recent version of the Playstore in OmniROM | |
get_aosp_patches.sh |
07.02.2024 1.1.0.0 |
How
to
apply
the
Android
Security
patches
to a local repository |
|
rename_apk.sh |
05.02.2024 1.0.0.0 |
How to get the application name and version from an apk file | |
/files/public/Android/binaries_for_arm64/ | Examples for compiling C programs for Android using gcc or clang | Binaries compiled for arm64 CPUsFilelist
|
|
/files/public/Android/dmctl/ |
dmctl binaries for Android |
dmctl binaries compiled for arm64
CPUsFilelistxtrnaw7@t15g /data/www/myhomepage/htdocs/files/public/Android/binaries_for_arm64/dmctl]$ date Sat Feb 15 08:31:11 AM CET 2025 [xtrnaw7@t15g /data/www/myhomepage/htdocs/files/public/Android/binaries_for_arm64/dmctl]$ [xtrnaw7@t15g /data/www/myhomepage/htdocs/files/public/Android/binaries_for_arm64/dmctl]$ ls -l total 292 -rwxr-xr-x. 1 xtrnaw7 xtrnaw7 90744 Feb 14 16:16 dmctl_android33 -rwxr-xr-x. 1 xtrnaw7 xtrnaw7 99160 Feb 14 08:07 dmctl_android34 -rwxr-xr-x. 1 xtrnaw7 xtrnaw7 95496 Feb 14 08:04 dmctl_android35 -rw-rw-r--. 1 xtrnaw7 xtrnaw7 345 Feb 14 16:31 README.txt [xtrnaw7@t15g /data/www/myhomepage/htdocs/files/public/Android/binaries_for_arm64/dmctl]$ see http://bnsmb.de/files/public/Android/dmctl/README.txt |
|
print_security_patch |
16.01.2025 v1.3.0.0 |
Infos for
building a CustomROM image How to print the security patch level used in repositories or ROM image zip files |
|
check_apks.sh | 26.04.2024 1.1.0.0 |
How
to
fix
a
hanging
restore
in
Titanium Backup |
|
ASUS_Zenfone8_prog_firehose_ddr.elf |
Binary build date: Aug 13 2021 @ 23:00:54 |
Some hints about EDL
mode |
firehose loader for edl mode on the ASUS
Zenfone 8 |
02A
firehose.zip |
Binary build date: Mar 23 2022 @ 23:27:20 |
Some hints about EDL mode | zip file with some firehose loader for EDL mode on the ASUS Zenfone 8 |
usbreset |
How to reset the USB port used to connect an Android phone | small Linux program to reset an USB port Source code: https://askubuntu.com/questions/645/how-do-you-reset-a-usb-device-from-the-command-line or download the copy of the script from here: usbreset.c If the binary does not work on your Linux OS, please download the source code for the program and recompile it using these commands: cc usbreset.c -o usbreset chmod 755 usbreset |
|
reset_usb_port_for_phone.sh |
1.0.1 |
How
to
reset
the
USB
port
used
to connect an Android phone |
|
enable_adb_in_recovery_ramdisk.sh | 26.06.2024 v1.0.1 |
How to add files to the ramdisk used for the recovery boot | |
create_ugly_twrp_image.sh | 08.06.2025 v2.1.0 |
How
to
create
a
TWRP
image
for
LineageOS based ROMs using a script |
|
list_bind_mounts.sh | 15.06.2025 v1.2.0 |
How to list bind mounts | |
apply_security_level_to_StatixOS_repos.sh | 12.08.2024 v1.0.0 |
How to apply an Android patchlevel to the repositories for the StatiXOS | |
sign_apk.sh | 28.08.2024 1.0.0 |
How to re-sign an apk file | |
install_mm.sh | 19.04.2025 v1.2.1 |
Some
hints for creating Magisk Modules How to install Magisk modules via a script |
|
remount_dynamic_partitions.sh | 07.09.2024 1.1.0 |
How
to create logical devices using the device mapper from
Android How to access the system partitions while the phone is booted into the LineageOS recovery |
|
list_logical_device_backends.sh | 07.09.2024 1.1.0 | How to create logical devices using the device mapper from Android | |
list_logical_device_usage.sh | 03.09.2024 1.0.0 |
How to create logical devices using the device mapper from Android | |
recreate_bind_mount.sh |
06.11.2024 1.0.0 |
How
to recreate bind mounts for files in Magisk Module
|
|
lmm |
22.06.2025 v2.1.2 |
How
to list all installed modules in adb session |
|
search_magisk_package.sh | 05.12.2024 1.0.0 |
How to
find a hidden Magisk App |
|
configure_microg.sh |
06.12.2024 1.0.0 |
How to
configure MicroG via Script |
|
openssh_9.9p2_v1.1.0.tar.gz |
20.06.2025 9.9p2 1.1.0 |
How
to connect to Android via ssh as user shell without root
access |
A tar file with OpenSSH binaries
and other tools for arm64 CPUs for installation in
the directory /data/local/tmp/sysroot Notes Since version9.9p2.1.1.0 of the tar file, the privilege separation user is "nobody" so that the sshd can also be started by the root user. |
openssh_10.0p2_v1.1.0.tar.gz |
20.06.2025 10.0p2 1.1.0 |
How to connect to Android via ssh as user shell without root access | A tar file with OpenSSH binaries
and other tools for arm64 CPUs for installation in
the directory /data/local/tmp/sysroot Notes Since version 10.0p2.1.1.0 of the tar file, the privilege separation user is "nobody" so that the sshd can also be started by the root user. |
clang19_toolchain-v1.3.0_release_21.05.2025_.tar.gz |
1.3.0 21.05.2025 |
How to install a Toolchain for clang on phones without root access | There is also repository with the clang19
toolchain on github: https://github.com/bnsmb/clang19_toolchain_for_android |
r28b.tar.gz |
r28b |
all files from the Android NDK r28b necessary to compile binaries or libraries on the phone using the clang19 toolchain -- see How to install a Toolchain for clang on phones without root access | DetailsThis tar file contains the necessary files from the Android NDK r28b for compiling binaries or libraries on Android with clang19. Usage: - Install the clang19 toolchain for Android - Copy the tar file with the Android NDK r28b to the phone adb push r28b.tar.gz /data/local/tmp/sysroot/usr/ndk/r28b.tar.gz and unpack it on the phone cd /data/local/tmp/sysroot/usr/ndk tar -xf ./r28b.tar.gz To use the Android NDK r28b instead of the default Android NDK from the clang19 toolchain Init the clang19 toolchain using this command: NDK=r28b source /data/local/tmp/sysroot/bin/init_clang19_env |
clang20_for_Android_22.04.2025_v1.0.0-release.tar.gz |
22.04.2025 v1.0.0 |
How
to install clang20 on phones without root access |
|
add_missing_definitions.h | How
to handle missing definitions in the source file when
compiling under Android How to install a Toolchain for clang on phones without root access |
include file with definitions missing in
Android |
|
libmylib.so |
How to install a Toolchain for clang on phones without root access | dummy empty library for Android on arm64
CPUs |
|
patch_without_logging_for_ComputerEngine.java | 08.03.2025 |
Temporary fix for using the Google PlayStore in the OmniROM_with_MicroG | |
enable_wireless_adb_v1.1.0.zip |
1.1.0 07.05.2025 |
How to enable adb via WiFi with a fixed TCP port | This is a Magisk Module |
enable_wireless_adb.sh |
03.05.2025 2.0.0.0 |
How to enable adb via WiFi with a fixed TCP port | |
switch_adb_via_wifi.sh
|
05.05.2025 1.0.0 |
How to enable adb via WiFi with a fixed TCP port | |
create_overlay_mount.sh |
24.06.2025 1.2.0 |
How to use overlay mounts in Android to make /system writable | |
perl542_and_clang_virtual_image.gz |
10.07.2025 1.0.0.0 |
Virtual disk with Perl 5.42 and a minimal
clang19 toolchain http://bnsmb.de/android/Documentation_for_the_script_create_overlay_mount.sh.html#Virtual_disk_with_Perl_5.42_and_a_minimal_clang19_toolchain |
|
clang19_virtual_image.gz |
10.07.2025 1.0.0.0 | Virtual disk with a clang19 toolchain http://bnsmb.de/android/Documentation_for_the_script_create_overlay_mount.sh.html#Virtual_disk_with_a_clang19_toolchain |
File |
Content |
Comment |
twrp-3.7.0_12-0-I006D-with_Android14_support.img | unofficial (!) TWRP image for the ASUS
Zenfone 8 with support for Android 14 Use at your own risk! |
The source for this TWRP image was checked
out on 25.11.2023. There are additional properties defined in this image: additional properties in the imageASUS_I006D:/ # getprop | grep android_version [ro.product.bootimage.supported_android_version]: [14] [ro.product.odm.supported_android_version]: [14] [ro.product.product.supported_android_version]: [14] [ro.product.system_ext.supported_android_version]: [14] [ro.product.vendor.supported_android_version]: [14] ASUS_I006D:/ # Update 10.01.2024 There is now an official new TWRP version for ASUS Zenfone 8 with Android 14 support: TWRP version 3.7.0.12-1 |
twrp-3.7.0_12-0-I006D-with_Android14_support_and_tools.img |
unofficial (!) TWRP image for the ASUS
Zenfone 8 with support for Android 14 and
additional binaries Use at your own risk! |
this is the TWRP image twrp-3.7.0_12-0-I006D-with_Android14_support.img
with these additional binaries:list of additional binariesASUS_I006D:/ # ls -l /system/bin/ed system/bin/gawk /system/bin/gdisk /system/bin/parted /system/bin/sqlite3 /system/bin/vi/system/xbin -rwxrwxrwx 1 root root 744128 2023-11-26 09:08 /system/bin/ed -rwxrwxrwx 1 root root 680612 2023-11-26 09:08 /system/bin/gdisk -rwxrwxrwx 1 root root 470788 2023-11-26 09:08 /system/bin/parted -rwxrwxrwx 1 root root 1714720 2023-11-26 09:08 /system/bin/sqlite3 -rwxrwxrwx 1 root root 4127280 2023-11-26 09:09 /system/bin/vi -rwxrwxrwx 1 root root 1777096 2023-11-26 09:08 system/bin/gawk /system/xbin: total 4500 -rwxrwxrwx 1 root root 938296 2023-11-26 09:06 cpio -rwxrwxrwx 1 root root 960496 2023-11-26 09:06 find -rwxrwxrwx 1 root root 1486120 2023-11-26 09:06 grep -rwxrwxrwx 1 root root 1216256 2023-11-26 09:06 tar ASUS_I006D:/ # This image also defines these two new properties: additional propertiesASUS_I006D:/ # getprop ro.product.type enhanced ASUS_I006D:/ # ASUS_I006D:/ # getprop ro.source_checkout_date 2023-11-25 ASUS_I006D:/ # |
twrp-3.7.0_12-1-I006D-enhanced.img | unofficial (!) TWRP image for the
ASUS Zenfone 8 with support for Android 14 Use at your own risk! |
this is a copy of the official twrp-3.7.0_12-1-I006D.img
with some additional files:list of additional binariesASUS_I006D:/system/bin # pwd /system/bin ASUS_I006D:/system/bin # ls -l bootctl* lp* ed gawk gdisk parted sqlite3 vi* /system/xbin -rwxr-x--- 1 root root 34112 2024-01-10 19:54 bootctl -rwxr-x--- 1 root root 19832 2024-01-10 19:54 bootctl.bin -rwxr-xr-x 1 root root 744128 2024-01-10 19:54 ed -rwxr-xr-x 1 root root 1777096 2024-01-10 19:54 gawk -rwxr-xr-x 1 root root 680612 2024-01-10 19:54 gdisk -rwxr-xr-x 1 root root 19872 2024-01-10 19:54 lpdump -rwxr-xr-x 1 root root 31424 2024-01-10 19:54 lpdumpd -rwxr-xr-x 1 root root 100712 2024-01-10 19:54 lptools -rwxr-xr-x 1 root root 470788 2024-01-10 19:54 parted -rwxr-xr-x 1 root root 1714720 2024-01-10 19:54 sqlite3 -rwxr-xr-x 1 root root 4127280 2024-01-10 19:54 vi /system/xbin: total 4500 -rwxr-xr-x 1 root root 938296 2024-01-10 19:54 cpio -rwxr-xr-x 1 root root 960496 2024-01-10 19:54 find -rwxr-xr-x 1 root root 1486120 2024-01-10 19:54 grep -rwxr-xr-x 1 root root 1216256 2024-01-10 19:54 tar ASUS_I006D:/system/bin # see How to add additional files to an TWRP image for how to add additional files to a TWRP image |
twrp_3.7.0_12-0-I006D_for_lineageOS20-2024.img |
26.04.2024 Looks like this dirty created image only works for a specific LineageOS build. Therefor I removed the file. If you need this kind of TWRP image please create it yourself using the instructions from this post: How to use TWRP if LineageOS 20.x is installed (see also How to create a TWRP image for LineageOS based ROMs using a script) |
|
twrp_3.7.1.12-1_ASUS_Zenfone8_2024-12-02_extended.img | unofficial (!) TWRP image for the ASUS
Zenfone 8 with additional binaries Use at your own risk! |
The source for this TWRP image was
checked out on 10.09.2024. Additional binaries and files in the image are: list of additional binaries and files
|
twrp_3.7.1.12-1_ASUS_Zenfone8_2025-02-21_extended.img | unofficial (!) TWRP image for the ASUS
Zenfone 8 with additional binaries Use at your own risk! |
The
source for this TWRP image was checked out on 10.09.2024. Additional binaries and files in the image are: list of additional binaries and files
|
OrangeFox-Unofficial-I006D-2024-09-12.img OrangeFox-Unofficial-I006D-2024-09-12.zip |
unofficial (!) OrangeFox
Recovery for the ASUS Zenfone 8 Use at your own risk! |
The source for the OrangeFox recovery
sources was checked out 10.09.204. The image was compiled with these custom build vars: Custom build varsexport FOX_REPLACE_BUSYBOX_PS=1 export FOX_REPLACE_TOOLBOX_GETPROP=1 export FOX_USE_TAR_BINARY=1 export FOX_USE_SED_BINARY=1 export FOX_USE_ZIP_BINARY=1 export FOX_USE_NANO_EDITOR=1 export FOX_USE_BASH_SHELL=1 export OF_USE_MAGISKBOOT=1 export OF_USE_MAGISKBOOT_FOR_ALL_PATCHES=1 export FOX_DISABLE_APP_MANAGER=0 export FOX_DELETE_AROMAFM=1 export TARGET_DEVICE_ALT="gssi,ASUS_I006D" see https://gitlab.com/OrangeFox/vendor/recovery/-/blob/master/orangefox_build_vars.txt for a description of the custom build vars see https://wiki.orangefox.tech for infos about the OrangeFox recovery see How to compile the OrangeFox Recovery for the ASUS Zenfone 8 for instructions to create the image |
twrp-e-3.0.4-t-20250710507809-community-sake.img twrp-e-3.0.1-t-20250607498934-community-sake.img twrp-e-3.0-t-20250529496537-community-sake.img twrp-e-2.9-t-20250322478412-community-sake.img twrp-e-2.8-t-20250219470166-community-sake.img twrp-e-2.7-t-20250112460975-community-sake.img twrp-e-2.6.3-t-20241217455572-community-sake.img twrp-e-2.5-t-20241108446630-community-sake.img |
unofficial (!) TWRP image for the ASUS
Zenfone 8 running /e/ Do not use this TWRP image if the OS installed on the phone is NOT the /e/ version used in the name of the file! Do NOT install this TWRP in the boot partition! Use at your own risk! |
see here for details about this image |
URL |
App |
Comment |
https://f-droid.org/ | F-Droid |
"F-Droid is an installable catalogue of
FOSS (Free and Open Source Software) applications for the
Android platform. The client makes it easy to browse,
install, and keep track of updates on your device" |
https://apt.izzysoft.de/fdroid/index.php |
Another app Repository usable with the
F-Droid App |
|
https://github.com/x13a/Sentry?tab=readme-ov-file | Sentry |
"Tiny app to enforce security policies of
your device." This app can be used to disable the SafeMode |
https://github.com/gibcheesepuffs/Switch-My-Slot-Android | Switch My Slot |
app with a GUI for bootctl |
https://hax4us.github.io/2021-11-22-install-android-sdk-in-termux/ |
Instructions to install the SDK in the Android OS | |
https://github.com/lzhiyong/termux-ndk |
Android ndk for Termux (only supports aarch64 CPUs and Android 9 or above) | |
https://github.com/Lzhiyong/termux-ndk/releases/download/android-sdk/android-sdk-aarch64.zip |
Android SDK compiled for aarch64
CPUs |
|
https://github.com/lzhiyong/android-sdk-tools/releases/download/34.0.3/android-sdk-tools-static-aarch64.zip
|
binaries from the Android SDK for aarch64
CPUs There are also zip available files with the binaries for arm (32 Bit), i686, and x86_64 CPUs on this page Note that I created a Magisk Module with the binaries for aarch64 CPUs from this zip file -- see here. |
Contents of the zip file[ OmniRom 14 Dev - xtrnaw7@t15g /data/img/android/aarch64 ] $ unzip -t android-sdk-tools-static-aarch64.zip Archive: android-sdk-tools-static-aarch64.zip testing: build-tools/aapt OK testing: build-tools/aapt2 OK testing: build-tools/aidl OK testing: build-tools/zipalign OK testing: build-tools/dexdump OK testing: build-tools/split-select OK testing: platform-tools/adb OK testing: platform-tools/fastboot OK testing: platform-tools/sqlite3 OK testing: platform-tools/dmtracedump OK testing: platform-tools/etc1tool OK testing: platform-tools/hprof-conv OK testing: platform-tools/e2fsdroid OK testing: platform-tools/sload_f2fs OK testing: platform-tools/mke2fs OK testing: platform-tools/make_f2fs OK testing: platform-tools/make_f2fs_casefold OK No errors detected in compressed data of android-sdk-tools-static-aarch64.zip. [ OmniRom 14 Dev - xtrnaw7@t15g /data/img/android/aarch64 ] $ |
https://play.google.com/store/apps/details?id=moe.shizuku.privileged.api |
Shizuku |
App that can be used to become the user shell
in a local shell on the phone see How to become the user shell in a local terminal on the phone |
https://github.com/bk138/droidVNC-NG?tab=readme-ov-file |
droidVNC |
VNC server for Android that does NOT
require root access see Remote Access to an Android phone |
URL |
Content |
Comment |
https://twrp.me/ |
TWRP home page |
|
https://twrp.me/faq/openrecoveryscript.html |
TWRP command line guide |
|
https://xdaforums.com/t/dev-how-to-compile-twrp-touch-recovery.1943625/ |
XDA Forum: How to compile TWRP touch
recovery |
|
https://www.hovatek.com/forum/thread-27922.html |
How to
enable and disable certain TWRP features without having
kernel source code |
not tested yet |
https://github.com/TeamWin/Team-Win-Recovery-Project | TWRP source code | most probably outdated |
https://github.com/TeamWin/android_bootable_recovery/ |
TWRP source code | |
https://github.com/TeamWin/android_bootable_recovery/blob/android-12.1/twrpRepacker.cpp | Source code from TWRP for installing TWRP into the boot partition | |
https://github.com/minimal-manifest-twrp/ | Manifests for building TWRP |
|
https://github.com/TeamWin/android_device_asus_I006D |
TWRP device tree for ASUS ZenFone 8 a.k.a. "sake" a.k.a. ZS590KS | |
https://gerrit.twrp.me/q/status:open+-is:wip |
Gerrit for TWRP |
|
https://unofficialtwrp.com | Support for TWRP on devices offical not supported by TWRP | |
https://unofficialtwrp.com/build-compile-twrp-recovery/ | Instructions how to build TWRP | |
https://github.com/Magisk-Modules-Repo/twrp-keep |
A Magisk module with a script to reinstall
TWRP into the inactive boot partition after installing an
OS update |
|
OrangeFox related Webpages |
OrangeFox is a recovery image based on TWRP |
|
https://wiki.orangefox.tech/ |
OrangeFox Home page | |
https://wiki.orangefox.tech/en/dev/building | Build instructions for OrangeFox | |
https://gitlab.com/OrangeFox/sync |
Instructions to sync the OrangeFox repos |
|
PitchBack related Webpages |
||
https://sourceforge.net/projects/pbrp/ |
"Pitch Black Recovery is a fork of TWRP
with many improvements to make your experience better.
It's more flexible & easy to use. Pitch Black Recovery
was started in March 18 2018 with the movement to enhance
TWRP with better customizatons, themes and features." |
|
https://github.com/PitchBlackRecoveryProject |
The repositories for PitchBlack on github |
|
https://xdaforums.com/t/recovery-pbrp-4-0-pitchblack-recovery-project.4506341/ |
XDA Forum for PitchBlack |
|
URL |
Content |
Comment |
https://github.com/topjohnwu/Magisk |
Magisk home page |
Magisk the must have for every Android
phone |
https://topjohnwu.github.io/Magisk/install.html |
Instructions to install Magisk |
|
https://topjohnwu.github.io/Magisk/changes.html |
Magisk changelog |
|
https://topjohnwu.github.io/Magisk/ |
Magisk documentation |
|
https://topjohnwu.github.io/Magisk/guides.html |
Magisk developer guide |
|
https://topjohnwu.github.io/Magisk/tools.html |
Magisk Tools documentation |
|
https://www.didgeridoohan.com/magisk/Magisk |
Magisk TroubleShooting Guide |
|
https://www.didgeridoohan.com/magisk/MagiskModuleIssues | Hints for issues with Magisk Modules | |
https://xdaforums.com/t/magisk-general-support-discussion.3432382/ |
General Magisk Support forum on XDA |
|
https://github.com/DerGoogler/MMRL |
Magisk Module Repo Loader -- a Magisk
Module Manager |
The MMRL requries this MagiskModule https://github.com/DerGoogler/MMRL-CLI |
https://github.com/Fox2Code/FoxMagiskModuleManager |
Fox Magisk ModuleManager |
|
https://github.com/MRepoApp/magisk-modules-repo-util |
A util for creating a Magisk Module
repository |
|
https://gist.github.com/niikoo/3f6bd13a69f2d68f3dd51cc667e79bdc | A startup script for Magisk to store the
logcat messages |
|
https://github.com/topjohnwu/zygisk-module-sample |
zygisk sample module ; can be used start
Zygisk modules |
|
https://xdaforums.com/t/magisk-general-support-discussion.3432382/page-2776#post-88438781 |
post about the Evolution of the Android and
Magisk booting process and architecture |
|
https://infosecwriteups.com/adding-root-certificate-to-android-with-magisk-module-92493a7e9e4f?gi=fd1225db2b4a |
Adding root certificates using a Magisk
module |
|
https://topjohnwu.github.io/Magisk/build.html |
Instructions to build Magisk from source |
Note: It's important to use git clone --recurse-submodules
https://github.com/topjohnwu/Magisk.git to clone the repository see also the instructions for compiling Magisk here. |
https://github.com/topjohnwu/ondk/releases |
Android NDK tar files necessary to build
Magisk |
"Oxidized NDK (ONDK) is an unofficial
repackaged Android NDK that includes a Rust toolchain." |
https://circlecashteam.github.io/MagiskPatcher/ | "Patch boot image by using a static
website." |
Note: As of 20.03.2025 the scripts on this page do not create a correct boot.img file if Magisk v28.x is used. |
URL |
Content |
Comment |
https://xdaforums.com/t/collection-of-magisk-modules-v2.3575758/ |
An XDA thread with a collection of Magisk
Modules |
|
https://github.com/Magisk-Modules-Repo/ |
Repository with Magisk Modules |
|
https://github.com/Magisk-Modules-Alt-Repo/ | Another repository with Magisk Modules | |
https://apt.izzysoft.de/magisk/ |
Repository with Magisk Modules | |
Repository with Magisk Modules with fonts |
||
https://github.com/mrh929/magisk-wifiadb |
A Magisk module to automatically enable adb
via WiFI |
|
https://github.com/anasfanani/magisk-autoboot |
"A Magisk module designed to enable automatic booting of your Android device when it's connected to a charger or USB." | |
https://github.com/anasfanani/Adb-Root-Enabler | A Magisk module to disable the
authentication for the adb daemon |
|
https://github.com/tiann/adb_root |
A Magisk module to start the adbd as root
user |
|
https://github.com/Magisk-Modules-Alt-Repo/magisk_overlayfs | Magisk Module to create a writable overlay filesystem for the read-only filesystems | see How
to use an overlay filesystem to make files writable
and How to create Magisk Modules that install new files in /system |
https://github.com/Magisk-Modules-Alt-Repo/NoProcStatRestriction | Magisk Module to allow access to /proc/stat for everyone again | This Magisk module can be used as example
for how to apply a SELinux policy via Magisk Module |
https://github.com/sn-00-x/fakestore2playstore/tree/master | A Magisk Module to replace the Fakestore with a patched Playstore | |
https://sourceforge.net/projects/magiskgapps/files/android-13-ALPHA/24.2.23/ |
Magisk Modules with Google Apps |
|
https://github.com/Magisk-Modules-Repo/ssh | Magisk module with ssh and rsync | |
https://github.com/evdenis/disk |
Disk tools for Android |
ASUS_I006D:/ # ls -l
/data/adb/modules/disk/system/bin total 7924 -rwxr-xr-x 1 root root 1788544 2024-07-24 13:23 cgdisk -rwxr-xr-x 1 root root 547924 2024-07-24 13:23 fdisk -rwxr-xr-x 1 root root 1459440 2024-07-24 13:23 fixparts -rwxr-xr-x 1 root root 1566120 2024-07-24 13:23 gdisk -rwxr-xr-x 1 root shell 602784 2024-07-24 13:23 parted -rwxr-xr-x 1 root root 542056 2024-07-24 13:23 sfdisk -rwxr-xr-x 1 root shell 1591192 2024-07-24 13:23 sgdisk ASUS_I006D:/ # |
https://github.com/S-trace/tcpdump_static_aarch64 |
Magisk module with tcpdump for Android | tcpdump version v4.9.2, static build |
https://github.com/henriknelson/git-magisk-module |
Magisk module with git for Android | git version 2.30.2 The scripts from this package need /system/bin/bash |
https://github.com/ianmacd/bash-aarch64 |
Magisk module with bash for Android | bash version 5.0.2 |
https://github.com/Magisk-Modules-Alt-Repo/mkshrc |
Magisk module with mksh for Android | |
https://github.com/partcyborg/zsh_arm64_magisk |
Magisk module with zsh for Android | The module does not work out of the box |
https://github.com/henriknelson/opensshd-magisk-module |
Magisk module with opensshd for Android | OpenSSH version v8.4p1 |
https://github.com/FerryAr/e2fsprogs-arm/releases/tag/v1.45.6 |
Magisk module with extfs tools for Android: badblocks chattr dumpe2fs e2fsck e2image e2undo fsck lsattr mklost+found tune2fs base_device debugfs e2freefrag e2fuzz e2initrd_helper filefrag logsave mke2fs resize2fs |
|
https://apt.izzysoft.de/magisk/modules/SQLite3UniversalBinaries/1.5_15.zip Source: https://gitlab.com/adrian.m.miller/sqlite3universalbinaries |
Magisk module with sqlite3 for Android | sqlite version 3.22 |
https://github.com/Magisk-Modules-Alt-Repo/sqlite3 |
Magisk module with sqlite3 for Android | sqlite version 3.46 |
https://github.com/Magisk-Modules-Alt-Repo/ToyBox-Ext |
Magisk module with toybox with additional
appletsList of commands
|
|
https://github.com/Magisk-Modules-Repo/ccbins https://github.com/Zackptg5/Cross-Compiled-Binaries-Android/tree/master |
Cross Compiled binaries for Android |
|
https://github.com/Magisk-Modules-Repo/adb-ndk |
Source for a Magisk Module with fastboot
and adb |
Note that root access is required to start
the adb from this Magisk module |
https://github.com/Zackptg5/Cross-Compiled-Binaries-Android | Source for the Magisk Module with various cross compiled binaries for Android | This zip file contains the binaries for different architectures[ OmniRomDev - xtrnaw7@t15g /data/develop/android/NewModules/Cross-Compiled-Binaries-Android-master ] $ ls -l bash/* -rwxr-xr-x. 1 xtrnaw7 xtrnaw7 1541516 Sep 15 23:50 bash/bash-arm -rwxr-xr-x. 1 xtrnaw7 xtrnaw7 1838864 Sep 15 23:50 bash/bash-arm64 -rwxr-xr-x. 1 xtrnaw7 xtrnaw7 1963936 Sep 15 23:50 bash/bash-x64 -rwxr-xr-x. 1 xtrnaw7 xtrnaw7 1883188 Sep 15 23:50 bash/bash-x86 -rwxr-xr-x. 1 xtrnaw7 xtrnaw7 3072 Sep 15 23:50 bash/etc.zip [ OmniRomDev - xtrnaw7@t15g /data/develop/android/NewModules/Cross-Compiled-Binaries-Android-master ] $ [ OmniRomDev - xtrnaw7@t15g /data/develop/android/NewModules/Cross-Compiled-Binaries-Android-master ] $ file bash/* bash/bash-arm: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, stripped bash/bash-arm64: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), statically linked, stripped bash/bash-x64: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped bash/bash-x86: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, stripped bash/etc.zip: Zip archive data, at least v2.0 to extract, compression method=store [ OmniRomDev - xtrnaw7@t15g /data/develop/android/NewModules/Cross-Compiled-Binaries-Android-master ] $ |
https://github.com/Magisk-Modules-Repo/ccbins |
Magisk Module with a script to download
various Unix tools compiled for Android from this repo: https://github.com/Zackptg5/Cross-Compiled-Binaries-Android |
not compatible with Magisk v27+ according
to the author |
https://github.com/Googlers-Repo/gcc/ |
GCC toolchain for Android |
As of 26.09.2024 the Magisk Module
installs this gcc version: ┌shell@localhost:/data/local/tmp └─$ gcc --version aarch64-linux-android-gcc (GCC) 10.2.0 Copyright (C) 2020 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ┌shell@localhost:/data/local/tmp └─$ see Compiling C programs in Android using gcc for usage instructions for this module |
https://github.com/affggh/Magisk_patcher |
Python GUI to patch a boot image file with
Magisk |
The tool needs a Magisk apk file. In my
tests on Fedora 41 the download of the Magisk apk from
within the tool failed. But the patcher worked after I copied the magisk.apk file manually into the directory ./prebuild in the directroy with the Magisk_patcher. Note that as of 14.11.2024 the Magisk Patcher v4.0.0 does not work with the apk file with Magisk v28-0. |
URL |
Content |
Comment |
https://omnirom.org/ |
OmniROM Homage |
OmniROM is Custom ROM for Android phones |
https://xdaforums.com/c/omnirom.2601/ | OmniROM Forums on XDA |
Most of the forums are outdated; it seems
that the forums are not used anymore |
https://github.com/omnirom/android |
Github repositories for OmniROM |
|
https://gitlab.com/omnirom |
Gitlab repositories for OmniROM |
|
https://github.com/omnirom/android_prebuilts_prebuiltapks | List of MicroG packages in the OmniROM image with MicroG | |
https://github.com/omnirom/android_vendor_omni/blob/android-14.0/utils/aosp-forked-list |
AOSP repositories forked for OmniROM |
These repositories must be merged with the
original AOSP repositories to apply the Android Security
Updates to the OmniROM |
https://github.com/omnirom/android_vendor_omni/blob/android-14.0/utils/aosp-merge.sh |
Script to merge an Android Security Update
to the local OmniROM repositories |
|
https://www.inovex.de/de/blog/aosp-advanced-development-tricks/ |
ASOP : Advanced Development tricks |
|
https://github.com/omnirom/android/tree/android-15 |
Github repositories for OmniROM 15 |
|
https://gitlab.com/omnirom/android_vendor_gapps |
Repositories with GApps for OmniROM |
|
URL |
Content |
Comment |
https://microg.org/ |
MicroG Homepage |
|
https://github.com/microg |
MicroG source on Github |
|
https://github.com/microg/GmsCore/wiki |
MicroG Wiki |
|
https://github.com/Psk-Ita/microG-GApps | Magisk module with MicroG with a patched Playstore | as of 08.07.2024 : the MicroG version is v0.2.29.233013 the Playstore version is 41.7.16-31 see How to install a more recent version of the Playstore in OmniROM |
https://github.com/nift4/microg_installer_revived/ | Magisk module with MicroG | |
https://github.com/micro5k/microg-unofficial-installer |
"microG unofficial installer is a flashable zip created for a simple installation of microG on Android." | the support thread for this installer in
XDA is available here: https://xdaforums.com/t/mod-flashable-microg-unofficial-installer.3432360/ Note: Version v1.3.1-beta successfully tested on plain OmniROM 14 without MicroG and GAPPS |
https://github.com/microg/GmsCore/releases |
MicroG releases |
URL |
Content |
Comment |
https://gerrit.googlesource.com/git-repo/ |
repo script for buidling your own CustomROM |
|
https://source.android.com/docs/setup/reference/repo |
repo command reference |
|
https://github.com/omnirom/android |
Getting started doc for the OmniROM |
|
https://github.com/omnirom |
Repositories for building the OmniROM |
|
https://developer.android.com/studio/command-line/ |
Documentation for the command line tools
from the Android Studio |
|
https://developer.android.com/studio/command-line/apksigner | Documentation for the apk signer from the Android studio | |
https://developer.android.com/studio/command-line/zipalign | Documentation for zipalign (zipalign must
be used to align an APK file) |
zipalign is part of the Android Studio |
https://developer.android.com/studio |
Android Studio Download |
The link to download the Android Studio
Command line tools is on the bottom of the page |
https://developer.android.com/ndk/downloads | NDK Downloads |
|
https://github.com/android/ndk/wiki/Unsupported-Downloads |
NDK Downloads (old versions) |
|
https://developer.android.com/tools#tools-sdk |
Android Studio Command line tools |
|
https://github.com/omnirom/android_prebuilts_prebuiltapks |
Prebuild MicroG packages for the OmniROM |
|
https://github.com/DonkeyCoyote/proprietary_vendor_asus | Vendor packages for the ASUS Zenfone 8 (neccessary for building your own CustomROM) | |
https://github.com/omnirom/android_device_asus_zenfone8/tree/android-12.1 | Device tree for the ASUS Zenfone 8 (neccessary for building your own CustomROM) | |
https://github.com/TheMuppets/ |
Vendor packages for various devices |
|
https://github.com/DonkeyCoyote/ |
Vendor packages for various devices | |
https://github.com/aosp-mirror/platform_build/tree/android12-platform-release/target/product/security |
How to create a the ssl keys for a
CustomROM image |
|
https://source.android.com/docs/core/architecture/configuration/add-system-properties | How to define system properties |
|
https://android.googlesource.com/platform/system/sepolicy/+/master/private/property_contexts |
defined SELinux contexts |
|
https://android.googlesource.com/platform/system/core/+/master/init/README.md |
Android Init language |
|
https://source.android.com/devices/tech/ota/sign_builds | Instructions to create certificates for an
OS image |
|
https://source.android.com/docs/security/bulletin |
Android Security Bulletins |
|
https://github.com/HyperN00B/Security_Patch_Merge_Helper |
"This is a helper script made by me for Android Custom ROMs This script wil let you merge the selected security patch into the selected source code. This script only works with Custom ROM sources." | |
https://source.android.com/docs/setup/reference/build-numbers |
Android code names, tags, and build numbers
("Patchlevel") |
|
https://github.com/git-lfs/git-lfs |
git command line extension lfs -- this is
necessary to sync the repositories for OmniROM 14 |
|
https://github.com/falk-werner/zipsign |
Tool to sign ZIP files using a SSL
certificate |
googletest (see below) is required to
compile zipsign |
https://github.com/google/googletest |
googletest is required to compile zipsign |
|
https://wiki.lineageos.org/verifying-builds |
A tool verify the signature of a ZIP file
with an ROM for an Android device |
|
https://developer.android.com/ndk/guides/android_mk |
Documentation for the syntax of Android.mk
files |
|
https://android.googlesource.com/platform/development/+/donut-release/ndk/docs/ANDROID-MK.TXT | Documentation for the syntax of Android.mk files | |
https://github.com/ThankYouMario |
Repository for Android |
|
https://github.com/ThankYouMario/android_vendor_google_pixel |
Repository with GApps for Android |
|
https://github.com/GrapheneOS/adevtool |
Tool to generate device trees for creating
a custom ROM |
|
https://wiki.lineageos.org/devices/sake/ |
Information about LineageOS for the ASUS
Zenfone 8 |
Note that there is no link to this page
anymore on the page with the list of supported devices https://wiki.lineageos.org/devices/ |
https://wiki.lineageos.org/devices/sake/build/ |
Instructions to build LineageOS for the
ASUS Zenfone 8 |
Note that there is no link to this page
anymore on the page with the list of supported devices https://wiki.lineageos.org/devices/ |
https://gitlab.com/MindTheGapps/vendor_gapps |
MindTheGapps - GAPPS packages for
CustomRoms |
URL |
Content |
Comment |
http://java-decompiler.github.io/#jd-gui-download |
Java Decompiler |
(jar file with GUI) |
https://github.com/pxb1988/dex2jar/blob/2.x/README.md | Tools to work with android .dex and java
.class files
|
|
https://xdaforums.com/t/tool-imjtool-unpack-and-extract-a-variety-of-ota-images-from-various-vendors.4078159/ http://newandroidbook.com/tools/imjtool.html |
imjtool - Unpack and extract a variety of OTA images from various vendors | |
https://xdaforums.com/t/tool-android-image-kitchen-unpack-repack-kernel-ramdisk-win-android-linux-mac.2073775/ | Android Image Kitchen - Unpack/Repack Kernel Ramdisk [Win/Android/Linux/Mac] | |
https://github.com/hzw1199/xml2axml/releases | Convert compiled XML files used in apk files to plain XML files and vice versa | |
https://github.com/rajmani7584/Payload-Dumper-Android |
"An OTA Extractor App for Android" The app is also available in the izzysoft repository: https://apt.izzysoft.de/fdroid/index/apk/com.rajmani7584.payloaddumper |
|
https://xdaforums.com/t/linux-guide-rom-payload-image-dump.4196055/ |
ROM payload image dumper - a python script to extract the images for the file payload.bin images for Android 12 | |
https://github.com/ssut/payload-dumper-go | An android OTA payload dumper written in Go. | |
https://shatter-box.com/knowledgebase/android-apk-signing-tool-apk-signer/ |
Android APK Signing Tool (APK Signer) |
Note; Android APK Signing Tool (APK Signer) Use the apk signer from the Android studio |
https://ibotpeaches.github.io/Apktool/ | A tool for reverse engineering Android apk
files |
|
https://xdaforums.com/t/tool-tickle-my-android-decompile-recompile-with-ease.1633333/ |
"TMA is a quick, powerful and easy-to-use
tool that uses a piece of java called "apktool" to
decompile and recompile Android app's. " |
|
http://jsharkey.org/logcat/ |
python script that reformats the logcat output into a colorful stream that is much easier to visually follow. | this script is for Python 2.x |
|
||
https://www.temblast.com/android.htm |
Android applications, patches, and tools The binaries for the PC on this page are for Windows |
|
https://github.com/radareorg/radare2 |
Disassembler with support for ARM CPUs |
|
https://github.com/theopolis/uefi-firmware-parser | UEFI Firmware parser |
|
https://github.com/Genymobile/scrcpy |
"This application mirrors Android devices (video and audio) connected via USB or over TCP/IP, and allows to control the device with the keyboard and the mouse of the computer. It does not require any root access. It works on Linux, Windows and macOS." | very useful |
https://github.com/GameTheory-/mktool |
"mktool is for unpacking & repacking
the android boot, recovery, or loki images and also for
loki patching.
|
|
https://github.com/twrpdtgen/twrpdtgen |
"Create a TWRP-compatible device tree only
from an Android recovery image (or a boot image if the
device uses non-dynamic partitions A/B) of your device's
stock ROM It has been confirmed that this script supports
images built starting from Android 4.4 up to Android 12" |
|
https://github.com/sebaubuntu-python/aospdtgen |
"Create a LineageOS-compatible device tree
from an Android stock ROM dump (made with dumpyara). This
script supports any Android firmware from a Treble-enabled
device (Higher than Android 8.0 and with VNDK enabled, you
can check it with Treble Info or with adb shell getprop
ro.treble.enabled). For pre-Treble devices please use
twrpdtgen." |
|
https://github.com/sebaubuntu-python/dumpyara |
dumpyara : "Android firmware dumper" - a
tool to extract files from ROM images for trebled-enabled
devices. |
|
https://github.com/XayahSuSuSu/Android-DataBackup https://f-droid.org/zh_Hans/packages/com.xayah.databackup.foss/ |
Backup tool for Android (needs root access) |
|
https://github.com/Heydarchi/SELinux-Explorer | SELinux explorer (python script for the PC): | |
https://github.com/xmikos/setools-android | setools ported to Android: - I created a Magisk module with these binaries - see the list of Magisk modules below | |
https://github.com/OpenDarwin-CVS/SEDarwin/blob/master/sedarwin7/src/sedarwin/policycoreutils/audit2allow/audit2allow.perl | Perl script to create SELinux tools -- can
be used instead of the Linux executable audit2allow. |
|
https://www.temblast.com/lputil.htm | "LpUtil is a Win32 utility for modifying
Android logical partitions (i.e. super)." There is also a Android binary of lputil available at that web page. |
URL |
Content |
Comment |
https://www.asus.com/de/Mobile/Phones/ZenFone/Zenfone-8/HelpDesk_BIOS/ |
ASUS Zenfone 8 Firmware Download |
As of 17.08.2023 ASUS removed all image files with OS images for the Zenfone 8 from their website |
https://www.firmware27.info/2023/03/asus-zenfone-8-zs590ks-flash-file.html |
inofficial page to download ASUS
Zenfone 8 Firmware |
17.08.2023 Most of the download links on this page are links to the original firmware page from ASUS and do not work anymore. The last two links are links to other webserver and still work as of 17.08.2023. See the section ASUS Zenfone 8 FIrmware Download with my comments regarding the image files from this page. |
https://xdaforums.com/t/zenfone-8-firmware-ota-collection.4620171/ |
XDA Forum for ASUS Zenfone 8 Firmware
Download Collection |
|
https://twrp.me/asus/zenfone8.html |
official TWRP for the ASUS Zenfone 8 |
Note that as of 09.01.2024 the
official TWRP 3.7.0_12 for the ASUS Zenfone 8 does not
support mouting the /data partition from Android 14 based
OSse |
https://build.twrp.me/twrp-3.7.0_12-1_TEST-I006D.img |
TWRP for the ASUS Zenfone 8 with support
for mounting /data in Android 14 based OSes |
link checked at 09.01.2024;
successfully mounted in the /data partition of Omnirom 14
booting this image |
https://zentalk.asus.com/en/discussion/27136/unlock-relock-bootloader-unofficially-for-zenfone-3 |
Instructions to unlock the ASUS Zenfone 8 |
|
https://xdaforums.com/f/asus-zenfone-8.12291/ | XDA Forums for the ASUS Zenfone 8 |
|
https://xdaforums.com/t/recovery-twrp-for-zenfone-8.4329139/ |
XDA Forum for TWRP for the ASUS Zenfone 8 |
|
https://xdaforums.com/t/full-recover-to-stock-if-things-went-really-bad.4337467/ |
Instructions to install the Android raw
image from ASUS on the ASUS Zenfone 8 |
|
https://www.asus.com/Content/Android-13-Beta/ |
Android 13 Beta and a raw image for Android
12 The image for Android 13 Beta is also a raw image. |
As of 17.08.2023 ASUS removed all
image files with OS images for the Zenfone 8 from
their website |
https://www.asus.com/Content/Android-12-Beta/ |
Android 12 Beta and a raw image for Android 11 | As of 17.08.2023 ASUS removed all
image files with OS images for the Zenfone 8 from
their website |
https://dl.omnirom.org/zenfone8/ | OmniROM Images for the ASUS Zenfone 8 | |
https://xdaforums.com/t/recovery-twrp-for-zenfone-8.4329139/ |
XDA Support thread for TWRP for ASUS
Zenfone 8 |
|
https://gist.github.com/shakalaca/bbc439916f389a7275083f90539059de |
fastboot oem comands for the ASUS ROG Phone
II Most of the also work for the ASUS Zenfone 8 |
|
https://xdaforums.com/t/cant-unlock-bootloader-failed-to-unlock-your-device-please-try-again-later-24803.4586429/ |
XDA Thread about unlocking ASUS phones
without using the ASUS unlock tool |
As of 23.09.2023 there is not yet a
solution to unlock an ASUS phone without the ASUS unlock
tool |
https://www.pentestpartners.com/security-blog/breaking-the-android-bootloader-on-the-qualcomm-snapdragon-660/ |
Breaking the Android Bootloader on the
Qualcomm Snapdragon 660 |
|
https://worthdoingbadly.com/qcomxbl/ |
Comparing Qualcomm's XBL UEFI bootloaders
on Snapdragon 820, 835, and 845 |
A blog entry about the bootloader for
Android devices with Qualcomm CPUs |
https://xdaforums.com/t/unofficial-bootloader-unlocking-2024-01-06-without-asus-server-q3-2023-muhahahaha.4649465/#post-89260224 https://xdaforums.com/t/unlocking-the-bootloader-and-rooting.4649239/post-89258039 https://mitmproxy.org/ |
XDA threads about how to unlock an ASUS
phone now that the original apk and webserver used to
official unlock the phone is not available anymore |
URL |
Content |
Comment |
https://omnirom.org/ | OmniROM |
|
https://lineageos.org/ | LineageOS Homepage | |
https://lineage.microg.org/ |
LineageOS with MicroG
Homepage |
|
https://download.lineageos.org/devices/sake/builds | Images and Recoveries for LineageOS
|
LineageOS is a Custom ROM for devices using Android; the Lineage Recovery image can be used to install the OmniROM on an Android phone |
https://wiki.lineageos.org/devices/sake/install? | Instructions to install the Recovery from
the LineageOS |
|
https://doc.e.foundation/ https://doc.e.foundation/devices/sake |
/e/ |
sake is a code name for the ASUS
Zenfone 8 |
https://xdaforums.com/t/rom-preview-sake-13-statixos-v6-0.4500497/ |
StatiXOS |
development stopped in July 2024; last
release Android 14 with patchlevel 07/2024
-- see https://xdaforums.com/t/closed-rom-upsidedowncake-sake-14-statixos-v7-10.4500497/#post-87515011 |
https://github.com/StatiXOS/android_manifest |
Manifests and instructions to build the
StatixOS |
|
https://download.lineage.microg.org/sake/ |
LineageOS with MircoG for the ASUS Zenfone
8 |
|
https://github.com/mikooomich/android_device_asus_sake/releases |
un-official LineageOS 21.x and LineageOS
22.x images for the ASUS Zenfone 8 |
|
https://libremobileos.com/lmodroid |
LMODroid |
|
https://arrowos.net/ |
ArrowOS |
support is discontinued; latest release is
Android 11 based from 01/2022 |
URL |
Content |
Comment |
https://dl.omnirom.org/tmp/rpi4/ |
OmniROM images for the Raspberry PI 4 |
OmniROM 13 is the last version for the
Raspberry PI 4; there are no images for the Raspberry PI 5 I successfully installed OmniROM 13 on my Raspberry PI4 using the latest image from this site. |
https://github.com/raspberry-vanilla/android_local_manifest?tab=readme-ov-file |
Manifests and instructions to create an
Android image for the Raspberry PI 4 |
not tested yet |
https://github.com/omnirom/android_device_brcm_rpi4 |
Device tree for the Raspberry PI 4 |
|
https://rsaxvc.net/blog/2021/7/15/Installing_Magisk_on_Raspberry_Pi_4_OmniROM_Android_11.html |
Instructions to install Magisk in Android
running ona Raspberry PI 4 |
I successfully installed Magisk in Android on
my Raspberry PI 4 using these instructions |
https://github.com/android-rpi/device_arpi_rpi4 |
Repository for building Android for the
Raspberry PI 4 |
not tested yet |
https://github.com/raspberry-vanilla/android_local_manifest?tab=readme-ov-file |
Repository for building Android for the Raspberry PI 4 | not tested yet |
URL |
Content |
Comment |
https://android.googlesource.com/kernel/msm/+/android-7.1.0_r0.2/Documentation/blockdev/zram.txt |
ram: Compressed RAM based block devices Description of the zram device implemented in the Android OS |
|
https://www.kernel.org/doc/html/latest/admin-guide/blockdev/zram.html |
Description for zram devices from the Linux
Kernel doc |
|
https://android.stackexchange.com/questions/213353/how-to-run-an-executable-on-boot-and-keep-it-running/213623#213623 |
How to run an executable and keep it
running |
|
https://android.stackexchange.com/questions/214839/how-to-run-an-android-init-service-with-superuser-selinux-context |
How to run an Android init service with
superuser SELinux context? |
|
https://harrisonsand.com/posts/patching-adb-root/ |
Patching the adb daemon to run as root |
only necessary if Magisk or a similar tool
allow root access is not usable |
https://xdaforums.com/t/new-sqlite3-binary-v3-40-0-for-all-devices.4273049/ |
SQLite3 binaries for Android phones |
|
https://www.sqlitetutorial.net/ |
A tutorial for using sqlite |
|
https://sqlite.org/index.html | SQLite homepage |
|
https://security.stackexchange.com/questions/196230/connection-between-pin-password-and-encryption-keys-in-android |
Description how the file based encryption
is implemented in Android |
|
https://labs.withsecure.com/publications/how-secure-is-your-android-keystore-authentication |
Details about Android Keystore
Authentication implementations |
|
https://blog.quarkslab.com/android-data-encryption-in-depth.html |
Blog entry about Android data encryption |
|
http://www.javadecompilers.com/ |
Online Java Decompiler |
|
https://github.com/M0Rf30/android-udev-rules |
Repository with udev rules for using adb |
|
https://askubuntu.com/questions/645/how-do-you-reset-a-usb-device-from-the-command-line |
source code for a little C program to reset
an USB port |
|
https://www.programmersought.com/article/962810691772/ |
dcmtl usage examples |
|
https://github.com/SELinuxProject/selinux/wiki/Tools |
general list of available tools for
maintaing SELinux |
|
https://github.com/termux/termux-packages/tree/master/packages |
Source code for the packages in Termux
(incliuding build scripts for the tools and libraries) |
|
https://sourceforge.net/projects/nikgapps/ |
Google Apps for CustomROMs |
|
https://github.com/shakalaca/fastboot-adb-android |
fastboot and adb binaries for Android |
Note that the adb binaries in this ZIP file
need write access to the directory /data/.android (in the
default config, this directory can also we used by the
user root) |
https://8ksec.io/android-selinux-internals-part-i-8ksec-blogs/ | Android SELinux internals |
Good infos about SELinux usage in Android |
https://usbip.sourceforge.net/ |
"USB/IP Project aims to develop a general
USB device sharing system over IP network. To share USB
devices between computers with their full functionality,
USB/IP encapsulates "USB I/O messages" into TCP/IP
payloads and transmits them between computers" |
|
https://sourceforge.net/projects/android-x86/files/ |
Android for x86 ISO images |
|
https://raccoon.onyxbits.de/blog/run-java-app-android/ |
Howto for writing java programs for Android |
Use the commands and exact library version mentioned in the HowTo. Note that the current java version in most Linux distributions does not support the Java version 1.7 (-source 1.7) anymore: Therefor just install an old Java version (that can be done in parallel to the default Java version) To start the java program created in the HowTo via dalvikvm this command line can be used: dalvikvm -cp /data/local/tmp/helloworld/helloworld.jar com.example.HelloWorld -h |
https://raccoon.onyxbits.de/blog/programmatically-talking-to-the-android-system-adb-shell/ |
another more complex HowTo for writing Java
programs for Android |