Android

Android is a significantly more versatile OS than its competitors.

Apps

These are some of the apps that I have found useful.

Play Integrity and SafetyNet testers

Apps that are likely not to work on rooted devices

Tested on OnePlus 9 Pro with the Play Integrity Fix Magisk module.

Apps that work on rooted devices

Tested on OnePlus 9 Pro with the Play Integrity Fix Magisk module.

5G connectivity

5G can be implemented in two ways that are significantly different from each other. Non-standalone 5G (NSA) uses the 4G network for control and signaling, whereas standalone 5G (SA) uses only the 5G network. NSA was the first implementation to arrive and is still the most common one, but it has high latency and high battery use.

Most devices technically support 5G SA, but unfortunately many of them have SA disabled in the software. To identify whether your Android phone is connected with SA or NSA, go to Settings -> About phone -> SIM status. In the “Mobile data network type” you should see “5G SA” or “5G NSA”. For further details, enable developer mode and enter ##4636## in the dialer.

5G SA device compatibility

Pros and cons of custom ROMs

Pros

  • Better privacy: no telemetry to the manufacturer
  • Better security
    • Faster updates and newer Android version
  • Newer Android version with new and better features

Cons

  • The camera may not work at its full resolution for either photos or videos
    • In many phones 4K 60 Hz recording and above is not available on custom ROMs, as it’s based on a proprietary API. OnePlus blog post
  • There may be bugs specific to your device model. Some features may not work at all, and the only way to know if such major bugs exist is by testing the ROM on your device.

Whichever ROM or kernel you use as your daily driver, it should have SELinux set to enforcing. Setting SELinux to permissive opens up a vulnerability that allows any installed app to gain root access. (XDA Developers, Twitter, Reddit, GitHub)

OnePlus 6 (enchilada)

OnePlus 9 Pro (lemonadep)

Samsung Galaxy Note 3 LTE (SM-N9005, hlte)

Samsung Galaxy Note 2 LTE (GT-N7105, t0lte)

Samsung Galaxy Note 8 (SM-N950F, greatlte)

Samsung Galaxy Tab 3 10.1 (GT-P5220)

Google Apps

  • MindTheGapps (Repository)
    • Recommended for LineageOS
    • Can be installed with the Lineage recovery, but not with TWRP due to differences in the mount paths (as of writing in 2025).
  • FlameGApps
    • Good Google Apps for Android 12.
    • For Android 12 I used the basic package with the following extensions:
    • I’m using the basic package with the following extensions
      • Android Auto
      • Google Search + Assistant
      • Google TTS
      • Google WebView
  • Open GApps
    • Good Google Apps for Android <= 11. The nano version was my go-to GApps.
  • NikGApps

Custom ROM installation steps

These instructions look very complicated, but they are actually quite straightforward, unless you have a device with the A/B partition scheme or without a separate recovery partition.

  • Download (These may take a while, so start the downloads before reading further.)
    • Latest stock ROM (if available)
    • Custom ROM
    • TWRP or some other custom recovery
    • (Custom kernel)
    • (Google Apps)
    • (Magisk)
  • Upgrade the stock ROM to get low-level firmware upgrades (if doing a clean install and if it’s possible)
    • The stock ROM may contain newer firmware for the modem, bluetooth etc., which improves security and reliability. Some of this firmware may be saved beyond the usual partitions, and can therefore be carried on to the custom ROM even though the system and data partitions will be wiped during the installation of the custom ROM.
    • Please check beforehand, though, that the newer stock ROM doesn’t lock the bootloader or introduce other additional restrictions.
  • Boot the device to the stock firmware and test that all features work. This way if you have any issues later, you will know if it’s a hardware issue or caused by the custom firmware. Test especially these features:
    • Phone calls
    • SMS
    • VoLTE / VoWIFI (On some devices, this has to be used at least once with the stock firmware to provision IMS.)
    • Camera, including all special imaging modes (4K 60 Hz, 4K 120 Hz, 8K, zoom, macro, monochrome etc.)
  • Boot the phone to fastboot mode
  • Select the boot slot you want to install to
    • sudo fastboot --set-active=a (or b)
  • Install fastboot-installable official firmware from the stock ROM (if not already upgraded)
    • Unzip the official firmware zip. If it contains only payload.bin instead of separate files for each partition, you can use. Android OTA Payload Extractor to extract the file.
    • Flash the fastboot-flashable partitions using my scripts.
    • Flash the LineageOS boot.img, dtbo.img and vbmeta.img over the default ones.
      • DTBO = Device Tree Blob for Overlay, which contains information about the hardware of the device.
      • vbmeta = Android Verified Boot (AVB) metadata
    • If you get the error Flashing is not allowed for Critical Partitions, reboot after installing the LineageOS boot.img and run the script using the fastboot mode of the LineageOS recovery.
  • Boot to recovery (TWRP)
    • Try these in this order until one of them works
      • Samsung devices 1) sudo heimdall flash --RECOVERY <TWRP image>.img 2) Use Odin
      • Fastboot devices 1) sudo fastboot flash recovery <TWRP image>.img and boot from the on-device menu 2) sudo fastboot boot <TWRP image>.img 3) sudo fastboot flash boot <TWRP image>.img and boot from the on-device menu
    • If TWRP gets stuck at the logo, try an older version.
  • Install ADB-installable firmware from the stock ROM (if doing a clean install) using my scripts.
  • ROM (LineageOS)
    • Select the boot slot you want to install to.
    • Wipe the system and cache partitions
      • On devices without a separate recovery partition TWRP cannot be booted without a working OS installation, so don’t reboot after wiping system before LineageOS is installed.
    • Select the boot slot you don’t want to install to, since the LineageOS zip will auto-install itself to the slot that is not active at the moment.
    • Upload the LineageOS zip to the device. (If your device does not require a reboot to the LineageOS recovery, then you can push the rest of the zips, e.g. Google Play and Magisk, here.) You can use ADB for this: adb push <file>.zip /sdcard/
    • Install LineageOS.
    • Go to the reboot menu and select the installed slot before rebooting.
    • Reboot the device to the recovery. (This may be necessary to install Google Apps, since the installer may require the recovery Android version to match that of the OS.)
    • Ensure that the device rebooted to the correct slot. If not, reboot to fastboot, select the correct slot and reboot to recovery.
  • Install the rest of the zips
    • If the device booted to the LineageOS recovery, click “Apply update” and send the zips with adb sideload <file>.zip.
    • Install regardless of the signature warnings. They merely warn that the additional zips aren’t provided by LineageOS.
  • Google Apps
  • Kernel (if available)
  • TWRP zip (on devices without a recovery partition)
    • This will install to both slots.
  • Root (Magisk)
    • The Magisk .apk may have to be renamed to a .zip for it to work.
    • TWRP installation wipes Magisk, so you have to do this for both slots when upgrading.
  • Reboot to system

