Skip to content

Latest commit

 

History

History
430 lines (292 loc) · 17.9 KB

README.md

File metadata and controls

430 lines (292 loc) · 17.9 KB

Note

This README was last updated when I was running NothingOS version 2.6

Tip

FASTBOOT NOTE; Fastboot mode can be accessed without ADB by booting with [POWER] + [VOLUME DOWN]

Bootloader

Before unlocking

Settings > About phone > Software info > Tap build number Back Developer options > - OEM unlocking - USB debugging

Unlock bootloader

Re-lock bootloader

Caution

Reflash stock bootloader first and boot it before relocking. If there is no working legit bootloader present after re-locking the bootloader, you'll brick the device!

  • adb reboot bootloader
  • fastboot flashing lock

Rooting

Prep Magisk rooting

Note

Patching happens on the phone itself to make the process less error-prone.

Flash rooted bootloader

Caution

It's best to work in a non-persisted way when performing manual actions. This is why booting from memory is preferred instead of flashing the image!

  • adb reboot bootloader
  • fastboot boot <magisk_patched<>.img>
  • Wait for phone to boot
  • Patch bootloader from Magisk app
    • Open Magisk app
    • Tap "Install"
    • Choose "Direct Install"
    • Tap "Let's go"

Or, from fastboot, run the command fastboot flash boot <magisk_patched<>.img>

UNROOT

  • Unroot from Magisk app
    • Open Magisk app
    • Tap "Uninstall Magisk"
    • Tap "Restore images"

Or, from fastboot, run the command adb flash boot original_bootloader.img

Tip

The unroot steps from the Magisk app are also part of using the builtin patcher to do OS updates.

Over-the-air (OTA) UPDATE

Note

Update packages (which in itself are zip files of partition images) are distributed in "full" or "delta". The latter can only be used to upgrade from a specific older version to a new version. Not all OS versions get a "full" update package, and often it takes a few weeks before the "full" packages become available to users.

Note

Delta updates calculate partition checksums! If you force apply them, you'll brick the phone and require EDL

  • Provided the builtin updater application wants to update your operating system
  • Uninstall Magisk from the bootloader image
    • ! Updates from the builtin updater are almost always delta updates, so you need original partition images!
    • Open Magisk app
    • Tap "Uninstall Magisk"
    • Tap "Restore images"
  • Start the update from the builtin updater application
    • ! DO NOT REBOOT
    • Go back to the Magisk app when the updater asks to reboot the phone
  • Re-root updated bootloader
    • Open Magisk app
    • Next to the "Magisk" title, tap "Install"
    • Choose "Install to inactive slot (after OTA)"
    • Tap "Let's go"
    • Tap "Reboot" after patching completes

Tip

Patching the bootloader partition from the Magisk app leaves behind an image copy of the original bootloader. This image copy makes reverting to stock and performing OTA updates easy!

Magisk root modules

CF.Lumen

Installed from app store, driver activated through Magisk root.

CF.Lumen settings
My CF.Lumen settings.
CF.Lumen settings
My CF.Lumen settings (cont.)
CF.Lumen settings
My CF.Lumen settings (cont.)

Note

I bought the app from the store, using an older google account, but I cannot seem to get the app to recognize I have a pro license. Thankfully it has a freeload option though!

LiveBoot

Installed from app store, installs a boot script through Magisk root.
No configuration.

BootloopSaver

I needed bootloop saver about 5 times since I started rooting, and of those times it failed me 4 out of 5.
For me this piece of software does not do what I expect from it.

Safety net fix + Hide root

Requires

  • Magisk Zygote

Hide existence of magisk and other device unlocking tools/features from apps

Configuration

Tip

You don't need complex hooking (LSPosed lib injection + Hide my Applist function overrides) for Payconiq/Argenta/Bancontact. Banking apps don't seem to care about developer mode. You might have to toggle on/off USB debugging (ADB) though.

  • Open Magisk app

  • Install the Safetynet fix module

  • Enforce DenyList

    • Open settings
    • Scroll to header "Magisk"
    • Tap "Enforce Denylist"
  • Add apps to DenyList

  • Reboot

  • Profit

Note

I originally added Google play services to denylist too as some guides recommended it. Magisk automatically deselects the play services after reboot so I guess it's not needed ¯\_(ツ)_/¯

Magisk denylist selection
The apps currently on my Magisk denylist.

Advanced Charging controller (ACC)

