Android
Android is a lot more versatile OS than its competitors.
Apps
These are some of the apps that I have found useful.
- 112 Suomi
- 3DMark
- AdAway (GPLv3, GitHub)
- Requires root
- AppLock
- Authy
- BOINC (GPLv3+)
- Use only on devices that don’t have a battery, e.g. media boxes, as batteries can’t withstand the prolonged high temperatures.
- Briar (GPLv3, GitLab)
- Call Recorder (GPLv3, GitLab)
- CellMapper
- CREDO Detector
- Digital Wellbeing
- Preinstalled on some devices, and included in some Google Apps packages. Possibilities of installing it afterwards are very limited.
- DriveDroid
- DRM Info
- F-Droid
- Findroid
- Firefox
- FlorisBoard (Apache 2.0, GitHub)
- Fossify Keyboard (GPLv3, GitHub)
- Google Fit
- Google SMB client
- GSam Battery Monitor (pro)
- hueManic
- IP Webcam
- Jellyfin (GPLv2, GitHub)
- K-9 Mail (Apache 2.0, GitHub)
- KDE Connect (GPLv2, GitHub)
- Keepass2Android (GPLv3, GitHub)
- Key Attestation Demo
- Manual Camera Compatibility
- Notify for Mi Band
- Obsidian
- OONI Probe
- OpenCamera
- OpenKeychain
- OpenVPN for Android
- Orbot
- PCMark
- Personal Safety
- Preinstalled on some devices. Possibilities of installing it afterwards are very limited.
- Plex
- Plexamp
- Plex Dash
- Prey
- ProCam X
- SafetyNet Test
- SD Maid
- SD Maid 1 for old Android versions (pro, GitHub)
- SD Maid 2/SE for new Android versions (GitHub)
- Requires root
- Signal
- SnoopSnitch
- Requires root
- The version in Google Play does not have all the features. Download from F-Droid instead.
- Speedtest
- Sleep as Android
- Swift Backup
- Requires root
- Syncthing
- Tankille
- TeamViewer QuickSupport
- Termux
- Titanium Backup
(pro)
- Requires root
- Tor Browser
- VLC
- WiGLE
- WireGuard
- Xournal++
- X-Plore
- YouTube ReVanved
- To install, download ReVanced Manager
- If you don’t have root, you will also need the official YouTube apk and Vanced MicroG.
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.
Links for devices I’ve tested
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)
- LineageOS
- TWRP
- Stock ROM
- Kernel
- CleanSlate (OxygenOS-based ROMs only?)
- ElementalX (OxygenOS-based ROMs only?)
OnePlus 9 Pro (lemonadep)
- LineageOS
- TWRP
- Stock ROM
- Note that this page may have an older firmware than what’s available with OTA. In that case, use the OTA firmware instead of the one available from the website, and skip the manual update of the additional firmware partitions.
- Kernel
- Camera mod
Samsung Galaxy Note 3 LTE (SM-N9005, hlte)
Samsung Galaxy Note 2 LTE (GT-N7105, t0lte)
Samsung Galaxy Note 8 (SM-N950F, greatlte)
- LineageOS 19 (Android 12)
- LineageOS 20 (Android 13)
- TWRP
- Kernel
- All these have SELinux set to permissive and should not therefore be used!
- A2N Kernel
- DeluxeROM & kernel
- RAD Kernel
- RZ Kernel
- Stock ROM: SamMobile Samsung Fan Club
Samsung Galaxy Tab 3 10.1 (GT-P5220)
Google Apps
- Open GApps
- Several versions available, but not always for the latest Android versions
- The nano version is my go-to GApps
- 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)
- FlameGApps
- Since I’m using TWRP instead of the LineageOS recovery, I’m using this for Android versions that are too new for Open GApps.
- I’m using the basic package with the following extensions
- Android Auto
- Google Search + Assistant
- Google TTS
- Google WebView
- 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
andvbmeta.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 LineageOSboot.img
and run the script using the fastboot mode of the LineageOS recovery.
- Unzip the official firmware zip. If it contains only
- 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
- Samsung devices
1)
- If TWRP gets stuck at the logo, try an older version.
- Try these in this order until one of them works
- 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.
- Install LineageOS.
- Go to the reboot menu and select the installed slot before rebooting.
- Reboot the device. (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.
- If the device booted to the LineageOS recovery, click “Apply update” and send the zips with
- Google Apps
- Kernel (if available)
- TWRP zip (on devices without a recovery partition)
- This will install to both slots.
- Root (Magisk)
- The Magisk .apk has to be renamed to a .zip for it to work.
- TWRP wiped this, 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:
- Hide Magisk app
- Enable Zygisk
- Enable Zygisk DenyList
- Show system and OS apps in Zygisk DenyList
- 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 Universal SafetyNet Fix
- As of 2024-06-20, this will make you pass these checks
- Safety net Request
- Response signature validation
- Basic Integrity
- But not this: CTS profile match
- It seems that Google has tightened its SafetyNet check, and therefore there may be no way to get SafetyNet to pass on a modern rooted device.
- As of 2024-06-20, this will make you pass these checks
- 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 SafetyNet Test
- 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.