(XDA discussion of proper installation order)

Root installation steps

  • Install Magisk when installing the ROM as above
  • Install Magisk Manager
  • Go to Magisk Manager settings and set these:
  • Add these apps to the DenyList
    • Google Pay
    • Google Play services
    • Google Play Store
    • All other apps that refuse to work on rooted phones
  • Install Play Integrity Fix
  • Install Zygisk Assistant
  • Test results for OnePlus 9 Pro on 2025-01-27
    • YASNAC
      • Basic Integrity: OK
      • CTS profile match: OK
      • Evaluation type: BASIC
    • SafetyNet Integrity Checker
      • SafetyNet
        • Basic Integrity: Success
        • CTS Profile Match: Success
        • Response Signature Verification: Success
      • Play Integrity
        • Response Signature Verification: Success
        • Account Verification: Success
        • Device Integrity: Success
        • App Integrity: Success
  • If using an old firmware or old device, these additional tools may help
  • Reboot
  • Delete app data and cache for the aforementioned Google apps
  • Install and run one of the Play Integrity or SafetyNet testers mentioned above
    • Your device should now pass the check
  • Delete app data and cache for the apps that still refuse to work

Setting up the device

The initial setup menu can be very buggy, and easily gets stuck in an eternal loop. Therefore, when initially setting up the device, skip all optional setup menus and do the configuration later. If you decide not to follow my advice and end up with a stuck initial setup menu, just factory reset the device without having to reinstall the firmware, and try again.

Skip especially these:

  • Copying data from an old phone
    • If your old phone is not rooted and this is therefore the only way to migrate your data, you should first do the setup once so that you know it works. Then, when you are at the Android home screen, try to migrate data by clicking the device setup notification. If the notification is not available, reset the phone and do the initial setup again but migrating the data this time.
  • Google account setup
  • Screen lock setup

Backups

Apps that should be restored using backup software

  • Syncthing (if using the same device)
    • Either backup restore the contents of the synced folders manually to enable the app to find them, or remove and re-add the folders in the app to force a resync.
  • Snapchat
    • Backing up may not be necessary, as the messages may be stored in the cloud, but at least the use of a backup software works.
  • Telegram
    • This way you can keep your secret chats.
  • WhatsApp
    • Titanium Backup may not work. Use Swift Backup instead.

Apps that have their own backup systems

The most of these apps support only manual backups.

  • Authy
  • K-9 mail
  • Notify for Mi Band
  • OpenCamera
  • QKSMS
  • Signal
    • Titanium Backup and Swift Backup may not work. If they fail, use Signal’s own file-based backup instead.
  • Sleep As Android
  • WhatsApp
    • Using its own backup feature results in regeneration of the encryption keys. By using Swift Backup you can avoid this.