Tip

Keep the configuration of Acc simple. External battery control is flaky at best and you'll save yourself lots of headache

Caution

I have never gotten Acca to work properly, and only use it to read details on the Acca process and charging amperages once every few months.

I limit both wireless charging and charging through USB with ACC. I limit charging amperages, limit maximum battery percentage, and charging cycles to keep battery cool.

The AccA app is sheit, use it for monitoring and nothing else.

Setup

  • Run the script acc-setup.sh in an elevated terminal
    • adb push '<acc-setup.sh>' /sdcard/Download
    • adb shell
      • su
      • Allow the terminal to receive root permissions
        • Tap on "Grant" in the Magisk popup
      • sh /sdcard/Download/acc-setup.sh
    • adb reboot

Charging notes

Acc controls both USB charging and Qi charging.

  • Not sure if there is kernel support (as of 2022-08-15) for "Battery Idle" mode, which bypasses the battery during charging, or not.
    • Not officially confirmed, but
    • The stats look kinda convincing at 0mA current.
  • Using switch battery/charge_control_limit 0 _ battery/charge_control_limit_max
  • Using forceOff
    • Required because heat management tools would turn on usb/wireless charging coil again

Termux

Terminal emulator. DON'T DOWNLOAD THE APP STORE VERSION

Equalizing audio

Don't need a Dolby (or any other root) mod, could use the Wavelet app from the app store just fine.

Tuning

Wavelet picks its configuration depending on the active audio sync. It'll automatically switch to settings for your default speakers, bluetooth speakers, bluetooth car connection etc.

Default speakers

Default tuning IS ABSOLUTELY HORRIBLE. The phone actually has one speaker and the earpiece "acts" as a stereo companion... but their physical properties are entirely different.
So we have to very aggressively tune and limit! This will lower the maximum volume output, but that's still acceptable (it's still louder than a shower). And tuning the sounds stage is a balancing act to keep the metallic resonance as low as possible.

Nothing phone 1 main wavelet settings
Wavelet settings with activated modules displayed.
Nothing phone 1 EQ settings
Nothing Phone 1 equalize settings.
Nothing phone 1 Limiter settings
Nothing Phone 1 limiter settings.
Nothing phone 1 Balancer settings
Nothing Phone 1 audio balancer settings.

Result; A very very noticeable improvement!

JBL Flip 4

The JBL Flip 4 sounds really good out of the box. I tweaked it a bit to pack more punch since I mostly play more "hard" music.
The balancer settings are set like this because I don't like the volume stepper (BIG ANDROID PROBLEM BTW) and this volume reduction gives me better volume loudness control in overall atmospheres (kitchen, bathroom, fitness, garden, beach).

JBL Flip 4 main wavelet settings
Wavelet settings with activated modules displayed.
JBL Flip 4 EQ settings
JBL Flip 4 equalize settings.
JBL Flip 4 Balancer settings
JBL Flip 4 audio balancer settings.

Mini countryman

HORRIBLE AUDIO. ABSOLUTELY HORRIBLE.

TODO

Note

Mini cars have an option for "Harman Kardon tuned audio", providing 6(?) more tweeters and 2(?) subwoofers. The audio setup is supposedly also tuned to the car interior. I don't know if it works, but anything better than the default audio setup is worth it. Believe me.

Call recorder

NothingOS comes with Google's dialer application, but that one has various features enabled/disabled on a per phone basis. The app GAppsMod allows to toggle settings and enable features that are otherwise not available by default.

TODO Installation instructions GAppsMod

GAppsMod settings
Basic tuning to enable the call recorder function.

Camera

The camera is a piece of a modern smartphone I never understood the hype for. But physically "taking an image" comes down to making an interpretation of the raw light data.
So obviously there are people with various stands on the purism spectrum. And, honestly, most out of the box camera apps produce horrible images in the average case by oversmoothing, over unsharpen, oversaturating certain hues.

The AI boom has not improved the situation. As someone who appreciates the raw-ness of things, because of the sense of truth behind it, I will never understand the appeal of AI postprocessing images.

Google camera

The Google camera app is exclusive to the Pixel phones, but because this is Android we can sideload (and entirely reconfigure the processing pipeline of) the app on many other phones.

Admittedly I have been intrigued by what people call "the best photo processing app" for non-apple hardware and wanted to see for myself. What I did is detailed below.

Yes, it's overwhelming for a beginner

Currently in use

  • Builtin Nothing Camera
  • GCAM LMC 8.4 R15 snapcam
    • LMC R14.xml (adb copy to /sdcard//LMC8.4/LMC\ R14.xml)

Caution

It's not possible to remap the power button to open the camera on double tick (which is my preferred way of opening the camera). Because the stock camera app opens on that shortcut, I basically never use the google camera app. Making the effort of opening the custom camera app through the launcher is too much work!

Revanced Youtube

The complexity of ReVanced has always put me off to try it. I'm an oldskool hacker and having to install launchers/managers/companion apps to the stuff I want is off putting! What I want is simplicity, implying I do prep work on my computer and push the resulting binary to my phone. Then all features are available automatically and intuitively!

But the world isn't cool like that, not anymore. Because we make tooling that automates away helpdesk responsibilities... and big G signs their stuff and hardcodes reference inside the "stock" OS (which could be worse, don't fight me).

So to install ReVanced Youtube, you have to install the Revanced Manager app! Then, just like Magisk, you provide it a Youtube apk that is patched. The patched apk is the ReVanced Youtube app you want, install that!

Important

Once I was over the initial hurdle of process complexity, it's actually really nice to use ReVanced Youtube. It's a set and forget configuration, has intuitive features, and doesn't throw ads into my face literally every 30 seconds!

Revanced Manager

TODO

MicroG settings

TODO

Personalization

In general I keep my phone interfaces minimal, functionally oriented. The reason is simple; don't be terminally attached to my phone.

Lock screen

No clutter; just time / date / weather, and my name at the bottom in case I lose the phone. I also added a shortcut to enable the LED flashlight because I regularly have a need for it (once every two weeks.)

Lock screen
My lock screen (date: 2024-08-15).

Home screen / Launcher

Also here I've chosen minimalism, using Olauncher configured to open dialer or calendar on right/left swipe. The apps I use every day get a dedicated shortcut.
Swiping up from the home screen opens the drawer allowing for autocomplete app search. I don't consider myself having any cruft apps installed, AKA I regularly use every installed app. However laying out all those app icons and visually searching through them quickly becomes tiresome. Typing fragments of the app I need is both more ergonomic and quicker.

My autocomplete suggestion gives away that my most often opened app is Youtube; I only have to type "you" and the launcher knows I want Youtube because there is no other app with the same order of characters in its name installed. Likewise for other apps, di for di-scord, wh for wh-atsapp, op for pairdr-op.

I have a dynamic background called Earth & Moon 3D Wallpaper (PRO) - by CodeKonditor but the app became unlisted since anywhere in 2023(?), for reasons unknown to me. The publisher tried to scrub their (almost) entire existence from the web. The app store link still works if you bought the app, in other cases you'll have to resort to APK mirror sites. There are a few seemingly interesting alternatives if you search for "earth live wallpaper", but I have no need nor intention to switch away.
The earth & moon wallpaper app allows me to adjust camera positions/rotations/orientations, relative star positions and distances, time of day earths rotational position. The amount of freedom is so large it is genuinely overwhelming to configure everything at first try. The app is worth it! It's also hard to communicate how good the wallpaper looks on an OLED screen.** Remember, AMOLED 👏best👏 but sadly Samsung exclusive and Apple nowadays too. RIP Oneplus X 🙏, best phone of its time!

Home screen
My home screen (date: 2024-08-15).
App drawer
My app drawer (date: 2024-08-15).

**A demo video can be found here! Video was created with scrcpy.

Misc

OOM pressure issue

Important

This issue has been solved in NothingOS version 2.0 and later.

NothingOS v1.5.3 has an issue with root, see topjohnwu/Magisk#6780.
According to topjohnwu/Magisk#6780 (comment), running resetprop persist.sys.mglru_enable false from a root shell will disable the new LRU system and prevent Out-of-memory (OOM) issues.

The change above does not survive reboot and requires a persistent solution, aka a module.
Download sources here https://github.com/LukeSkyD/NP1-MGLRU-FIX/, zip them, install them through Magisk.

Magisk Systemless hosts

This option gives user apps control over the hosts file, allowing systemwide adblock/website blocking functionality.

Don't really need it since it doesn't work on most apps (like Youtube). For the Youtube app I'm using Revanced.

Dolby atmos EQ

Too simplistic, I rather have the features of Wavelet.

AOSP Customizations

?? Untested